@arcgis/core 6.0.0-next.37 → 6.0.0-next.38

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 (248) hide show
  1. package/analysis/DimensionAnalysis.js +1 -1
  2. package/analysis/DimensionSimpleStyle.js +1 -1
  3. package/analysis/LengthDimension.js +1 -1
  4. package/analysis/LineOfSightAnalysis.js +1 -1
  5. package/analysis/LineOfSightAnalysisTarget.js +1 -1
  6. package/analysis/Viewshed.js +1 -1
  7. package/analysis/ViewshedAnalysis.js +1 -1
  8. package/assets/esri/core/workers/RemoteClient.js +1 -1
  9. package/assets/esri/core/workers/chunks/{9503eedfdda55fc5adab.js → 091ec4fe83038f3558f4.js} +1 -1
  10. package/assets/esri/core/workers/chunks/{322b22a5d54e404bebd5.js → 0c893837f67829757df7.js} +1 -1
  11. package/assets/esri/core/workers/chunks/123541f79be7adff0818.js +1 -0
  12. package/assets/esri/core/workers/chunks/{155861fbd0e5fc2db80c.js → 1a91443970d64a59521d.js} +1 -1
  13. package/assets/esri/core/workers/chunks/1e37337f47f45d6d8005.js +1 -0
  14. package/assets/esri/core/workers/chunks/{4e5405134d079bdf9b7a.js → 1f76f6dcdae9f55389cb.js} +1 -1
  15. package/assets/esri/core/workers/chunks/2d16b5a44f840147e882.js +1 -0
  16. package/assets/esri/core/workers/chunks/396299c22994c502e41c.js +1 -0
  17. package/assets/esri/core/workers/chunks/{03daf6f235c6edef6268.js → 398ec098fffe6abceedd.js} +1 -1
  18. package/assets/esri/core/workers/chunks/3b32a24488b3068f0cb7.js +1 -0
  19. package/assets/esri/core/workers/chunks/3b5e9e0b180dc10491ec.js +1 -0
  20. package/assets/esri/core/workers/chunks/46edd6c9ed6701e6b975.js +1 -0
  21. package/assets/esri/core/workers/chunks/{8b0d5551978ab0aac0d1.js → 520f499d79fa71f262c7.js} +1 -1
  22. package/assets/esri/core/workers/chunks/5473409fee59db80f87d.js +1 -0
  23. package/assets/esri/core/workers/chunks/553a8bf5bc5c56d1bcaf.js +1 -0
  24. package/assets/esri/core/workers/chunks/{2211ff0a1f1ae8100231.js → 585ae43c7bcb86a26762.js} +1 -1
  25. package/assets/esri/core/workers/chunks/58716a3a6106a1b0fb9d.js +1 -0
  26. package/assets/esri/core/workers/chunks/{aa6ee2aa4ff6e6d41efb.js → 5882f349f3771868e67f.js} +1 -1
  27. package/assets/esri/core/workers/chunks/{1b17f5f720f6cf3f6d73.js → 5be386b3af867b19ff39.js} +1 -1
  28. package/assets/esri/core/workers/chunks/{ea81f9d71b0842a4be26.js → 5e48898cebb6dbaf09b5.js} +1 -1
  29. package/assets/esri/core/workers/chunks/{139e753d95cfc9470e74.js → 6a65fc1a2931230fe994.js} +1 -1
  30. package/assets/esri/core/workers/chunks/{3e406043a374ee17475b.js → 6f2e7e663229b223b4df.js} +1 -1
  31. package/assets/esri/core/workers/chunks/76e80381fa6d1e084796.js +1 -0
  32. package/assets/esri/core/workers/chunks/{3b380e64566a6cce59e2.js → 7e0ed6e8f7b77e43f628.js} +1 -1
  33. package/assets/esri/core/workers/chunks/8c3779de09291170497f.js +1 -0
  34. package/assets/esri/core/workers/chunks/8e391b5b82429f39791e.js +1 -0
  35. package/assets/esri/core/workers/chunks/947f3a1cad976bba9738.js +1 -0
  36. package/assets/esri/core/workers/chunks/{59a1b637d2c107504a04.js → 966204d6dedc8149c3e9.js} +1 -1
  37. package/assets/esri/core/workers/chunks/ac107079342251a984dd.js +1 -0
  38. package/assets/esri/core/workers/chunks/{572aec57593a08b8045b.js → b15a8d4322f3b7819d2f.js} +1 -1
  39. package/assets/esri/core/workers/chunks/{552c36b40e5a5ec117fb.js → b472c0a21ae29e653f7d.js} +1 -1
  40. package/assets/esri/core/workers/chunks/bdd76a0b6c14e7fb6984.js +1 -0
  41. package/assets/esri/core/workers/chunks/{f372f4eb5527238c46f5.js → c31830ee897d5a7f2582.js} +1 -1
  42. package/assets/esri/core/workers/chunks/c48d97c38e821be17dc5.js +1 -0
  43. package/assets/esri/core/workers/chunks/{0a508e25ec05363e1f04.js → c7ad62f54d2abe1d17a0.js} +1 -1
  44. package/assets/esri/core/workers/chunks/cb1642ea8b66231cbfb5.js +1 -0
  45. package/assets/esri/core/workers/chunks/cf21b217b13770757cb8.js +1 -0
  46. package/assets/esri/core/workers/chunks/d42a4f47843e075c56a8.js +1 -0
  47. package/assets/esri/core/workers/chunks/e2430bc3a1edeb5c3266.js +1 -0
  48. package/assets/esri/core/workers/chunks/e9457a67befc61e11095.js +1 -0
  49. package/assets/esri/core/workers/chunks/f06ef153e106b26a6748.js +1 -0
  50. package/assets/esri/core/workers/chunks/faae3c43048b42341536.js +1 -0
  51. package/assets/esri/core/workers/chunks/fd967a9f3cf0e2890dbb.js +1 -0
  52. package/chunks/h.js +2 -0
  53. package/chunks/projector.js +2 -0
  54. package/config.js +1 -1
  55. package/core/sanitizerUtils.js +1 -1
  56. package/form/FormTemplate.js +1 -1
  57. package/form/elements/Element.js +1 -1
  58. package/form/elements/FieldElement.js +1 -1
  59. package/geometry/ellipsoidUtils.js +4 -4
  60. package/geometry/support/frustumPlanes.js +1 -1
  61. package/geometry/support/plane.js +1 -1
  62. package/geometry/support/triangle.js +1 -1
  63. package/kernel.js +1 -1
  64. package/layers/GraphicsLayer.js +1 -1
  65. package/layers/Lyr3DWasmPerSceneView.js +1 -1
  66. package/layers/geospatialPDF/geospatialPDFParserUtils.js +1 -1
  67. package/layers/geospatialPDF/support/datumUtils.js +2 -0
  68. package/layers/geospatialPDF/support/ellipsoidUtils.js +2 -0
  69. package/layers/geospatialPDF/support/geographicProjectionUtils.js +2 -0
  70. package/layers/geospatialPDF/support/parameterUtils.js +2 -0
  71. package/layers/geospatialPDF/support/projectedProjectionUtils.js +3 -0
  72. package/layers/geospatialPDF/support/projectionToSpatialReference.js +2 -0
  73. package/layers/geospatialPDF/support/statePlaneUtils.js +2 -0
  74. package/layers/geospatialPDF/support/unitUtils.js +2 -0
  75. package/layers/geospatialPDF/support/validateProjectionUtils.js +2 -0
  76. package/layers/graphics/sources/support/clientSideDefaults.js +2 -2
  77. package/layers/knowledgeGraph/KnowledgeGraphSublayer.js +1 -1
  78. package/layers/ogc/ogcFeatureUtils.js +1 -1
  79. package/layers/save/imageryUtils.js +1 -1
  80. package/layers/save/mediaLayerUtils.js +1 -1
  81. package/layers/save/streamLayerUtils.js +1 -1
  82. package/layers/support/ControlPoint.js +1 -1
  83. package/layers/support/ControlPointsGeoreference.js +1 -1
  84. package/layers/support/DimensionalDefinition.js +1 -1
  85. package/layers/support/LabelClass.js +1 -1
  86. package/layers/support/LabelExpressionInfo.js +1 -1
  87. package/layers/support/MediaElementBase.js +1 -1
  88. package/layers/support/MosaicRule.js +1 -1
  89. package/layers/support/MultidimensionalSubset.js +1 -1
  90. package/layers/support/RasterBandInfo.js +1 -1
  91. package/layers/support/RasterFunction.js +1 -1
  92. package/layers/support/RasterFunctionTemplate.js +1 -1
  93. package/layers/support/RasterInfo.js +1 -1
  94. package/layers/support/RasterSensorInfo.js +1 -1
  95. package/layers/support/RasterStorageInfo.js +1 -1
  96. package/layers/support/VideoElement.js +1 -1
  97. package/layers/support/layersLoader.js +1 -1
  98. package/legend/ActiveLayerInfo.d.ts +5 -1
  99. package/legend/ActiveLayerInfo.js +1 -1
  100. package/libs/maquette-advanced-projector/projector.js +1 -1
  101. package/linkChart/LayoutSettings.js +1 -1
  102. package/linkChart/RootedLayoutSettings.js +1 -1
  103. package/package.json +2 -2
  104. package/renderers/FlowRenderer.js +1 -1
  105. package/renderers/RasterColormapRenderer.js +1 -1
  106. package/renderers/RasterShadedReliefRenderer.js +1 -1
  107. package/renderers/RasterStretchRenderer.js +1 -1
  108. package/renderers/VectorFieldRenderer.js +1 -1
  109. package/renderers/support/ColormapInfo.js +1 -1
  110. package/renderers/support/RasterPresetRenderer.js +1 -1
  111. package/renderers/support/rasterRendererHelper.js +1 -1
  112. package/rest/knowledgeGraph/GraphApplyEdits.js +1 -1
  113. package/rest/support/BaseImageMeasureParameters.js +1 -1
  114. package/rest/support/BaseImageMeasureResult.js +1 -1
  115. package/rest/support/FindImagesParameters.js +1 -1
  116. package/rest/support/FindImagesResult.js +1 -1
  117. package/rest/support/ImageAngleParameters.js +1 -1
  118. package/rest/support/ImageAngleResult.js +1 -1
  119. package/rest/support/ImageAreaParameters.js +1 -1
  120. package/rest/support/ImageAreaResult.js +1 -1
  121. package/rest/support/ImageBoundaryParameters.js +1 -1
  122. package/rest/support/ImageBoundaryResult.js +1 -1
  123. package/rest/support/ImageDistanceParameters.js +1 -1
  124. package/rest/support/ImageDistanceResult.js +1 -1
  125. package/rest/support/ImageGPSInfoParameters.js +1 -1
  126. package/rest/support/ImageGPSInfoResult.js +1 -1
  127. package/rest/support/ImageHeightParameters.js +1 -1
  128. package/rest/support/ImageHeightResult.js +1 -1
  129. package/rest/support/ImageHistogramParameters.js +1 -1
  130. package/rest/support/ImageIdentifyParameters.js +1 -1
  131. package/rest/support/ImageIdentifyResult.js +1 -1
  132. package/rest/support/ImagePixelLocationParameters.js +1 -1
  133. package/rest/support/ImagePixelLocationResult.js +1 -1
  134. package/rest/support/ImagePointParameters.js +1 -1
  135. package/rest/support/ImagePointResult.js +1 -1
  136. package/rest/support/ImageSample.js +1 -1
  137. package/rest/support/ImageSampleParameters.js +1 -1
  138. package/rest/support/ImageSampleResult.js +1 -1
  139. package/rest/support/ImageToMapMultirayParameters.js +1 -1
  140. package/rest/support/ImageToMapParameters.js +1 -1
  141. package/rest/support/ImageUrlParameters.js +1 -1
  142. package/rest/support/ImageUrlResult.js +1 -1
  143. package/rest/support/ImageVolumeParameters.js +1 -1
  144. package/rest/support/ImageVolumeResult.js +1 -1
  145. package/rest/support/MapToImageParameters.js +1 -1
  146. package/rest/support/MeasureAreaFromImageResult.js +1 -1
  147. package/rest/support/MeasureFromImageParameters.js +1 -1
  148. package/rest/support/MeasureLengthFromImageResult.js +1 -1
  149. package/symbols/support/cimSymbolUtils.js +1 -1
  150. package/symbols/support/renderUtils.js +1 -1
  151. package/views/2d/ViewState.d.ts +3 -3
  152. package/views/2d/ViewState.js +1 -1
  153. package/views/2d/ViewStateManager.js +1 -1
  154. package/views/2d/engine/vectorTiles/decluttering/CollisionJob.js +1 -1
  155. package/views/2d/engine/vectorTiles/style/geoJSONVectorTileUtils.js +1 -1
  156. package/views/2d/engine/webgl/collisions/LabelMetric.js +1 -1
  157. package/views/2d/engine/webgl/collisions/LabelStore.js +1 -1
  158. package/views/2d/engine/webgl/shaderGraph/techniques/animated/AAnimatedShader.js +1 -1
  159. package/views/2d/engine/webgl/shaderGraph/techniques/animated/AnimatedMarkerShader.js +1 -1
  160. package/views/2d/engine/webgl/shaderGraph/techniques/labels/LabelMeshWriter.js +1 -1
  161. package/views/2d/engine/webgl/shaderGraph/techniques/markers/MarkerShader.js +1 -1
  162. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/AFeatureShader.js +1 -1
  163. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/FillShader.js +1 -1
  164. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/LineShader.js +1 -1
  165. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/OutlineFillShader.js +1 -1
  166. package/views/2d/engine/webgl/shaderGraph/techniques/text/TextShader.js +1 -1
  167. package/views/2d/engine/webgl/util/IntervalMatcher.js +1 -1
  168. package/views/3d/FocusAreasView.js +1 -1
  169. package/views/3d/GroundView3D.js +1 -1
  170. package/views/3d/layers/GaussianSplatLayerView3D.js +1 -1
  171. package/views/3d/layers/graphics/Graphics3DSymbol.js +1 -1
  172. package/views/3d/layers/i3s/I3SBinaryReader.js +1 -1
  173. package/views/3d/state/ConstraintsManager.js +1 -1
  174. package/views/3d/state/ViewState.js +1 -1
  175. package/views/3d/state/ViewStateManager.js +1 -1
  176. package/views/3d/support/gaussianSplatting/GaussianSplatFadeHelper.js +1 -1
  177. package/views/3d/support/gaussianSplatting/GaussianTileLifecycle.js +2 -0
  178. package/views/3d/terrain/OverlayManager.js +1 -1
  179. package/views/3d/terrain/OverlayRenderer.js +1 -1
  180. package/views/3d/terrain/TerrainRenderer.js +1 -1
  181. package/views/3d/terrain/TerrainSurface.js +1 -1
  182. package/views/3d/terrain/Tile.js +1 -1
  183. package/views/3d/terrain/tileUtils.js +1 -1
  184. package/views/3d/webgl-engine/core/shaderLibrary/shading/readShadow.glsl.js +1 -1
  185. package/views/3d/webgl-engine/effects/WeatherFader.js +1 -1
  186. package/views/3d/webgl-engine/effects/debug/RenderNodeVisualizerNode.js +19 -9
  187. package/views/3d/webgl-engine/effects/highlight/Highlight.js +1 -1
  188. package/views/3d/webgl-engine/lib/GeometryUtil.js +1 -1
  189. package/views/3d/webgl-engine/lib/Renderer.js +1 -1
  190. package/views/3d/webgl-engine/lib/geometryDataUtils.js +1 -1
  191. package/views/3d/webgl-engine/lib/screenPolygonOverlapUtils.js +1 -1
  192. package/views/3d/webgl-engine/lib/screenPolygonTriangleIntersections.js +1 -1
  193. package/views/3d/webgl-engine/materials/HUDMaterial.js +1 -1
  194. package/views/3d/webgl-engine/materials/HUDMaterialBaseInstance.js +1 -1
  195. package/views/3d/webgl-engine/materials/LineMarkerMaterial.js +1 -1
  196. package/views/3d/webgl-engine/materials/internal/bufferWriterUtils.js +1 -1
  197. package/views/3d/webgl-engine/materials/internal/lineMarkerBufferUtils.js +1 -1
  198. package/views/3d/webgl-engine/shaders/DefaultMaterialTechnique.js +1 -1
  199. package/views/3d/webgl-engine/shaders/HUDMaterialTechnique.js +1 -1
  200. package/views/3d/webgl-engine/shaders/LineMarkerTechnique.js +1 -1
  201. package/views/3d/webgl-engine/shaders/hudMaterialLayouts.js +2 -0
  202. package/views/3d/webgl-engine/shaders/lineMarkerLayouts.js +2 -0
  203. package/views/overlay/LineOverlayItem.js +1 -1
  204. package/views/overlay/TextOverlayItem.js +1 -1
  205. package/views/overlay/ViewOverlay.js +1 -1
  206. package/views/support/GroundElevationSampler.js +1 -1
  207. package/views/support/HighlightOptions.d.ts +2 -2
  208. package/views/support/HighlightOptions.js +1 -1
  209. package/views/webgl/Util.js +1 -1
  210. package/views/webgl/textureUtils.js +1 -1
  211. package/widgets/FeatureTable/Grid/Grid.js +1 -1
  212. package/widgets/Legend/styles/support/univariateUtils.js +1 -1
  213. package/widgets/OrientedImageryViewer/OrientedImageryViewerViewModel.js +1 -1
  214. package/widgets/OrientedImageryViewer.js +1 -1
  215. package/assets/esri/core/workers/chunks/01f55004d64309f8538b.js +0 -1
  216. package/assets/esri/core/workers/chunks/0d99bfb75dcb9fa29080.js +0 -1
  217. package/assets/esri/core/workers/chunks/144bad0c2415c345736a.js +0 -1
  218. package/assets/esri/core/workers/chunks/165ca7a97b611c8f26c4.js +0 -1
  219. package/assets/esri/core/workers/chunks/1989410a618865f02dec.js +0 -1
  220. package/assets/esri/core/workers/chunks/2f9072563194026e320e.js +0 -1
  221. package/assets/esri/core/workers/chunks/338d800d4efcc91cead1.js +0 -1
  222. package/assets/esri/core/workers/chunks/3415531224f8494d79ca.js +0 -1
  223. package/assets/esri/core/workers/chunks/59a88dd53f8806bbec06.js +0 -1
  224. package/assets/esri/core/workers/chunks/5aeb5e18514644fe2cf9.js +0 -1
  225. package/assets/esri/core/workers/chunks/6edc13a426e00bb93a9b.js +0 -1
  226. package/assets/esri/core/workers/chunks/7862abd24fb5c3b12e6b.js +0 -1
  227. package/assets/esri/core/workers/chunks/8a3dfe997712dc2ddead.js +0 -1
  228. package/assets/esri/core/workers/chunks/8f82a0a6747f673a2a7e.js +0 -1
  229. package/assets/esri/core/workers/chunks/934e1f2153e6fad6ed23.js +0 -1
  230. package/assets/esri/core/workers/chunks/b25a05c58b0fd0f6ac60.js +0 -1
  231. package/assets/esri/core/workers/chunks/c7adb7b77721c75891f4.js +0 -1
  232. package/assets/esri/core/workers/chunks/cd55cad81accf51d2989.js +0 -1
  233. package/assets/esri/core/workers/chunks/ce324dde6d7daea33638.js +0 -1
  234. package/assets/esri/core/workers/chunks/d3412518a7b518860fbb.js +0 -1
  235. package/assets/esri/core/workers/chunks/dac69c0047488fdf986d.js +0 -1
  236. package/assets/esri/core/workers/chunks/dba5f44c4e4a3f075df2.js +0 -1
  237. package/assets/esri/core/workers/chunks/e67ea2f1714e5abeae44.js +0 -1
  238. package/assets/esri/core/workers/chunks/eed4b90494a54f8b337b.js +0 -1
  239. package/assets/esri/core/workers/chunks/f10c883eb26330e3421c.js +0 -1
  240. package/layers/geospatialPDF/projectionToWKTUtils.js +0 -3
  241. package/libs/maquette/cache.js +0 -2
  242. package/libs/maquette/dom.js +0 -2
  243. package/libs/maquette/h.js +0 -2
  244. package/libs/maquette/index.js +0 -2
  245. package/libs/maquette/mapping.js +0 -2
  246. package/libs/maquette/projection.js +0 -2
  247. package/libs/maquette/projector.js +0 -2
  248. package/libs/maquette/utilities/window-performance-projector-logger.js +0 -2
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import{update as t}from"../../../../core/arrayUtils.js";import{createTask as n}from"../../../../core/asyncUtils.js";import has from"../../../../core/has.js";import{removeMaybe as r,abortMaybe as i,destroyMaybe as a,releaseMaybe as o,releaseReferencedMaybe as s}from"../../../../core/maybe.js";import{throwIfAborted as c}from"../../../../core/promiseUtils.js";import{watch as l,syncAndInitial as u,initial as d,sync as f}from"../../../../core/reactiveUtils.js";import{signal as p}from"../../../../core/signal.js";import{property as m,subclass as h}from"../../../../core/accessorSupport/decorators.js";import{equals as g,invert as _,multiply as v,copy as y}from"../../../../core/libs/gl-matrix-2/math/mat4.js";import{IDENTITY as b,create as x}from"../../../../core/libs/gl-matrix-2/factories/mat4f64.js";import{set as ee}from"../../../../core/libs/gl-matrix-2/math/vec4.js";import{fromValues as te,ZEROS as S}from"../../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{pruneIndexArrays as ne}from"../../../../geometry/support/Indices.js";import{InternalRenderCategory as C,RenderNodeOutput as w,AllRenderNodeOutputs as T,AllInternalRenderNodeOutputs as E}from"../../webgl.js";import{minNearDistanceInMeters as re}from"../../state/NearFarHeuristic.js";import{debugFlags as ie}from"../../support/debugFlags.js";import{FBOCache as ae}from"../core/FBOCache.js";import{RenderPassManager as oe}from"../core/renderPasses/RenderPassManager.js";import{isColor as se}from"../core/shaderLibrary/ShaderOutput.js";import{RenderNodes as ce}from"../effects/RenderNodes.js";import{RenderPluginContext as le}from"../effects/RenderPluginContext.js";import{RenderPluginManager as D}from"../effects/RenderPluginManager.js";import{WeatherFader as O}from"../effects/WeatherFader.js";import{innerAtmosphereFadeStart as ue}from"../effects/atmosphere/atmosphereUtils.js";import{Blit as de}from"../effects/blit/Blit.js";import{maxHighlightsPerChannel as fe,renderHighlightBuffer as pe}from"../effects/highlight/Highlight.js";import{OITBlend as me}from"../effects/transparency/OITBlend.js";import{AnimationTimer as he}from"./AnimationTimer.js";import{AnimationTimeStep as ge}from"./AnimationTimeStep.js";import{BoundingInfo as _e}from"./BoundingInfo.js";import{Compositor as ve}from"./Compositor.js";import{DepthRange as k}from"./DepthRange.js";import{depthRangeFromScene as A}from"./depthRangeUtils.js";import{MainFramebuffer as ye}from"./MainFramebuffer.js";import{NavigationDepthCache as be}from"./NavigationDepthCache.js";import{blendingColorAlphaClear as j}from"./OrderIndependentTransparency.js";import{RenderContext as M,defaultRenderOccludedMask as N}from"./RenderContext.js";import{RendererBase as xe}from"./RendererBase.js";import{setupFeatureDefaults as P}from"./RenderFeature.js";import{RenderPluginInput as F}from"./RenderPluginInput.js";import{ShadowMap as Se}from"./ShadowMap.js";import Ce from"./SliceHelper.js";import{MergedRenderer as we}from"../materials/renderers/MergedRenderer.js";import{RenderSceneResult as I}from"../parts/renderUtils.js";import{RendererPerformanceInfo as Te,PerformanceCategory as L}from"../statistics/RendererPerformanceInfo.js";import{PixelType as Ee,ColorAttachment0 as R,ColorAttachment1 as z,ColorAttachment2 as B,DrawBufferNone as De}from"../../../webgl/enums.js";const Oe=has(`disable-feature:async-navigation-3d-depth-readback`);let V=class extends xe{constructor(e,t,n,r,i){super({stage:e}),this._techniques=n,this._rctx=r,this._requestRender=i,this._pluginsHas={occludedHudElements:!1,hudElements:!1,water:!1},this.renderPassManager=new oe,this._isRendering=!1,this._backgroundColor=te(0,0,0,1),this._sliceHelper=new Ce,this._shadowAccumulator=null,this._shadowCastOptions=null,this.sceneDepthRange=p(k.Infinite),this._state=p(2),this._hasAnimations=!1,this._animationTimestep=new ge,this._loadEdgeViewTask=null,this._edgeViewCallbacks=[],this._reprojectionMatrixVersion=p(0),this._renderHiddenTransparentEdges=()=>{},this._pluginInput=new F,this._hasTransparentGeometry=!1,this._releaseNodeInputs=e=>{for(let t of Me)e.some(({name:e})=>e===t)&&this._pluginInput.release(t)},this._testsNeedsDepth=!1,this._fboCache=new ae(r),this._compositor=new ve(r,n),this._renderStateFeatures=p(P(e.view.qualityProfile));let a=new Se(this._fboCache,e.viewingMode);this._renderContext=new M(this._rctx,a,n),this._framebuffer=new ye(this._fboCache,this._bindParameters),this._performanceInfo=new Te(this._rctx),this._blit=new de(n),this.navigationDepthCache=new be(this._rctx,this._fboCache,n,()=>this._requestRender(0)),this._nodes=new ce(this._renderContext),this._plugins=new D(new le(this._renderContext,n,t,e,i)),this._plugins.add(this.renderPassManager),this.weatherFader=new O({view:e.view,context:this._renderContext}),this.addHandles([l(()=>e.view.state.camera,()=>i(),u),l(()=>ie.EDGES_SHOW_HIDDEN_TRANSPARENT_EDGES,e=>{this._renderHiddenTransparentEdges=e?()=>this._renderEdges(0):()=>{},i()},d),l(()=>e.view.environment.background?.color,e=>{let t=e?e.toUnitRGBA():S;ee(this._backgroundColor,t[0]*t[3],t[1]*t[3],t[2]*t[3],t[3]),i()},u),l(()=>e.view.environmentView.shadowsAvailable,e=>{this._bindParameters.shadowMap.enabled=e,this._requestRender(1)},u),l(()=>this._bindParameters.clouds.fadeFactor,()=>{this._bindParameters.fadeLighting(),this._requestRender(2)},f),l(()=>this._bindParameters.clouds.data?.state,()=>i(),f),l(()=>e.view.state.highlights,e=>{this._bindParameters.highlights=e,i()},d),l(()=>e.view.environment.lighting?.type===`sun`,e=>{this._bindParameters.enableFillLights=e,this._requestRender()},u)])}destroy(){this._gpuTimerHandle=r(this._gpuTimerHandle),this._nodes.destroy(),this._framebuffer.dispose(),this._shadowAccumulator=null,this._shadowCastOptions=null,this._loadEdgeViewTask=i(this._loadEdgeViewTask),this._edgeView=a(this._edgeView),this.renderPassManager.dispose(),this.weatherFader=a(this.weatherFader),this._releaseFBOs(),this._disposeOffscreenBuffers(),this.navigationDepthCache.destroy(),this._fboCache.destroy(),this._fboCache=null,this._renderContext.destroy(),this._plugins.destroy(),this._pluginInput=null,this._oitBlendOrNil=null,this._nodes=null,this._framebuffer=null,this._performanceInfo=null,_e.prune(),we.prune(),ne()}get renderContext(){return this._renderContext}get _bindParameters(){return this._renderContext.bind}get _oitBlend(){return this._oitBlendOrNil??=new me(this._techniques),this._oitBlendOrNil}get performanceInfo(){return this._performanceInfo}updateRenderFeatures(e){this._renderStateFeatures.value=P(e),this.updateGlobalIllumination(this.stage.view.environment.lighting.globalIllumination),this._requestRender()}updateGlobalIllumination(e){let t=P(this.stage.view.qualityProfile);for(let n of[0,1,2])this.setFeatureEnabled(11,n,e),this.setFeatureEnabled(10,n,e&&n===2),this.setFeatureEnabled(3,n,!e&&(t.get(n,3)??!1))}isFeatureEnabled(e,t=this._state.value){return this._renderStateFeatures.value.get(t,e)??!1}setFeatureEnabled(e,t,n){this.isFeatureEnabled(e,t)!==n&&(this._renderStateFeatures.mutate(r=>r.set(t,e,n)),this._requestRender())}setTime(e){this._renderContext.time=e}get hasReflections(){return this._bindParameters.screenSpaceReflections.enabled=this._pluginsHas.water&&this.isFeatureEnabled(4),this._bindParameters.screenSpaceReflections.enabled}get _hasHighlights(){return this._plugins.produces(10,2,4,18,12,13,14)}hasHighlight(e){return this._plugins.hasHighlight(e)}get _hasHUDHighlights(){return this._plugins.produces(10,12,13,14)}get hasAmbientIllumination(){return this._nodes.produces(C.AMBIENT_ILLUMINATION)}get hasGlobalIllumination(){return this.stage.renderView?.globalIllumination?.enabled??!1}get hasGlobalIlluminationHighQuality(){let e=this.stage.renderView?.globalIllumination;return this.hasGlobalIllumination&&e?.hasHighQuality===!0}get hasSMAA(){return this.isFeatureEnabled(0)}get _emissions(){let e=this._plugins.emissions;return this._hasTransparentGeometry?e:+(e===1||e===3)}get hasFloatBlend(){return this._rctx.driverTest.floatBufferBlend.result&&this.isFeatureEnabled(9)}get highResolutionAtmosphere(){return this.isFeatureEnabled(2)}get fboCache(){return this._fboCache}setShadowAccumulator(e){this._shadowAccumulator=e,this._shadowCastOptions&&e.setParameters(this._shadowCastOptions)}_releaseFBOs(){this._bindParameters.hudOcclusion=o(this._bindParameters.hudOcclusion),this._bindParameters.depth=null}_disposeOffscreenBuffers(){this._framebuffer.dispose();let e=this._bindParameters;e.globalIllumination=o(e.globalIllumination),e.reprojection.lastFrameDepth=o(e.reprojection.lastFrameDepth),e.reprojection.lastFrameEmission=o(e.reprojection.lastFrameEmission),this._disposeBindBuffers()}_disposeBindBuffers(){this._bindParameters.shadowMap.disposeOutputs()}get updating(){return this._loadEdgeViewTask&&!this._loadEdgeViewTask.finished||this._edgeView?.updating||this._plugins.updating||this.weatherFader?.readyToRun||!this.isCameraFinal}loadEdgeView(){return this._loadEdgeViewTask||=n(async e=>{let{EdgeView:t}=await import(`./edgeRendering/EdgeView.js`);c(e);let n=this._edgeView=new t({rctx:this._rctx,renderSR:this.stage.view.renderSpatialReference,viewingMode:this.stage.view.stage.viewingMode,techniques:this._techniques,setNeedsRender:()=>this._requestRender(),schedule:Ne(this.stage.view.resourceController)});return this.addHandles(l(()=>n.updating,()=>this._requestRender(),f)),this._requestRender(),this._edgeViewCallbacks.forEach(e=>e(n)),this._edgeViewCallbacks.length=0,n}),this._loadEdgeViewTask.promise}withEdgeView(e){this.loadEdgeView().catch(()=>{}),this._edgeView==null?this._edgeViewCallbacks.push(e):e(this._edgeView)}get edgeView(){return this._edgeView}get isCameraFinal(){return this._reprojectionMatrixVersion.value>=0&&g(this._bindParameters.reprojection.matrix,b)}set _reprojectionMatrix(e){t(this._bindParameters.reprojection.matrix,e)&&this._reprojectionMatrixVersion.value++}get shadowsEnabled(){return!!this._bindParameters.shadowMap.enabled}setParameters(e){e.shadowCast&&(this._shadowCastOptions={...this._shadowCastOptions,...e.shadowCast},this._shadowAccumulator?.setParameters(e.shadowCast))}set slice(e){this._sliceHelper.update(e)&&this._requestRender()}get plugins(){return this._plugins}commit(e,t){return this._isRendering&&console.warn(`Renderer.modify called while rendering`),super.commit(e,t,this._plugins.context)?(this.updateHasFlags(),!0):!1}addRenderer(e){this._plugins.add(e)}removeRenderer(e){this._plugins.remove(e)}get occludedRequiresStencil(){return this._occludedRequiresOccludeeStencil||this.occludedRequiresIntegratedMeshStencil}get _occludedRequiresOccludeeStencil(){return this._bindParameters.hasOccludees&&!!(this.plugins.renderOccludedFlags&8)}get occludedRequiresIntegratedMeshStencil(){return this._plugins.produces(0,0)&&this._plugins.produces(0,9)}updateHasFlags(){let has=this._pluginsHas;has.occludedHudElements=this._plugins.produces(0,13),has.hudElements=has.occludedHudElements||this._plugins.produces(0,...J),has.water=this._plugins.produces(4,19),this._bindParameters.hasOccludees=this._plugins.hasOccludees,this._requestRender()}updateAnimation(e,t){this._animationTimer??=new he(e.camera,t),this._animationTimer.advance(e.camera,t,this._animationTimeDilation);let n=this._hasAnimations;return this._hasAnimations=this._plugins.updateAnimation(this._animationTimer),this._hasAnimations=this._nodes.updateAnimation(this._animationTimer)||this._hasAnimations,this._hasAnimations!==n&&(this._gpuTimerHandle=n?r(this._gpuTimerHandle):this.performanceInfo.enableGPUPerformanceInfo()),this._hasAnimations}get animationTimestep(){return this._animationTimestep.value}get _animationTimeDilation(){return this._animationTimestep.timeDilation}resetAnimation(){this._animationTimestep.clear()}tick(){this.fboCache.clean()}render(e,t,n=!1){try{this._isRendering=!0,this._needsOffscreenPrepass(e.camera,t)&&this._render(e,3,n).color?.release();let r=this._render(e,t,n);return t!==0&&this._disposeOffscreenBuffers(),r}catch(e){console.error(`Exception during rendering: ${e}:\n${e.stack}`)}finally{this._isRendering=!1}return new I(this._pluginInput.get(w.FINAL),null)}_needsOffscreenPrepass(e,t){return(t===1||t===2)&&(this.hasGlobalIllumination||this.hasReflections)&&(!this._framebuffer.hasColor||!this._bindParameters.reprojection.lastFrameCamera.equals(e))}_render(e,t,n){let r=t===0;this.performanceInfo.startFrame(),this.fboCache.frameStart(),this.fboCache.interactive=r,this._disposeBindBuffers();let{camera:i,contentCamera:a,mode:c,alignPixelEnabled:l}=e;this._state.value=c,this._bindParameters.frameRendererTarget=t,this._bindParameters.output=0,this._bindParameters.emissions=this._emissions,this._bindParameters.alignPixelEnabled=l,this._bindParameters.metersPerRenderUnit=this.stage.view.renderCoordsHelper.unitInMeters,this._bindParameters.decorations=!n,this._bindParameters.mainDepth=null,this._bindParameters.useFloatBlend.value=this.hasFloatBlend;let u=!n||!this._sliceHelper.isDecoration;this._bindParameters.slicePlane=u?this._sliceHelper.plane:null,this._bindParameters.viewshedEnabled=this._nodes.produces(C.VIEWSHED),this._bindParameters.laserlinesEnabled=this._nodes.produces(C.LASERLINES),this._bindParameters.shadowAnalysisEnabled=!!this._shadowAccumulator?.active,this._bindParameters.cutFillComputationEnabled=this._nodes.produces(C.CUTFILL_COMPUTATION),this._bindParameters.cutFillVisualizationEnabled=this._nodes.produces(C.CUTFILL),this._ensureBindParameters(i,a),this._plugins.sortTestsTransparentOrderedSlots(Ae),this._plugins.prepareRender(),this._hasTransparentGeometry=this._plugins.produces(1,...U),this._renderOverlay(),i.setGLViewport(this._rctx);let d=this._framebuffer,f=d.initialize(i.fullWidth,i.fullHeight,this._backgroundColor);this.hasReflections?(f?.setName(`last frame color`),this._bindParameters.reprojection.lastFrameColor?.release(),this._bindParameters.reprojection.lastFrameColor=f):f?.release(),this._bindParameters.hasShadowHighlights=this._needsShadowHighlight&&!n,this._precompilePrepasses(),this.performanceInfo.advance(L.PREPARE);let p=this._computeShadowDepthRange(i);this._pluginInput.set(`normals`,this._renderNormals()),this._renderAmbientIlluminationAndDepth(),this._renderShadowMap(i,a,this._bindParameters.lighting.mainLight.direction,p),this._renderShadowAccumulation(p),d.bind(),this._bindParameters.mainDepth=d.depth.attachment,this._precompileShaders(r),this._bindParameters.output=0,this._renderOpaque(),this._renderPreTransparent(),this._renderTransparent(),this._3dGeometryRendered(),d.update(e=>this._renderNodes(C.CUTFILL_COMPUTATION,e)),this._pluginInput.set(C.FOCUSAREA_MASK,this._renderFocusAreaMask()),d.update(e=>this._renderNodes(C.TRANSPARENT_ENVIRONMENT,e)),d.update(e=>this._renderNodes(C.VIEWSHED,e)),d.update(e=>this._renderNodes(C.LASERLINES,e)),this._nodes.requireGeometryDepth&&(this._bindParameters.depth=s(this._bindParameters.depth)),d.update(e=>this._renderNodes(C.FOCUSAREA,e)),this._pluginInput.release(C.FOCUSAREA_MASK),d.update(e=>this._renderNodes(C.CUTFILL,e)),this._pluginInput.release(C.GROUND_DEPTH),d.update(e=>this._renderNodes(C.OCCLUDED,e)),this._pluginInput.set(`highlights`,this._renderHighlightPrepass());let m=t===2?this._renderObjectAndLayerIdColor():null;d.update(e=>this._renderNodes(w.COMPOSITE,e)),this._bindParameters.shadowMap.disposeOutputs(),this._bindParameters.shadowHighlight=o(this._bindParameters.shadowHighlight),d.update(e=>this._renderNodes(C.ANTIALIASING,e));let h=this._hasTransparentGeometry?2:1,g=this._bindParameters.emissions;this._bindParameters.emissions=0,this._hasHUDHighlights&&d.update(e=>this._renderHUD(h,e)),d.update(e=>this._renderNodes(C.HIGHLIGHT,e)),this._hasHUDHighlights||d.update(e=>this._renderHUD(h,e)),this._bindParameters.emissions=g,d.update(e=>this._renderNodes(C.MAGNIFIER,e)),d.update(e=>this._renderNodes(w.FINAL,e)),r&&(this._blit.toFramebuffer(d.color,this._bindParameters),Oe||c!==2&&c!==0||this.navigationDepthCache.update(this._bindParameters,d.depth.attachment,this._renderContext.time)),this._bindParameters.reprojection.lastFrameDepth?.release(),this.hasGlobalIllumination&&(this._bindParameters.reprojection.lastFrameDepth=this._bindParameters.depth),this._testsNeedsDepth&&(this._bindParameters.depth=s(this._bindParameters.depth)),this._releaseFBOs(),d.releaseDepth(),this._bindParameters.reprojection.lastFrameCamera.copyFrom(this._bindParameters.camera),this.fboCache.frameEnd();let _;return r||(_=d.color,_.retain()),this.performanceInfo.finishFrame(),new I(_,m)}_precompileShaders(e){++this._plugins.context.techniques.precompiling;let t=this._bindParameters;t.output=0;let n=t.emissions;if(this._precompileOpaqueGeometry(),this._nodes.precompile(C.OPAQUE_ENVIRONMENT,C.GAUSSIAN_SPLAT,C.OPAQUE_OCCLUSION_QUERY,C.VOXEL),this._precompileOpaqueGeometry(),t.output=3,this._plugins.precompile(...W),t.output=0,this._plugins.precompile(...W),this._hasTransparentGeometry){let e=this._pluginsHas.occludedHudElements;this._oitBlend.precompile(t,e,0),this._pluginsHas.hudElements&&this._oitBlend.precompile(t,!1,1),this._precompileTransparentGeometry(),t.hasTransparentEmission&&(t.emissions=3)}this._nodes.precompile(C.FOCUSAREA_MASK),this._compositor.precompile(this._usesPremultipliedAlphaBlit,!!this._needsEdges,t),this._hasTransparentGeometry||this._plugins.precompile(15),this._nodes.precompile(C.TRANSPARENT_ENVIRONMENT,C.VIEWSHED,C.CUTFILL_COMPUTATION,C.CUTFILL,C.LASERLINES,C.FOCUSAREA,C.OCCLUDED,C.ANTIALIASING),t.highlightMixTexture=t.highlights.length>1?this._rctx.emptyTexture:null,this._precompileHUD(0);let r=t.emissions;t.emissions=0,this._precompileHUD(0),this._precompileHUD(1),t.emissions=r,this._hasHighlights&&(t.highlights.forEach((e,n)=>{t.highlightLevel=n,this._precompileAllGeometry(10),this._hasHUDHighlights&&this._plugins.precompile(13,12)}),t.highlightLevel=null,this._nodes.precompile(C.HIGHLIGHT)),t.highlightMixTexture=null,this._nodes.precompile(w.COMPOSITE,C.MAGNIFIER),this._nodes.precompile(C.TRANSPARENT_NO_DEPTH),this._plugins.precompile(8),t.hasOpaqueEmission&&(t.transparentWithoutDepthEmissionDimmingPass=!0,this._plugins.precompile(8),t.transparentWithoutDepthEmissionDimmingPass=!1),e&&this._blit.precompile(),t.emissions=n,--this._plugins.context.techniques.precompiling}_renderFocusAreaMask(){let e=this._nodes.produce(C.FOCUSAREA_MASK,this._pluginInput);return e&&this.performanceInfo.advance(L.FOCUS_AREA_MASK),e}_renderObjectAndLayerIdColor(){if(!this._nodes.produces(C.OBJECT_AND_LAYER_ID_COLOR))return null;let e=this._bindParameters.output;++this._techniques.precompiling;let{width:t,height:n}=this._framebuffer.size,r=this.fboCache.acquire(t,n,C.OBJECT_AND_LAYER_ID_COLOR).acquireDepth(14);return r=this._renderNodes(C.OBJECT_AND_LAYER_ID_COLOR,r),--this._techniques.precompiling,this._bindParameters.output=e,r}finish(e){this._hasAnimations||this._animationTimestep.clear();let t=this.performanceInfo.gpuSamplingEnabled,n=e===0,r=n?this.performanceInfo.elapsedTime:0;if(n||t){let e=0;t?e=this.performanceInfo.totalGPUTimeSampler.last:(this._rctx.gl.finish(),e=this.performanceInfo.elapsedTime);let i=Math.max(r,e);this._animationTimestep.frame(i,n)}}readAccumulatedShadow(e){return this._shadowAccumulator?.readAccumulatedShadow(e[0],e[1])??0}readMainDepth(e,t){let{mainDepth:n,camera:r}=this._bindParameters;if(!n)return;let i=this.fboCache.acquire(this._framebuffer.size.width,this._framebuffer.size.height,`linear depth`);this._rctx.bindFramebuffer(i.fbo),r.setGLViewport(this._rctx),this._rctx.setScissorRect(e[0],e[1],e[2],e[3]),this._rctx.setScissorTestEnabled(!0),this._rctx.clearFramebuffer(S),this._compositor.blitDepthToLinearDepth(this._bindParameters,n),this._rctx.setScissorTestEnabled(!1),this._rctx.setScissorRect(0,0,this._rctx.gl.canvas.width,this._rctx.gl.canvas.width),i.fbo?.readPixels(e[0],e[1],e[2],e[3],6408,Ee.UNSIGNED_BYTE,t),i.release()}get _needsEdges(){return this._edgeView?.shouldRender()?this._edgeView:null}_renderEdges(e){let t=this._needsEdges;if(!t)return;let{width:n,height:r}=this._framebuffer.size,i=this.fboCache.acquire(n,r,`edges`);i.attachDepth(this._framebuffer.depth),this._rctx.bindFramebuffer(i.fbo),this._rctx.clearFramebuffer(S),t.render(this._bindParameters,e),i.detachDepth(),this._framebuffer.bind(),this._compositor.composite(this._bindParameters,i.getTexture()),i.release(),this.performanceInfo.advance(e===1?L.OPAQUE_EDGES:L.TRANSPARENT_EDGES)}_renderOverlay(){this._bindParameters.overlay=this.overlay?.render(this._renderContext.time),this._bindParameters.overlay&&this.performanceInfo.advance(L.OVERLAY)}_renderShadowMap(e,t,n,r){if(!this.shadowsEnabled)return;let i=this._bindParameters.shadowMap;if(i.start(e,n,r,this.isFeatureEnabled(5),this.stage.view.qualitySettings.maximumPixelRatio),this._needsShadowHighlight){this._renderShadowCascades(6,i),e.setGLViewport(this._rctx),this._ensureBindParametersCamera(e,t);let n=this._bindParameters.output;this._bindParameters.output=0,this._bindParameters.shadowHighlight=this._nodes.produce(C.SHADOW_HIGHLIGHT,this._pluginInput),this._bindParameters.output=n,i.disposeOutput(6),i.clear(),this._renderShadowCascades(7,i)}else this._renderShadowCascades(5);e.setGLViewport(this._rctx),this._ensureBindParametersCamera(e,this._bindParameters.contentCamera),this._needsShadowHighlight&&(this._bindParameters.depth=s(this._bindParameters.depth)),this.performanceInfo.advance(C.SHADOWMAP)}_precompileShadowCascades(e){this._bindParameters.shadowMap.cascades.length!==0&&this._precompileAllGeometry(e)}_renderShadowCascades(e,t=this._bindParameters.shadowMap){let n=this._bindParameters.output,r=e!==6;t.bindFramebuffer();for(let n of t.cascades)n.camera.setGLViewport(this._rctx),this._ensureBindParametersCamera(n.camera,n.camera),this.renderAllGeometry(e),r&&this._renderShadowNodes(t.renderTarget);t.finish(e),this._bindParameters.output=n}_renderShadowNodes(e){this._renderInternalNodeCategory(C.SHADOWMAP,e)}get _needsDepth(){return+this._nodes.requireGeometryDepth+ +this.hasReflections+ +this.hasGlobalIllumination+ +this._testsNeedsDepth+ +this._needsShadowHighlight}get _usesPremultipliedAlphaBlit(){return this._pluginsHas.hudElements}_renderAmbientIlluminationAndDepth(){let e=this._bindParameters;e.depth=o(this._bindParameters.depth);let t=this._pluginInput.get(`normals`);if(t){let n=this._nodes.produce(C.AMBIENT_ILLUMINATION,this._pluginInput);this._pluginInput.set(C.AMBIENT_ILLUMINATION,n),this._releaseGlobalIlluminationBuffers(),e.ssao=this.hasGlobalIllumination?null:n,e.globalIllumination=this.hasGlobalIllumination?n:null,e.globalIlluminationEnabled=e.globalIllumination!=null,n&&this.performanceInfo.advance(this.hasGlobalIlluminationHighQuality?L.AMBIENT_ILLUMINATION_HIGH_QUALITY:L.AMBIENT_ILLUMINATION);let r=this._needsDepth;if(r){let n=t.obtainAttachment(R);this._rctx.bindFramebuffer(t.fbo),this._rctx.clear(1024),this._renderGeometryWithoutNormals(3),e.depth=t.obtainDepthTexture(),e.depth?.retain(r-1),t.attachColor(n,R),n?.release(),this.performanceInfo.advance(L.DEPTH)}else t.detachDepth();this.hasAmbientIllumination&&this._pluginInput.release(`normals`)}else this._releaseGlobalIlluminationBuffers(),e.ssao=null,this._pluginInput.set(C.AMBIENT_ILLUMINATION,null),this._renderAllGeometryDepth()}_renderAllGeometryDepth(){let e=this._needsDepth;if(e===0)return;let{width:t,height:n}=this._framebuffer.size,r=this.fboCache.acquire(t,n,`geometry depth`,14);this._rctx.bindFramebuffer(r.fbo),this._rctx.clear(1280),this.renderAllGeometry(3),this._renderGaussianSplatPrepassDepth(r),this._bindParameters.depth=r.obtainDepthTexture(),this._bindParameters.depth?.retain(e-1),r.release(),this.performanceInfo.advance(L.DEPTH)}_renderGaussianSplatPrepassDepth(e){let t=this._shadowAccumulator;if(!t?.active||!t.requireGeometryDepth)return;let n=this._bindParameters.output;this._bindParameters.output=3,this._renderInternalNodeCategory(C.GAUSSIAN_SPLAT_DEPTH,e),this._bindParameters.output=n}_renderGaussianSplatDepthAndNormals(e){let t=this._bindParameters.output;this._bindParameters.output=4,this._renderInternalNodeCategory(C.GAUSSIAN_SPLAT_DEPTH,e),this._bindParameters.output=t}get _needsShadowDepthRange(){return this._bindParameters.shadowMap.enabled||!!this._shadowAccumulator?.active}_computeShadowDepthRange(e){if(!this._needsShadowDepthRange)return k.Zero;let t=A(e,this._plugins.plugins,this.stage.layers,0);return t.union(this._plugins.queryDepthRange(e)),t.union(this._nodes.queryDepthRange(C.SHADOWMAP,e)),t.near=Math.max(e.near,t.near),t.far=Math.min(e.far,t.far),t}updateSceneDepthRange(e){if(!this.stage.view.state.isGlobal||this.stage.view.renderCoordsHelper.getAltitude(e.eye)<ue){this.sceneDepthRange.value=k.Infinite;return}let t=e.clone();t.near=re,t.far=1e10;let n=A(t,this._plugins.plugins,this.stage.layers,1);n.union(this._plugins.queryDepthRange(t)),this.sceneDepthRange.value.equals(n)||(this.sceneDepthRange.value=n)}get _normalsRequired(){return this._nodes.require(`normals`,...T,C.VIEWSHED,C.LASERLINES)+ +!!this.hasAmbientIllumination}_precompilePrepasses(){let e=!!this._normalsRequired;if(e?(this._precompilePlugins(4,G),this._needsDepth&&this._precompilePlugins(3,K)):this._needsDepth&&this._precompileAllGeometry(3),this.shadowsEnabled&&(this._needsShadowHighlight?(this._nodes.precompile(C.SHADOW_HIGHLIGHT),this._precompileShadowCascades(6),this._precompileShadowCascades(7)):this._precompileShadowCascades(5)),this._shadowAccumulator?.active&&(this._nodes.precompile(C.SHADOW_ACCUMULATION),this._precompileAllGeometry(5)),this._shadowAccumulator?.active||e){let t=this._bindParameters.output;this._bindParameters.output=e?4:3,this._nodes.precompile(C.GAUSSIAN_SPLAT_DEPTH),this._bindParameters.output=t}(this.shadowsEnabled||this._shadowAccumulator?.active)&&this._nodes.precompile(C.SHADOWMAP),this.hasAmbientIllumination&&e&&this._nodes.precompile(C.AMBIENT_ILLUMINATION)}_renderNormals(){let e=this._normalsRequired;if(e===0)return;let{width:t,height:n}=this._framebuffer.size,r=this.fboCache.acquire(t,n,`normals`);r.acquireDepth(14),this._rctx.bindFramebuffer(r.fbo),this._rctx.clearFramebuffer(S,!0,!0),this._bindParameters.output=4,this._plugins.render(...G),this._renderGaussianSplatDepthAndNormals(r);let i=this._nodes.optional(`normals`,...T,C.VIEWSHED);return r.retain(e+i-1),this.performanceInfo.advance(L.NORMALS),r}_releaseGlobalIlluminationBuffers(){let e=this._bindParameters;e.reprojection.lastFrameDepth=o(e.reprojection.lastFrameDepth),e.reprojection.lastFrameEmission=o(e.reprojection.lastFrameEmission),e.globalIllumination=s(e.globalIllumination),e.globalIlluminationEnabled=!1}_precompileAllGeometry(e){let t=this._bindParameters.output;this._bindParameters.output=e,this._precompileOpaqueGeometry(),this._precompileTransparentGeometry(),this._plugins.precompile(...W),this._bindParameters.output=t}renderAllGeometry(e){this._bindParameters.output=e,this._renderOpaqueAndTransparentGeometry(e),this._renderTransparentGround()}precompileSlots(e,...t){for(let n of t)this._bindParameters.slot=n,e.precompile(this._renderContext)}precompileOccludedSlots(e,t){for(let n of t)this._renderContext.renderOccludedMask=n,this.precompileSlots(e,...q);this._renderContext.renderOccludedMask=N}renderSlots(e,...t){for(let n of t)this._bindParameters.slot=n,e.forAll(e=>{let t=e.acquireTechniques(this._renderContext);t&&e.render(this._renderContext,t)})}renderOccludedSlots(e,t){this._renderContext.renderOccludedMask=t,this.plugins.renderOccludedFlags>1&&this._plugins.render(9),this.renderSlots(e,...q),this._renderContext.renderOccludedMask=N}renderHUD(e){this._bindParameters.hudRenderStyle=e,this._plugins.render(...je[e])}_renderHUDElements(e){this._bindParameters.hudRenderStyle=e,this._plugins.render(16),this.renderHUD(e),this._bindParameters.hudRenderStyle=e,this._plugins.render(14)}precompileViewshedShadowMap(){let e=this._bindParameters.output;this._bindParameters.output=8,this._precompileAllGeometry(8),this._nodes.precompile(C.SHADOWMAP),this._bindParameters.output=e}precompileCutFillDepth(){this._precompilePlugins(9,Y)}_precompilePlugins(e,t){let n=this._bindParameters.output;this._bindParameters.output=e,this._plugins.precompile(...t),this._bindParameters.output=n}renderViewshedShadowMap(e,t){let{camera:n,contentCamera:r}=this._bindParameters,i=this._bindParameters.output;e.setGLViewport(this._rctx),this._ensureBindParametersCamera(e,e),this.renderAllGeometry(8),this._renderShadowNodes(t),this._ensureBindParametersCamera(n,r),this._bindParameters.camera.setGLViewport(this._rctx),this._bindParameters.output=i}renderCutFillDepth(e){let{camera:t,contentCamera:n}=this._bindParameters,r=this._bindParameters.output;e.setGLViewport(this._rctx),this._ensureBindParametersCamera(e,e),this._bindParameters.output=9,this._plugins.render(...Y),this._ensureBindParametersCamera(t,n),t.setGLViewport(this._rctx),this._bindParameters.output=r}get _needsGroundDepth(){return this._bindParameters.cutFillVisualizationEnabled}_blitGroundDepth(){if(!this._needsGroundDepth)return null;let{width:e,height:t}=this._framebuffer.size,n=this.fboCache.acquire(e,t,C.GROUND_DEPTH,14);return this._rctx.blitFramebuffer(this._framebuffer.color.fbo,n.fbo,256),this._framebuffer.bind(),n}_renderOpaqueAndTransparentGeometry(e){this._bindParameters.output=e,this._renderOpaqueGeometry(),this._renderTransparentGeometry()}_renderGeometryWithoutNormals(e){this._bindParameters.output=e,this._plugins.render(...K)}_precompileOpaqueGeometry(){this._needsOpaquePass&&(this._plugins.precompile(...H),this._nodes.precompile(`opaque-color`))}_renderOpaqueGeometry(){this._plugins.render(...H)}_renderTransparentGeometry(){this._plugins.render(...U),this._hasTransparentGeometry&&this._plugins.render(15)}_renderTransparentGround(){this._plugins.render(...W)}_precompileHUD(e){if(!this._pluginsHas.hudElements)return;let t=this._bindParameters.output,n=this._bindParameters.hudRenderStyle,r=this._bindParameters.emissions;this._bindParameters.emissions=0,this._bindParameters.hudRenderStyle=e,this._bindParameters.output=1,this._plugins.precompile(...J),this._bindParameters.output=2,this._plugins.precompile(...J),this._bindParameters.output=0,this._oitBlend.precompile(this._bindParameters,!1,1),this._hasHighlights&&(this._bindParameters.output=10,this._plugins.precompile(...J)),this._bindParameters.emissions=r,this._bindParameters.output=t,this._bindParameters.hudRenderStyle=n}_renderHUD(e,t){if(!this._pluginsHas.hudElements)return t;let n=this._renderOIT(1,e);this._rctx.bindFramebuffer(t.fbo);let r=!!t.getTexture(z);return this._compositor.compositePreMultipliedAlpha(this._bindParameters,n.getTexture(),r),n.release(),this.performanceInfo.advance(e===0?L.HUD_OCCLUDED:L.HUD),t}get _needsShadowHighlight(){return this.shadowsEnabled&&this._plugins.produces(6,2)}_renderHighlightPrepass(){if(!this._hasHighlights)return;let{fboCache:e,_rctx:t,_bindParameters:n}=this,{width:r,height:i}=this._framebuffer.size,{highlights:a}=n,o=a.length>fe?3:1,s=e.acquire(r,i,`highlights`,o);s.acquireDepth(14);let c=this._plugins.produces(10,0);return c&&this._framebuffer.color.fbo&&s.fbo&&t.blitFramebuffer(this._framebuffer.color.fbo,s.fbo,1024),t.bindFramebuffer(s.fbo),t.gl.clearBufferuiv(6144,0,[0,0,0,0]),c||t.clear(1024),this._bindParameters.output=10,t.bindFramebuffer(s.fbo),pe(t,e,r,i,n,()=>this._renderHighlightGeometries()),s.detachDepth(),this.performanceInfo.advance(L.HIGHLIGHTS),s.retain(this._nodes.require(`highlights`,...E)+this._nodes.optional(`highlights`,...E)-1),s}_renderHighlightGeometries(){this._plugins.render(...ke),this._rctx.clear(256),this._renderHUDElements(2)}_renderShadowAccumulation(e){let t=this._shadowAccumulator;if(!t)return;t.updateDepthRange(e);let n=t.requireGeometryDepth;this._bindParameters.output=0;let r=this._nodes.produce(C.SHADOW_ACCUMULATION,this._pluginInput);t.didAccumulate&&this.performanceInfo.advance(L.ACCUMULATED_SHADOWS),this._pluginInput.set(C.SHADOW_ACCUMULATION,null),r?.release(),n&&(this._bindParameters.depth=s(this._bindParameters.depth))}renderShadowAccumulationShadowMap(e,t,n,r,i){let a=this.stage.view.qualitySettings.maximumPixelRatio;n.start(e,r,i,!0,a),this._renderShadowCascades(5,n),e.setGLViewport(this._rctx),this._ensureBindParametersCamera(e,t)}_precompileTransparentGeometry(){se(this._bindParameters.output)?(this._bindParameters.output=1,this._plugins.precompile(...U),this._hasTransparentGeometry&&this._plugins.precompile(15),this._bindParameters.output=2,this._plugins.precompile(...U),this._hasTransparentGeometry&&this._plugins.precompile(15),this._bindParameters.output=0):this._plugins.precompile(...U)}_renderOIT(e,t=2){let n=e===1,{width:r,height:i}=this._framebuffer.size,a=n?()=>this._renderHUDElements(t):()=>this._renderTransparentGeometry(),s=this._bindParameters,c=s.useFloatBlend.value?8:5,l=s.output;s.output=1;let u=n?`oit hud`:`oit`,d=this.fboCache.acquire(r,i,u,c).acquireColor(z,this.hasFloatBlend?7:0,`oit alpha`),f=s.hasEmission&&(e===0||t!==1);f&&d.acquireColor(B,c,`oit emissive`),n||d.attachDepth(this._framebuffer.depth),this._rctx.bindFramebuffer(d.fbo),this._rctx.clearFramebuffer(j),f&&this._rctx.clearBuffer(2,j),a(),d.detachDepth(),s.output=2;let p=this.fboCache.acquire(r,i,n?`oit front hud`:`oit front`);f&&p.acquireColor(z,c,`oit front emissive`),n?p.acquireDepth(this._hudDepthFormat):p.attachDepth(this._framebuffer.depth),this._rctx.bindFramebuffer(p.fbo),this._rctx.clearFramebuffer(S,n),a(),p.detachDepth();let m=this._pluginsHas.occludedHudElements&&!n,h=m&&s.emissions!==0?B:z;s.hudOcclusion=o(this._bindParameters.hudOcclusion),s.output=0;let g;return n?(g=this.fboCache.acquire(r,i,`oit composite hud`),this._rctx.bindFramebuffer(g.fbo),this._rctx.setClearColor(0,0,0,1e-13),this._rctx.clear(16384)):(s.emissions!==0&&this._framebuffer.ensureEmissionAttachment(),m&&(this._framebuffer.color.acquireColor(h,0,`hud occlusion`),this._rctx.clearBuffer(h-R,S)),this._framebuffer.bind()),this._oitBlend.blend(this._rctx,d,p,s,m,e,this._fboCache.debugCallback),g?.detachDepth(),n||(f&&(this._bindParameters.emissions=3),m&&(s.hudOcclusion=this._framebuffer.color.obtainAttachment(h))),p.release(),d.release(),s.output=l,g}get _hudDepthFormat(){return this.isFeatureEnabled(7)?14:13}get _needsOpaquePass(){return this.plugins.produces(0,...H)||this.plugins.produces(5,...H)||this.plugins.produces(3,3)}_renderOpaque(){let e=this._needsOpaquePass;e&&(this._plugins.render(0,1),this._pluginInput.set(C.GROUND_DEPTH,this._blitGroundDepth()),this._plugins.render(2,3));let t=this._framebuffer;t.update(t=>this._renderNodes(w.OPAQUE,t,e)),this.fboCache.debugCallback?.(w.OPAQUE,t.color.fbo),t.update(e=>this._renderNodes(C.OPAQUE_ENVIRONMENT,e)),this.fboCache.debugCallback?.(C.OPAQUE_ENVIRONMENT,t.color.fbo),this._renderEdges(1)}_renderPreTransparent(){this._framebuffer.update(e=>this._renderNodes(C.GAUSSIAN_SPLAT,e)),this.fboCache.debugCallback?.(C.GAUSSIAN_SPLAT,this._framebuffer.color.fbo),this._framebuffer.update(e=>this._renderNodes(C.OPAQUE_OCCLUSION_QUERY,e)),this.fboCache.debugCallback?.(C.OPAQUE_OCCLUSION_QUERY,this._framebuffer.color.fbo),this._framebuffer.update(e=>this._renderNodes(C.VOXEL,e)),this.fboCache.debugCallback?.(C.VOXEL,this._framebuffer.color.fbo)}_renderTransparent(){let e=this._framebuffer;if(this._renderHiddenTransparentEdges(),this._hasTransparentGeometry&&this._renderOIT(0),e.update(e=>this._renderNodes(w.TRANSPARENT,e,this._hasTransparentGeometry)),this.fboCache.debugCallback?.(w.TRANSPARENT,e.color.fbo),this._hasTransparentGeometry||this._plugins.render(15),this._renderEdges(0),this._bindParameters.ssao=o(this._bindParameters.ssao),e.update(e=>this._renderNodes(C.TRANSPARENT_NO_DEPTH,e)),this.fboCache.debugCallback?.(C.TRANSPARENT_NO_DEPTH,e.color.fbo),this._framebuffer.bind(),this._plugins.render(8),this._bindParameters.hasEmission){let e=this._rctx.setDrawBuffers([De,z]);this._bindParameters.transparentWithoutDepthEmissionDimmingPass=!0,this._plugins.render(8),this._bindParameters.transparentWithoutDepthEmissionDimmingPass=!1,this._rctx.setDrawBuffers(e)}this.performanceInfo.advance(L.TRANSPARENT_MATERIAL_WITHOUT_DEPTH)}_renderNodes(e,t,n=!1){if(t.setName(e),this._pluginInput.set(e,t),!this._nodes.produces(e))return n&&this.performanceInfo.advance(e),t;let r=this._nodes.render(t,this._pluginInput,this._releaseNodeInputs);return this.performanceInfo.advance(e),this._fboCache.debugCallback?.(e,r.fbo),r}_renderInternalNodeCategory(e,t){if(!t)return;let n=t.name;try{this._renderNodes(e,t)}finally{this._pluginInput.set(e,null),t.setName(n)}}_3dGeometryRendered(){let e=this._bindParameters;this.hasReflections&&(e.depth=s(e.depth),e.reprojection.lastFrameColor=s(e.reprojection.lastFrameColor)),e.shadowMap.disposeOutput(5);let t=this._framebuffer.color.getAttachment(z)?.attachment;if(this.hasGlobalIllumination&&t){let{width:n,height:r}=this._framebuffer.size,i=e.useFloatBlend.value?8:5;e.reprojection.lastFrameEmission=this.fboCache.acquire(n,r,`emissive`,i),this._blit.blitTexture(t,e,e.reprojection.lastFrameEmission.fbo)}}_ensureBindParameters(e,t){this._ensureBindParametersCamera(e,t),this._ensureBindParametersWeatherFader(),this._ensureBindParametersScreenSpaceReflections(),this._ensureBindParametersReprojection()}_ensureBindParametersCamera(e,t){this._bindParameters.camera=e,this._bindParameters.contentCamera=t}_ensureBindParametersWeatherFader(){this.stage.viewingMode===1&&(this._bindParameters.clouds.data&&(this._bindParameters.clouds.fade(this._bindParameters.camera,this.renderContext.time,this.stage.view.qualitySettings.fadeDuration,this.stage.view.state.stationary),this.weatherFader?.cleanupCubemap()),this._bindParameters.snowCover=this.weatherFader?.snowCover??0)}_ensureBindParametersScreenSpaceReflections(){let{time:e}=this.renderContext,{screenSpaceReflections:t}=this._bindParameters;if(this.hasReflections){this._ssrEnableTime??=e;let n=this.stage.view.qualitySettings.fadeDuration;t.fadeFactor=n>0?Math.min(n,e-this._ssrEnableTime)/n:1,t.fadeFactor<1&&this._requestRender()}else this._ssrEnableTime=null}_ensureBindParametersReprojection(){if(!(this.hasReflections||this.hasGlobalIllumination)){this._reprojectionMatrix=b;return}let{reprojection:e,camera:t}=this._bindParameters,{lastFrameCamera:n}=e,r=!n.equals(t);if(r?(_(Z,t.viewMatrix),_(X,t.projectionMatrix),v(Q,Z,X),v(Q,n.viewMatrix,Q),v(Q,n.projectionMatrix,Q),this._reprojectionMatrix=Q):this._reprojectionMatrix=b,this.hasGlobalIllumination){let{viewMatrix:t}=e;r?(v($,n.viewMatrix,Z),y(t,$)):y(t,b)}}addRenderNode(e){this._nodes.add(e),this._requestRender()}removeRenderNode(e){this._nodes.remove(e),this._requestRender()}updateLighting(e,t,n,r){this._bindParameters.updateLighting(e,t,n,r),this._requestRender(1)}get usedMemory(){return{fbos:this.fboCache.usedMemory,plugins:this._plugins.usedMemory,edges:this.edgeView?.usedMemory??0,clouds:this.weatherFader?.usedMemory??0}}get test(){}};e([m({readOnly:!0})],V.prototype,`highResolutionAtmosphere`,null),e([m()],V.prototype,`_edgeView`,void 0),e([m()],V.prototype,`updating`,null),V=e([h(`esri.views.3d.webgl-engine.lib.Renderer`)],V);const H=[0,1,2,3],U=[7,6,4,5],W=[7,6],G=[0,1,2,4,...W],K=[3,5],q=[2,4,8],J=[16,12,14,13],ke=[4,5,2,3,0,1,...W],Ae=[4,8,5,11],je={0:[13],1:[12],2:[13,12],3:[13,12]},Y=[0,1,...W],Me=[`normals`,`highlights`],X=x(),Z=x(),Q=x(),$=x();function Ne(e){return t=>e.immediate.schedule(t)}export{V as Renderer};
2
+ import{__decorate as e}from"tslib";import{update as t}from"../../../../core/arrayUtils.js";import{createTask as n}from"../../../../core/asyncUtils.js";import has from"../../../../core/has.js";import{removeMaybe as r,abortMaybe as i,destroyMaybe as a,releaseMaybe as o,releaseReferencedMaybe as s}from"../../../../core/maybe.js";import{throwIfAborted as c}from"../../../../core/promiseUtils.js";import{watch as l,syncAndInitial as u,initial as d,sync as f}from"../../../../core/reactiveUtils.js";import{signal as p}from"../../../../core/signal.js";import{property as m,subclass as h}from"../../../../core/accessorSupport/decorators.js";import{equals as g,invert as _,multiply as v,copy as y}from"../../../../core/libs/gl-matrix-2/math/mat4.js";import{IDENTITY as b,create as x}from"../../../../core/libs/gl-matrix-2/factories/mat4f64.js";import{set as ee}from"../../../../core/libs/gl-matrix-2/math/vec4.js";import{fromValues as te,ZEROS as S}from"../../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{pruneIndexArrays as ne}from"../../../../geometry/support/Indices.js";import{InternalRenderCategory as C,RenderNodeOutput as w,AllRenderNodeOutputs as T,AllInternalRenderNodeOutputs as E}from"../../webgl.js";import{minNearDistanceInMeters as re}from"../../state/NearFarHeuristic.js";import{debugFlags as ie}from"../../support/debugFlags.js";import{FBOCache as ae}from"../core/FBOCache.js";import{RenderPassManager as oe}from"../core/renderPasses/RenderPassManager.js";import{isColor as se}from"../core/shaderLibrary/ShaderOutput.js";import{RenderNodes as ce}from"../effects/RenderNodes.js";import{RenderPluginContext as le}from"../effects/RenderPluginContext.js";import{RenderPluginManager as D}from"../effects/RenderPluginManager.js";import{WeatherFader as O}from"../effects/WeatherFader.js";import{innerAtmosphereFadeStart as ue}from"../effects/atmosphere/atmosphereUtils.js";import{Blit as de}from"../effects/blit/Blit.js";import{maxHighlightsPerChannel as fe,renderHighlightBuffer as pe}from"../effects/highlight/Highlight.js";import{OITBlend as me}from"../effects/transparency/OITBlend.js";import{AnimationTimer as he}from"./AnimationTimer.js";import{AnimationTimeStep as ge}from"./AnimationTimeStep.js";import{BoundingInfo as _e}from"./BoundingInfo.js";import{Compositor as ve}from"./Compositor.js";import{DepthRange as k}from"./DepthRange.js";import{depthRangeFromScene as A}from"./depthRangeUtils.js";import{MainFramebuffer as ye}from"./MainFramebuffer.js";import{NavigationDepthCache as be}from"./NavigationDepthCache.js";import{blendingColorAlphaClear as j}from"./OrderIndependentTransparency.js";import{RenderContext as M,defaultRenderOccludedMask as N}from"./RenderContext.js";import{RendererBase as xe}from"./RendererBase.js";import{setupFeatureDefaults as P}from"./RenderFeature.js";import{RenderPluginInput as F}from"./RenderPluginInput.js";import{ShadowMap as Se}from"./ShadowMap.js";import Ce from"./SliceHelper.js";import{MergedRenderer as we}from"../materials/renderers/MergedRenderer.js";import{RenderSceneResult as I}from"../parts/renderUtils.js";import{RendererPerformanceInfo as Te,PerformanceCategory as L}from"../statistics/RendererPerformanceInfo.js";import{PixelType as Ee,ColorAttachment0 as R,ColorAttachment1 as z,ColorAttachment2 as B,DrawBufferNone as De}from"../../../webgl/enums.js";const Oe=has(`disable-feature:async-navigation-3d-depth-readback`);let V=class extends xe{constructor(e,t,n,r,i){super({stage:e}),this._techniques=n,this._rctx=r,this._requestRender=i,this._pluginsHas={occludedHudElements:!1,hudElements:!1,water:!1},this.renderPassManager=new oe,this._isRendering=!1,this._backgroundColor=te(0,0,0,1),this._sliceHelper=new Ce,this._shadowAccumulator=null,this._shadowCastOptions=null,this.sceneDepthRange=p(k.Infinite),this._state=p(2),this._hasAnimations=!1,this._animationTimestep=new ge,this._loadEdgeViewTask=null,this._edgeViewCallbacks=[],this._reprojectionMatrixVersion=p(0),this._renderHiddenTransparentEdges=()=>{},this._pluginInput=new F,this._hasTransparentGeometry=!1,this._releaseNodeInputs=e=>{for(let t of Me)e.some(({name:e})=>e===t)&&this._pluginInput.release(t)},this._testsNeedsDepth=!1,this._fboCache=new ae(r),this._compositor=new ve(r,n),this._renderStateFeatures=p(P(e.view.qualityProfile));let a=new Se(this._fboCache,e.viewingMode);this._renderContext=new M(this._rctx,a,n),this._framebuffer=new ye(this._fboCache,this._bindParameters),this._performanceInfo=new Te(this._rctx),this._blit=new de(n),this.navigationDepthCache=new be(this._rctx,this._fboCache,n,()=>this._requestRender(0)),this._nodes=new ce(this._renderContext),this._plugins=new D(new le(this._renderContext,n,t,e,i)),this._plugins.add(this.renderPassManager),this.weatherFader=new O({view:e.view,context:this._renderContext}),this.addHandles([l(()=>e.view.state.camera,()=>i(),u),l(()=>ie.EDGES_SHOW_HIDDEN_TRANSPARENT_EDGES,e=>{this._renderHiddenTransparentEdges=e?()=>this._renderEdges(0):()=>{},i()},d),l(()=>e.view.environment.background?.color,e=>{let t=e?e.toUnitRGBA():S;ee(this._backgroundColor,t[0]*t[3],t[1]*t[3],t[2]*t[3],t[3]),i()},u),l(()=>e.view.environmentView.shadowsAvailable,e=>{this._bindParameters.shadowMap.enabled=e,this._requestRender(1)},u),l(()=>this._bindParameters.clouds.fadeFactor,()=>{this._bindParameters.fadeLighting(),this._requestRender(2)},f),l(()=>this._bindParameters.clouds.data?.state,()=>i(),f),l(()=>e.view.state.highlights,e=>{this._bindParameters.highlights=e,i()},d),l(()=>e.view.environment.lighting?.type===`sun`,e=>{this._bindParameters.enableFillLights=e,this._requestRender()},u)])}destroy(){this._gpuTimerHandle=r(this._gpuTimerHandle),this._nodes.destroy(),this._framebuffer.dispose(),this._shadowAccumulator=null,this._shadowCastOptions=null,this._loadEdgeViewTask=i(this._loadEdgeViewTask),this._edgeView=a(this._edgeView),this.renderPassManager.dispose(),this.weatherFader=a(this.weatherFader),this._releaseFBOs(),this._disposeOffscreenBuffers(),this.navigationDepthCache.destroy(),this._fboCache.destroy(),this._fboCache=null,this._renderContext.destroy(),this._plugins.destroy(),this._pluginInput=null,this._oitBlendOrNil=null,this._nodes=null,this._framebuffer=null,this._performanceInfo=null,_e.prune(),we.prune(),ne()}get renderContext(){return this._renderContext}get _bindParameters(){return this._renderContext.bind}get _oitBlend(){return this._oitBlendOrNil??=new me(this._techniques),this._oitBlendOrNil}get performanceInfo(){return this._performanceInfo}updateRenderFeatures(e){this._renderStateFeatures.value=P(e),this.updateGlobalIllumination(this.stage.view.environment.lighting.globalIllumination),this._requestRender()}updateGlobalIllumination(e){let t=P(this.stage.view.qualityProfile);for(let n of[0,1,2])this.setFeatureEnabled(11,n,e),this.setFeatureEnabled(10,n,e&&n===2),this.setFeatureEnabled(3,n,!e&&(t.get(n,3)??!1))}isFeatureEnabled(e,t=this._state.value){return this._renderStateFeatures.value.get(t,e)??!1}setFeatureEnabled(e,t,n){this.isFeatureEnabled(e,t)!==n&&(this._renderStateFeatures.mutate(r=>r.set(t,e,n)),this._requestRender())}setTime(e){this._renderContext.time=e}get hasReflections(){return this._bindParameters.screenSpaceReflections.enabled=this._pluginsHas.water&&this.isFeatureEnabled(4),this._bindParameters.screenSpaceReflections.enabled}get _hasHighlights(){return this._plugins.produces(10,2,4,18,12,13,14)}hasHighlight(e){return this._plugins.hasHighlight(e)}get _hasHUDHighlights(){return this._plugins.produces(10,12,13,14)}get hasAmbientIllumination(){return this._nodes.produces(C.AMBIENT_ILLUMINATION)}get hasGlobalIllumination(){return this.stage.renderView?.globalIllumination?.enabled??!1}get hasGlobalIlluminationHighQuality(){let e=this.stage.renderView?.globalIllumination;return this.hasGlobalIllumination&&e?.hasHighQuality===!0}get hasSMAA(){return this.isFeatureEnabled(0)}get _emissions(){let e=this._plugins.emissions;return this._hasTransparentGeometry?e:+(e===1||e===3)}get hasFloatBlend(){return this._rctx.driverTest.floatBufferBlend.result&&this.isFeatureEnabled(9)}get highResolutionAtmosphere(){return this.isFeatureEnabled(2)}get fboCache(){return this._fboCache}setShadowAccumulator(e){this._shadowAccumulator=e,this._shadowCastOptions&&e.setParameters(this._shadowCastOptions)}_releaseFBOs(){this._bindParameters.hudOcclusion=o(this._bindParameters.hudOcclusion),this._bindParameters.depth=null}_disposeOffscreenBuffers(){this._framebuffer.dispose();let e=this._bindParameters;e.globalIllumination=o(e.globalIllumination),e.reprojection.lastFrameDepth=o(e.reprojection.lastFrameDepth),e.reprojection.lastFrameEmission=o(e.reprojection.lastFrameEmission),this._disposeBindBuffers()}_disposeBindBuffers(){this._bindParameters.shadowMap.disposeOutputs()}get updating(){return this._loadEdgeViewTask&&!this._loadEdgeViewTask.finished||this._edgeView?.updating||this._plugins.updating||this.weatherFader?.readyToRun||!this.isCameraFinal}loadEdgeView(){return this._loadEdgeViewTask||=n(async e=>{let{EdgeView:t}=await import(`./edgeRendering/EdgeView.js`);c(e);let n=this._edgeView=new t({rctx:this._rctx,renderSR:this.stage.view.renderSpatialReference,viewingMode:this.stage.view.stage.viewingMode,techniques:this._techniques,setNeedsRender:()=>this._requestRender(),schedule:Ne(this.stage.view.resourceController)});return this.addHandles(l(()=>n.updating,()=>this._requestRender(),f)),this._requestRender(),this._edgeViewCallbacks.forEach(e=>e(n)),this._edgeViewCallbacks.length=0,n}),this._loadEdgeViewTask.promise}withEdgeView(e){this.loadEdgeView().catch(()=>{}),this._edgeView==null?this._edgeViewCallbacks.push(e):e(this._edgeView)}get edgeView(){return this._edgeView}get isCameraFinal(){return this._reprojectionMatrixVersion.value>=0&&g(this._bindParameters.reprojection.matrix,b)}set _reprojectionMatrix(e){t(this._bindParameters.reprojection.matrix,e)&&this._reprojectionMatrixVersion.value++}get shadowsEnabled(){return!!this._bindParameters.shadowMap.enabled}setParameters(e){e.shadowCast&&(this._shadowCastOptions={...this._shadowCastOptions,...e.shadowCast},this._shadowAccumulator?.setParameters(e.shadowCast))}set slice(e){this._sliceHelper.update(e)&&this._requestRender()}get plugins(){return this._plugins}commit(e,t){return this._isRendering&&console.warn(`Renderer.modify called while rendering`),super.commit(e,t,this._plugins.context)?(this.updateHasFlags(),!0):!1}addRenderer(e){this._plugins.add(e)}removeRenderer(e){this._plugins.remove(e)}get occludedRequiresStencil(){return this._occludedRequiresOccludeeStencil||this.occludedRequiresIntegratedMeshStencil}get _occludedRequiresOccludeeStencil(){return this._bindParameters.hasOccludees&&!!(this.plugins.renderOccludedFlags&8)}get occludedRequiresIntegratedMeshStencil(){return this._plugins.produces(0,0)&&this._plugins.produces(0,9)}updateHasFlags(){let has=this._pluginsHas;has.occludedHudElements=this._plugins.produces(0,13),has.hudElements=has.occludedHudElements||this._plugins.produces(0,...J),has.water=this._plugins.produces(4,19),this._bindParameters.hasOccludees=this._plugins.hasOccludees,this._requestRender()}updateAnimation(e,t){this._animationTimer??=new he(e.camera,t),this._animationTimer.advance(e.camera,t,this._animationTimeDilation);let n=this._hasAnimations;return this._hasAnimations=this._plugins.updateAnimation(this._animationTimer),this._hasAnimations=this._nodes.updateAnimation(this._animationTimer)||this._hasAnimations,this._hasAnimations!==n&&(this._gpuTimerHandle=n?r(this._gpuTimerHandle):this.performanceInfo.enableGPUPerformanceInfo()),this._hasAnimations}get animationTimestep(){return this._animationTimestep.value}get _animationTimeDilation(){return this._animationTimestep.timeDilation}resetAnimation(){this._animationTimestep.clear()}tick(){this.fboCache.clean()}render(e,t,n=!1){try{this._isRendering=!0,this._needsOffscreenPrepass(e.camera,t)&&this._render(e,3,n).color?.release();let r=this._render(e,t,n);return t!==0&&this._disposeOffscreenBuffers(),r}catch(e){console.error(`Exception during rendering: ${e}:\n${e.stack}`)}finally{this._isRendering=!1}return new I(this._pluginInput.get(w.FINAL),null)}_needsOffscreenPrepass(e,t){return(t===1||t===2)&&(this.hasGlobalIllumination||this.hasReflections)&&(!this._framebuffer.hasColor||!this._bindParameters.reprojection.lastFrameCamera.equals(e))}_render(e,t,n){let r=t===0;this.performanceInfo.startFrame(),this.fboCache.frameStart(),this.fboCache.interactive=r,this._disposeBindBuffers();let{camera:i,contentCamera:a,mode:c,alignPixelEnabled:l}=e;this._state.value=c,this._bindParameters.frameRendererTarget=t,this._bindParameters.output=0,this._bindParameters.emissions=this._emissions,this._bindParameters.alignPixelEnabled=l,this._bindParameters.metersPerRenderUnit=this.stage.view.renderCoordsHelper.unitInMeters,this._bindParameters.decorations=!n,this._bindParameters.mainDepth=null,this._bindParameters.useFloatBlend.value=this.hasFloatBlend;let u=!n||!this._sliceHelper.isDecoration;this._bindParameters.slicePlane=u?this._sliceHelper.plane:null,this._bindParameters.viewshedEnabled=this._nodes.produces(C.VIEWSHED),this._bindParameters.laserlinesEnabled=this._nodes.produces(C.LASERLINES),this._bindParameters.shadowAnalysisEnabled=!!this._shadowAccumulator?.active,this._bindParameters.cutFillComputationEnabled=this._nodes.produces(C.CUTFILL_COMPUTATION),this._bindParameters.cutFillVisualizationEnabled=this._nodes.produces(C.CUTFILL),this._ensureBindParameters(i,a),this._plugins.sortTestsTransparentOrderedSlots(Ae),this._plugins.prepareRender(),this._hasTransparentGeometry=this._plugins.produces(1,...U),this._renderOverlay(),i.setGLViewport(this._rctx);let d=this._framebuffer,f=d.initialize(i.fullWidth,i.fullHeight,this._backgroundColor);this.hasReflections?(f?.setName(`last frame color`),this._bindParameters.reprojection.lastFrameColor?.release(),this._bindParameters.reprojection.lastFrameColor=f):f?.release(),this._bindParameters.hasShadowHighlights=this._needsShadowHighlight&&!n,this._precompilePrepasses(),this.performanceInfo.advance(L.PREPARE);let p=this._computeShadowDepthRange(i);this._pluginInput.set(`normals`,this._renderNormals()),this._renderAmbientIlluminationAndDepth(),this._renderShadowMap(i,a,this._bindParameters.lighting.mainLight.direction,p),this._renderShadowAccumulation(p),d.bind(),this._bindParameters.mainDepth=d.depth.attachment,this._precompileShaders(r),this._bindParameters.output=0,this._renderOpaque(),this._renderPreTransparent(),this._renderTransparent(),this._3dGeometryRendered(),d.update(e=>this._renderNodes(C.CUTFILL_COMPUTATION,e)),this._pluginInput.set(C.FOCUSAREA_MASK,this._renderFocusAreaMask()),d.update(e=>this._renderNodes(C.TRANSPARENT_ENVIRONMENT,e)),d.update(e=>this._renderNodes(C.VIEWSHED,e)),d.update(e=>this._renderNodes(C.LASERLINES,e)),this._nodes.requireGeometryDepth&&(this._bindParameters.depth=s(this._bindParameters.depth)),d.update(e=>this._renderNodes(C.FOCUSAREA,e)),this._pluginInput.release(C.FOCUSAREA_MASK),d.update(e=>this._renderNodes(C.CUTFILL,e)),this._pluginInput.release(C.GROUND_DEPTH),d.update(e=>this._renderNodes(C.OCCLUDED,e)),this._pluginInput.set(`highlights`,this._renderHighlightPrepass());let m=t===2?this._renderObjectAndLayerIdColor():null;d.update(e=>this._renderNodes(w.COMPOSITE,e)),this._bindParameters.shadowMap.disposeOutputs(),this._bindParameters.shadowHighlight=o(this._bindParameters.shadowHighlight),d.update(e=>this._renderNodes(C.ANTIALIASING,e));let h=this._hasTransparentGeometry?2:1,g=this._bindParameters.emissions;this._bindParameters.emissions=0,this._hasHUDHighlights&&d.update(e=>this._renderHUD(h,e)),d.update(e=>this._renderNodes(C.HIGHLIGHT,e)),this._hasHUDHighlights||d.update(e=>this._renderHUD(h,e)),this._bindParameters.emissions=g,d.update(e=>this._renderNodes(C.MAGNIFIER,e)),d.update(e=>this._renderNodes(w.FINAL,e)),r&&(this._blit.toFramebuffer(d.color,this._bindParameters),Oe||c!==2&&c!==0||this.navigationDepthCache.update(this._bindParameters,d.depth.attachment,this._renderContext.time)),this._bindParameters.reprojection.lastFrameDepth?.release(),this.hasGlobalIllumination&&(this._bindParameters.reprojection.lastFrameDepth=this._bindParameters.depth),this._testsNeedsDepth&&(this._bindParameters.depth=s(this._bindParameters.depth)),this._releaseFBOs(),d.releaseDepth(),this._bindParameters.reprojection.lastFrameCamera.copyFrom(this._bindParameters.camera),this.fboCache.frameEnd();let _;return r||(_=d.color,_.retain()),this.performanceInfo.finishFrame(),new I(_,m)}_precompileShaders(e){++this._plugins.context.techniques.precompiling;let t=this._bindParameters;t.output=0;let n=t.emissions;if(this._precompileOpaqueGeometry(),this._nodes.precompile(C.OPAQUE_ENVIRONMENT,C.GAUSSIAN_SPLAT,C.OPAQUE_OCCLUSION_QUERY,C.VOXEL),this._precompileOpaqueGeometry(),t.output=3,this._plugins.precompile(...W),t.output=0,this._plugins.precompile(...W),this._hasTransparentGeometry){let e=this._pluginsHas.occludedHudElements;this._oitBlend.precompile(t,e,0),this._pluginsHas.hudElements&&this._oitBlend.precompile(t,!1,1),this._precompileTransparentGeometry(),t.hasTransparentEmission&&(t.emissions=3)}this._nodes.precompile(C.FOCUSAREA_MASK),this._compositor.precompile(this._usesPremultipliedAlphaBlit,!!this._needsEdges,t),this._hasTransparentGeometry||this._plugins.precompile(15),this._nodes.precompile(C.TRANSPARENT_ENVIRONMENT,C.VIEWSHED,C.CUTFILL_COMPUTATION,C.CUTFILL,C.LASERLINES,C.FOCUSAREA,C.OCCLUDED,C.ANTIALIASING),t.highlightMixTexture=t.highlights.length>1?this._rctx.emptyTexture:null,this._precompileHUD(0);let r=t.emissions;t.emissions=0,this._precompileHUD(0),this._precompileHUD(1),t.emissions=r,this._hasHighlights&&(t.highlights.forEach((e,n)=>{t.highlightLevel=n,this._precompileAllGeometry(10),this._hasHUDHighlights&&this._plugins.precompile(13,12)}),t.highlightLevel=null,this._nodes.precompile(C.HIGHLIGHT)),t.highlightMixTexture=null,this._nodes.precompile(w.COMPOSITE,C.MAGNIFIER),this._nodes.precompile(C.TRANSPARENT_NO_DEPTH),this._plugins.precompile(8),t.hasOpaqueEmission&&(t.transparentWithoutDepthEmissionDimmingPass=!0,this._plugins.precompile(8),t.transparentWithoutDepthEmissionDimmingPass=!1),e&&this._blit.precompile(),t.emissions=n,--this._plugins.context.techniques.precompiling}_renderFocusAreaMask(){let e=this._nodes.produce(C.FOCUSAREA_MASK,this._pluginInput);return e&&this.performanceInfo.advance(L.FOCUS_AREA_MASK),e}_renderObjectAndLayerIdColor(){if(!this._nodes.produces(C.OBJECT_AND_LAYER_ID_COLOR))return null;let e=this._bindParameters.output;++this._techniques.precompiling;let{width:t,height:n}=this._framebuffer.size,r=this.fboCache.acquire(t,n,C.OBJECT_AND_LAYER_ID_COLOR).acquireDepth(14);return r=this._renderNodes(C.OBJECT_AND_LAYER_ID_COLOR,r),--this._techniques.precompiling,this._bindParameters.output=e,r}finish(e){this._hasAnimations||this._animationTimestep.clear();let t=this.performanceInfo.gpuSamplingEnabled,n=e===0,r=n?this.performanceInfo.elapsedTime:0;if(n||t){let e=0;t?e=this.performanceInfo.totalGPUTimeSampler.last:(this._rctx.gl.finish(),e=this.performanceInfo.elapsedTime);let i=Math.max(r,e);this._animationTimestep.frame(i,n)}}readAccumulatedShadow(e){return this._shadowAccumulator?.readAccumulatedShadow(e[0],e[1])??0}readMainDepth(e,t){let{mainDepth:n,camera:r}=this._bindParameters;if(!n)return;let i=this.fboCache.acquire(this._framebuffer.size.width,this._framebuffer.size.height,`linear depth`);this._rctx.bindFramebuffer(i.fbo),r.setGLViewport(this._rctx),this._rctx.setScissorRect(e[0],e[1],e[2],e[3]),this._rctx.setScissorTestEnabled(!0),this._rctx.clearFramebuffer(S),this._compositor.blitDepthToLinearDepth(this._bindParameters,n),this._rctx.setScissorTestEnabled(!1),this._rctx.setScissorRect(0,0,this._rctx.gl.canvas.width,this._rctx.gl.canvas.width),i.fbo?.readPixels(e[0],e[1],e[2],e[3],6408,Ee.UNSIGNED_BYTE,t),i.release()}get _needsEdges(){return this._edgeView?.shouldRender()?this._edgeView:null}_renderEdges(e){let t=this._needsEdges;if(!t)return;let{width:n,height:r}=this._framebuffer.size,i=this.fboCache.acquire(n,r,`edges`);i.attachDepth(this._framebuffer.depth),this._rctx.bindFramebuffer(i.fbo),this._rctx.clearFramebuffer(S),t.render(this._bindParameters,e),i.detachDepth(),this._framebuffer.bind(),this._compositor.composite(this._bindParameters,i.getTexture()),i.release(),this.performanceInfo.advance(e===1?L.OPAQUE_EDGES:L.TRANSPARENT_EDGES)}_renderOverlay(){this._bindParameters.overlay=this.overlay?.render(this._renderContext.time),this._bindParameters.overlay&&this.performanceInfo.advance(L.OVERLAY)}_renderShadowMap(e,t,n,r){if(!this.shadowsEnabled)return;let i=this._bindParameters.shadowMap;if(i.start(e,n,r,this.isFeatureEnabled(5),this.stage.view.qualitySettings.maximumPixelRatio),this._needsShadowHighlight){this._renderShadowCascades(6,i),e.setGLViewport(this._rctx),this._ensureBindParametersCamera(e,t);let n=this._bindParameters.output;this._bindParameters.output=0,this._bindParameters.shadowHighlight=this._nodes.produce(C.SHADOW_HIGHLIGHT,this._pluginInput),this._bindParameters.output=n,i.disposeOutput(6),i.clear(),this._renderShadowCascades(7,i)}else this._renderShadowCascades(5);e.setGLViewport(this._rctx),this._ensureBindParametersCamera(e,this._bindParameters.contentCamera),this._needsShadowHighlight&&(this._bindParameters.depth=s(this._bindParameters.depth)),this.performanceInfo.advance(C.SHADOWMAP)}_precompileShadowCascades(e){this._bindParameters.shadowMap.cascades.length!==0&&this._precompileAllGeometry(e)}_renderShadowCascades(e,t=this._bindParameters.shadowMap){let n=this._bindParameters.output,r=e!==6;t.bindFramebuffer();for(let n of t.cascades)n.camera.setGLViewport(this._rctx),this._ensureBindParametersCamera(n.camera,n.camera),this.renderAllGeometry(e),r&&this._renderShadowNodes(t.renderTarget);t.finish(e),this._bindParameters.output=n}_renderShadowNodes(e){this._renderInternalNodeCategory(C.SHADOWMAP,e)}get _needsDepth(){return+this._nodes.requireGeometryDepth+ +this.hasReflections+ +this.hasGlobalIllumination+ +this._testsNeedsDepth+ +this._needsShadowHighlight}get _usesPremultipliedAlphaBlit(){return this._pluginsHas.hudElements}_renderAmbientIlluminationAndDepth(){let e=this._bindParameters;e.depth=o(this._bindParameters.depth);let t=this._pluginInput.get(`normals`);if(t){let n=this._nodes.produce(C.AMBIENT_ILLUMINATION,this._pluginInput);this._pluginInput.set(C.AMBIENT_ILLUMINATION,n),this._releaseGlobalIlluminationBuffers(),e.ssao=this.hasGlobalIllumination?null:n,e.globalIllumination=this.hasGlobalIllumination?n:null,e.globalIlluminationEnabled=e.globalIllumination!=null,n&&this.performanceInfo.advance(this.hasGlobalIlluminationHighQuality?L.AMBIENT_ILLUMINATION_HIGH_QUALITY:L.AMBIENT_ILLUMINATION);let r=this._needsDepth;if(r){let n=t.obtainAttachment(R);this._rctx.bindFramebuffer(t.fbo),this._rctx.clear(1024),this._renderGeometryWithoutNormals(3),e.depth=t.obtainDepthTexture(),e.depth?.retain(r-1),t.attachColor(n,R),n?.release(),this.performanceInfo.advance(L.DEPTH)}else t.detachDepth();this.hasAmbientIllumination&&this._pluginInput.release(`normals`)}else this._releaseGlobalIlluminationBuffers(),e.ssao=null,this._pluginInput.set(C.AMBIENT_ILLUMINATION,null),this._renderAllGeometryDepth()}_renderAllGeometryDepth(){let e=this._needsDepth;if(e===0)return;let{width:t,height:n}=this._framebuffer.size,r=this.fboCache.acquire(t,n,`geometry depth`,14);this._rctx.bindFramebuffer(r.fbo),this._rctx.clear(1280),this.renderAllGeometry(3),this._renderGaussianSplatPrepassDepth(r),this._bindParameters.depth=r.obtainDepthTexture(),this._bindParameters.depth?.retain(e-1),r.release(),this.performanceInfo.advance(L.DEPTH)}_renderGaussianSplatPrepassDepth(e){let t=this._shadowAccumulator;if(!t?.active||!t.requireGeometryDepth)return;let n=this._bindParameters.output;this._bindParameters.output=3,this._renderInternalNodeCategory(C.GAUSSIAN_SPLAT_DEPTH,e),this._bindParameters.output=n}_renderGaussianSplatDepthAndNormals(e){let t=this._bindParameters.output;this._bindParameters.output=4,this._renderInternalNodeCategory(C.GAUSSIAN_SPLAT_DEPTH,e),this._bindParameters.output=t}get _needsShadowDepthRange(){return this._bindParameters.shadowMap.enabled||!!this._shadowAccumulator?.active}_computeShadowDepthRange(e){if(!this._needsShadowDepthRange)return k.Zero;let t=A(e,this._plugins.plugins,this.stage.layers,0);return t.union(this._plugins.queryDepthRange(e)),t.union(this._nodes.queryDepthRange(C.SHADOWMAP,e)),t.near=Math.max(e.near,t.near),t.far=Math.min(e.far,t.far),t}updateSceneDepthRange(e){if(!this.stage.view.state.isGlobal||this.stage.view.renderCoordsHelper.getAltitude(e.eye)<ue){this.sceneDepthRange.value=k.Infinite;return}let t=e.clone();t.near=re,t.far=1e10;let n=A(t,this._plugins.plugins,this.stage.layers,1);n.union(this._plugins.queryDepthRange(t)),this.sceneDepthRange.value.equals(n)||(this.sceneDepthRange.value=n)}get _normalsRequired(){return this._nodes.require(`normals`,...T,C.VIEWSHED,C.LASERLINES)+ +!!this.hasAmbientIllumination}_precompilePrepasses(){let e=!!this._normalsRequired;if(e?(this._precompilePlugins(4,G),this._needsDepth&&this._precompilePlugins(3,K)):this._needsDepth&&this._precompileAllGeometry(3),this.shadowsEnabled&&(this._needsShadowHighlight?(this._nodes.precompile(C.SHADOW_HIGHLIGHT),this._precompileShadowCascades(6),this._precompileShadowCascades(7)):this._precompileShadowCascades(5)),this._shadowAccumulator?.active&&(this._nodes.precompile(C.SHADOW_ACCUMULATION),this._precompileAllGeometry(5)),this._shadowAccumulator?.active||e){let t=this._bindParameters.output;this._bindParameters.output=e?4:3,this._nodes.precompile(C.GAUSSIAN_SPLAT_DEPTH),this._bindParameters.output=t}(this.shadowsEnabled||this._shadowAccumulator?.active)&&this._nodes.precompile(C.SHADOWMAP),this.hasAmbientIllumination&&e&&this._nodes.precompile(C.AMBIENT_ILLUMINATION)}_renderNormals(){let e=this._normalsRequired;if(e===0)return;let{width:t,height:n}=this._framebuffer.size,r=this.fboCache.acquire(t,n,`normals`);r.acquireDepth(14),this._rctx.bindFramebuffer(r.fbo),this._rctx.clearFramebuffer(S,!0,!0),this._bindParameters.output=4,this._plugins.render(...G),this._renderGaussianSplatDepthAndNormals(r);let i=this._nodes.optional(`normals`,...T,C.VIEWSHED);return r.retain(e+i-1),this.performanceInfo.advance(L.NORMALS),r}_releaseGlobalIlluminationBuffers(){let e=this._bindParameters;e.reprojection.lastFrameDepth=o(e.reprojection.lastFrameDepth),e.reprojection.lastFrameEmission=o(e.reprojection.lastFrameEmission),e.globalIllumination=s(e.globalIllumination),e.globalIlluminationEnabled=!1}_precompileAllGeometry(e){let t=this._bindParameters.output;this._bindParameters.output=e,this._precompileOpaqueGeometry(),this._precompileTransparentGeometry(),this._plugins.precompile(...W),this._bindParameters.output=t}renderAllGeometry(e){this._bindParameters.output=e,this._renderOpaqueAndTransparentGeometry(e),this._renderTransparentGround()}precompileSlots(e,...t){for(let n of t)this._bindParameters.slot=n,e.precompile(this._renderContext)}precompileOccludedSlots(e,t){for(let n of t)this._renderContext.renderOccludedMask=n,this.precompileSlots(e,...q);this._renderContext.renderOccludedMask=N}renderSlots(e,...t){for(let n of t)this._bindParameters.slot=n,e.forAll(e=>{let t=e.acquireTechniques(this._renderContext);t&&e.render(this._renderContext,t)})}renderOccludedSlots(e,t){this._renderContext.renderOccludedMask=t,this.plugins.renderOccludedFlags>1&&this._plugins.render(9),this.renderSlots(e,...q),this._renderContext.renderOccludedMask=N}renderHUD(e){this._bindParameters.hudRenderStyle=e,this._plugins.render(...je[e])}_renderHUDElements(e){this._bindParameters.hudRenderStyle=e,this._plugins.render(16),this.renderHUD(e),this._bindParameters.hudRenderStyle=e,this._plugins.render(14)}precompileViewshedShadowMap(){let e=this._bindParameters.output;this._bindParameters.output=8,this._precompileAllGeometry(8),this._nodes.precompile(C.SHADOWMAP),this._bindParameters.output=e}precompileCutFillDepth(){this._precompilePlugins(9,Y)}_precompilePlugins(e,t){let n=this._bindParameters.output;this._bindParameters.output=e,this._plugins.precompile(...t),this._bindParameters.output=n}renderViewshedShadowMap(e,t){let{camera:n,contentCamera:r}=this._bindParameters,i=this._bindParameters.output;e.setGLViewport(this._rctx),this._ensureBindParametersCamera(e,e),this.renderAllGeometry(8),this._renderShadowNodes(t),this._ensureBindParametersCamera(n,r),this._bindParameters.camera.setGLViewport(this._rctx),this._bindParameters.output=i}renderCutFillDepth(e){let{camera:t,contentCamera:n}=this._bindParameters,r=this._bindParameters.output;e.setGLViewport(this._rctx),this._ensureBindParametersCamera(e,e),this._bindParameters.output=9,this._plugins.render(...Y),this._ensureBindParametersCamera(t,n),t.setGLViewport(this._rctx),this._bindParameters.output=r}get _needsGroundDepth(){return this._bindParameters.cutFillVisualizationEnabled}_blitGroundDepth(){if(!this._needsGroundDepth)return null;let{width:e,height:t}=this._framebuffer.size,n=this.fboCache.acquire(e,t,C.GROUND_DEPTH,14);return this._rctx.blitFramebuffer(this._framebuffer.color.fbo,n.fbo,256),this._framebuffer.bind(),n}_renderOpaqueAndTransparentGeometry(e){this._bindParameters.output=e,this._renderOpaqueGeometry(),this._renderTransparentGeometry()}_renderGeometryWithoutNormals(e){this._bindParameters.output=e,this._plugins.render(...K)}_precompileOpaqueGeometry(){this._needsOpaquePass&&(this._plugins.precompile(...H),this._nodes.precompile(`opaque-color`))}_renderOpaqueGeometry(){this._plugins.render(...H)}_renderTransparentGeometry(){this._plugins.render(...U),this._hasTransparentGeometry&&this._plugins.render(15)}_renderTransparentGround(){this._plugins.render(...W)}_precompileHUD(e){if(!this._pluginsHas.hudElements)return;let t=this._bindParameters.output,n=this._bindParameters.hudRenderStyle,r=this._bindParameters.emissions;this._bindParameters.emissions=0,this._bindParameters.hudRenderStyle=e,this._bindParameters.output=1,this._plugins.precompile(...J),this._bindParameters.output=2,this._plugins.precompile(...J),this._bindParameters.output=0,this._oitBlend.precompile(this._bindParameters,!1,1),this._hasHighlights&&(this._bindParameters.output=10,this._plugins.precompile(...J)),this._bindParameters.emissions=r,this._bindParameters.output=t,this._bindParameters.hudRenderStyle=n}_renderHUD(e,t){if(!this._pluginsHas.hudElements)return t;let n=this._renderOIT(1,e);this._rctx.bindFramebuffer(t.fbo);let r=!!t.getTexture(z);return this._compositor.compositePreMultipliedAlpha(this._bindParameters,n.getTexture(),r),n.release(),this.performanceInfo.advance(e===0?L.HUD_OCCLUDED:L.HUD),t}get _needsShadowHighlight(){return this.shadowsEnabled&&this._plugins.produces(6,2)}_renderHighlightPrepass(){if(!this._hasHighlights)return;let{fboCache:e,_rctx:t,_bindParameters:n}=this,{width:r,height:i}=this._framebuffer.size,{highlights:a}=n,o=a.length>fe?3:1,s=e.acquire(r,i,`highlights`,o);s.acquireDepth(14);let c=this._plugins.produces(10,0);return c&&this._framebuffer.color.fbo&&s.fbo&&t.blitFramebuffer(this._framebuffer.color.fbo,s.fbo,1024),t.bindFramebuffer(s.fbo),t.gl.clearBufferuiv(6144,0,[0,0,0,0]),c||t.clear(1024),this._bindParameters.output=10,t.bindFramebuffer(s.fbo),pe(t,e,r,i,n,()=>this._renderHighlightGeometries()),s.detachDepth(),this.performanceInfo.advance(L.HIGHLIGHTS),s.retain(this._nodes.require(`highlights`,...E)+this._nodes.optional(`highlights`,...E)-1),s}_renderHighlightGeometries(){this._plugins.render(...ke),this._rctx.clear(256),this._renderHUDElements(2)}_renderShadowAccumulation(e){let t=this._shadowAccumulator;if(!t)return;t.updateDepthRange(e);let n=t.requireGeometryDepth;this._bindParameters.output=0;let r=this._nodes.produce(C.SHADOW_ACCUMULATION,this._pluginInput);t.didAccumulate&&this.performanceInfo.advance(L.ACCUMULATED_SHADOWS),this._pluginInput.set(C.SHADOW_ACCUMULATION,null),r?.release(),n&&(this._bindParameters.depth=s(this._bindParameters.depth))}renderShadowAccumulationShadowMap(e,t,n,r,i){let a=this.stage.view.qualitySettings.maximumPixelRatio;n.start(e,r,i,!0,a),this._renderShadowCascades(5,n),e.setGLViewport(this._rctx),this._ensureBindParametersCamera(e,t)}_precompileTransparentGeometry(){se(this._bindParameters.output)?(this._bindParameters.output=1,this._plugins.precompile(...U),this._hasTransparentGeometry&&this._plugins.precompile(15),this._bindParameters.output=2,this._plugins.precompile(...U),this._hasTransparentGeometry&&this._plugins.precompile(15),this._bindParameters.output=0):this._plugins.precompile(...U)}_renderOIT(e,t=2){let n=e===1,{width:r,height:i}=this._framebuffer.size,a=n?()=>this._renderHUDElements(t):()=>this._renderTransparentGeometry(),s=this._bindParameters,c=s.useFloatBlend.value?8:5,l=s.output;s.output=1;let u=n?`oit hud`:`oit`,d=this.fboCache.acquire(r,i,u,c).acquireColor(z,this.hasFloatBlend?7:0,`oit alpha`),f=s.hasEmission&&(e===0||t!==1);f&&d.acquireColor(B,c,`oit emissive`),n||d.attachDepth(this._framebuffer.depth),this._rctx.bindFramebuffer(d.fbo),this._rctx.clearFramebuffer(j),f&&this._rctx.clearBuffer(2,j),a(),d.detachDepth(),s.output=2;let p=this.fboCache.acquire(r,i,n?`oit front hud`:`oit front`);f&&p.acquireColor(z,c,`oit front emissive`),n?p.acquireDepth(this._hudDepthFormat):p.attachDepth(this._framebuffer.depth),this._rctx.bindFramebuffer(p.fbo),this._rctx.clearFramebuffer(S,n),a(),p.detachDepth();let m=this._pluginsHas.occludedHudElements&&!n,h=m&&s.emissions!==0?B:z;s.hudOcclusion=o(this._bindParameters.hudOcclusion),s.output=0;let g;return n?(g=this.fboCache.acquire(r,i,`oit composite hud`),this._rctx.bindFramebuffer(g.fbo),this._rctx.setClearColor(0,0,0,1e-13),this._rctx.clear(16384)):(s.emissions!==0&&this._framebuffer.ensureEmissionAttachment(),m&&(this._framebuffer.color.acquireColor(h,0,`hud occlusion`),this._rctx.clearBuffer(h-R,S)),this._framebuffer.bind()),this._oitBlend.blend(this._rctx,d,p,s,m,e,this._fboCache.debugCallback),g?.detachDepth(),n||(f&&(this._bindParameters.emissions=3),m&&(s.hudOcclusion=this._framebuffer.color.obtainAttachment(h))),p.release(),d.release(),s.output=l,g}get _hudDepthFormat(){return this.isFeatureEnabled(7)?14:13}get _needsOpaquePass(){return this.plugins.produces(0,...H)||this.plugins.produces(5,...H)||this.plugins.produces(3,3)}_renderOpaque(){let e=this._needsOpaquePass;e&&(this._plugins.render(0,1),this._pluginInput.set(C.GROUND_DEPTH,this._blitGroundDepth()),this._plugins.render(2,3));let t=this._framebuffer;t.update(t=>this._renderNodes(w.OPAQUE,t,e)),this.fboCache.debugCallback?.(w.OPAQUE,t.color.fbo),t.update(e=>this._renderNodes(C.OPAQUE_ENVIRONMENT,e)),this.fboCache.debugCallback?.(C.OPAQUE_ENVIRONMENT,t.color.fbo),this._renderEdges(1)}_renderPreTransparent(){this._framebuffer.update(e=>this._renderNodes(C.GAUSSIAN_SPLAT,e)),this.fboCache.debugCallback?.(C.GAUSSIAN_SPLAT,this._framebuffer.color.fbo),this._framebuffer.update(e=>this._renderNodes(C.OPAQUE_OCCLUSION_QUERY,e)),this.fboCache.debugCallback?.(C.OPAQUE_OCCLUSION_QUERY,this._framebuffer.color.fbo),this._framebuffer.update(e=>this._renderNodes(C.VOXEL,e)),this.fboCache.debugCallback?.(C.VOXEL,this._framebuffer.color.fbo)}_renderTransparent(){let e=this._framebuffer;if(this._renderHiddenTransparentEdges(),this._hasTransparentGeometry&&this._renderOIT(0),e.update(e=>this._renderNodes(w.TRANSPARENT,e,this._hasTransparentGeometry)),this.fboCache.debugCallback?.(w.TRANSPARENT,e.color.fbo),this._hasTransparentGeometry||this._plugins.render(15),this._renderEdges(0),this._bindParameters.ssao=o(this._bindParameters.ssao),e.update(e=>this._renderNodes(C.TRANSPARENT_NO_DEPTH,e)),this.fboCache.debugCallback?.(C.TRANSPARENT_NO_DEPTH,e.color.fbo),this._framebuffer.bind(),this._plugins.render(8),this._bindParameters.hasEmission){let e=this._rctx.setDrawBuffers([De,z]);this._bindParameters.transparentWithoutDepthEmissionDimmingPass=!0,this._plugins.render(8),this._bindParameters.transparentWithoutDepthEmissionDimmingPass=!1,this._rctx.setDrawBuffers(e)}this.performanceInfo.advance(L.TRANSPARENT_MATERIAL_WITHOUT_DEPTH)}_renderNodes(e,t,n=!1){if(t.setName(e),this._pluginInput.set(e,t),!this._nodes.produces(e))return n&&this.performanceInfo.advance(e),t;let r=this._nodes.render(t,this._pluginInput,this._releaseNodeInputs);return this.performanceInfo.advance(e),this._fboCache.debugCallback?.(e,r.fbo),r}_renderInternalNodeCategory(e,t){if(!t)return;let n=t.name;try{this._renderNodes(e,t)}finally{this._pluginInput.set(e,null),t.setName(n)}}_3dGeometryRendered(){let e=this._bindParameters;this.hasReflections&&(e.depth=s(e.depth),e.reprojection.lastFrameColor=s(e.reprojection.lastFrameColor)),e.shadowMap.disposeOutput(5);let t=this._framebuffer.color.getAttachment(z)?.attachment;if(this.hasGlobalIllumination&&t){let{width:n,height:r}=this._framebuffer.size,i=e.useFloatBlend.value?8:5;e.reprojection.lastFrameEmission=this.fboCache.acquire(n,r,`emissive`,i),this._blit.blitTexture(t,e,e.reprojection.lastFrameEmission.fbo)}}_ensureBindParameters(e,t){this._ensureBindParametersCamera(e,t),this._ensureBindParametersWeatherFader(),this._ensureBindParametersScreenSpaceReflections(),this._ensureBindParametersReprojection()}_ensureBindParametersCamera(e,t){this._bindParameters.camera=e,this._bindParameters.contentCamera=t}_ensureBindParametersWeatherFader(){this.stage.viewingMode===1&&(this._bindParameters.clouds.data&&(this._bindParameters.clouds.fade(this._bindParameters.camera,this.renderContext.time,this.stage.view.qualitySettings.fadeDuration,this.stage.view.state.stationary),this.weatherFader?.cleanupCubemap()),this._bindParameters.snowCover=this.weatherFader?.snowCover??0)}_ensureBindParametersScreenSpaceReflections(){let{time:e}=this.renderContext,{screenSpaceReflections:t}=this._bindParameters;if(this.hasReflections){this._ssrEnableTime??=e;let n=this.stage.view.qualitySettings.fadeDuration;t.fadeFactor=n>0?Math.min(n,e-this._ssrEnableTime)/n:1,t.fadeFactor<1&&this._requestRender()}else this._ssrEnableTime=null}_ensureBindParametersReprojection(){if(!(this.hasReflections||this.hasGlobalIllumination)){this._reprojectionMatrix=b;return}let{reprojection:e,camera:t}=this._bindParameters,{lastFrameCamera:n}=e,r=!n.equals(t);if(r?(_(Z,t.viewMatrix),_(X,t.projectionMatrix),v(Q,Z,X),v(Q,n.viewMatrix,Q),v(Q,n.projectionMatrix,Q),this._reprojectionMatrix=Q):this._reprojectionMatrix=b,this.hasGlobalIllumination){let{viewMatrix:t}=e;r?(v($,n.viewMatrix,Z),y(t,$)):y(t,b)}}addRenderNode(e){this._nodes.add(e),this._requestRender()}removeRenderNode(e){this._nodes.remove(e),this._requestRender()}updateLighting(e,t,n,r){this._bindParameters.updateLighting(e,t,n,r),this._requestRender(1)}get usedMemory(){return{fbos:this.fboCache.usedMemory,plugins:this._plugins.usedMemory,edges:this.edgeView?.usedMemory??0,clouds:this.weatherFader?.usedMemory??0}}get test(){}};e([m({readOnly:!0})],V.prototype,`highResolutionAtmosphere`,null),e([m()],V.prototype,`_edgeView`,void 0),e([m()],V.prototype,`updating`,null),e([m()],V.prototype,`_loadEdgeViewTask`,void 0),V=e([h(`esri.views.3d.webgl-engine.lib.Renderer`)],V);const H=[0,1,2,3],U=[7,6,4,5],W=[7,6],G=[0,1,2,4,...W],K=[3,5],q=[2,4,8],J=[16,12,14,13],ke=[4,5,2,3,0,1,...W],Ae=[4,8,5,11],je={0:[13],1:[12],2:[13,12],3:[13,12]},Y=[0,1,...W],Me=[`normals`,`highlights`],X=x(),Z=x(),Q=x(),$=x();function Ne(e){return t=>e.immediate.schedule(t)}export{V as Renderer};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{set as e,add as t,scale as n,dist as r}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as i}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{area3dFromValues as a}from"../../../../geometry/support/triangle.js";function o(r,i,o){if(o<=0)return!1;e(r,0,0,0),e(f,0,0,0);let s=0,c=0;for(let e=0;e<o;++e){let o=e*3;i(l,o),i(u,o+1),i(d,o+2);let p=a(l,u,d);p?(t(l,l,u),t(l,l,d),n(l,l,1/3*p),t(r,r,l),s+=p):(t(f,f,l),t(f,f,u),t(f,f,d),c+=3)}return c===0&&s===0?!1:s===0?c!==0&&(n(r,f,1/c),!0):(n(r,r,1/s),!0)}function s(t,r,i){if(i<=0)return!1;e(t,0,0,0);let a=NaN,o=NaN,s=NaN,c=0;for(let e=0;e<i;e++){let n=r(l,e);(n[0]!==a||n[1]!==o||n[2]!==s)&&(t[0]+=n[0],t[1]+=n[1],t[2]+=n[2],c++),a=n[0],o=n[1],s=n[2]}return c>1&&n(t,t,1/c),c>0}function c(i,a,o,s){if(o<=0)return!1;e(i,0,0,0),e(f,0,0,0);let c=0,d=0,p=o-1,m=p+(s?2:0);for(let e=0;e<m;e+=2){let o=e<p?e:p,s=e<p?e+1:0;a(l,o),a(u,s),n(l,t(l,l,u),.5);let m=r(l,u);m>0?(t(i,i,n(l,l,m)),c+=m):c===0&&(t(f,f,l),d++)}return c===0?d!==0&&(n(i,f,1/d),!0):(n(i,i,1/c),!0)}const l=i(),u=i(),d=i(),f=i();export{c as computeAttachmentOriginLines,s as computeAttachmentOriginPoints,o as computeAttachmentOriginTriangles};
2
+ import{set as e,scale as t,add as n,dist as r}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as i}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{area3dFromValues as a}from"../../../../geometry/support/triangle.js";function o(r,i,o){if(o<=0)return!1;e(r,0,0,0),e(f,0,0,0);let s=0,c=0;for(let e=0;e<o;++e){let o=e*3;i(l,o),i(u,o+1),i(d,o+2);let p=a(l,u,d);p?(n(l,l,u),n(l,l,d),t(l,l,1/3*p),n(r,r,l),s+=p):(n(f,f,l),n(f,f,u),n(f,f,d),c+=3)}return c===0&&s===0?!1:s===0?c!==0&&(t(r,f,1/c),!0):(t(r,r,1/s),!0)}function s(n,r,i){if(i<=0)return!1;e(n,0,0,0);let a=NaN,o=NaN,s=NaN,c=0;for(let e=0;e<i;e++){let t=r(l,e);(t[0]!==a||t[1]!==o||t[2]!==s)&&(n[0]+=t[0],n[1]+=t[1],n[2]+=t[2],c++),a=t[0],o=t[1],s=t[2]}return c>1&&t(n,n,1/c),c>0}function c(i,a,o,s){if(o<=0)return!1;e(i,0,0,0),e(f,0,0,0);let c=0,d=0,p=o-1,m=p+(s?2:0);for(let e=0;e<m;e+=2){let o=e<p?e:p,s=e<p?e+1:0;a(l,o),a(u,s),t(l,n(l,l,u),.5);let m=r(l,u);m>0?(n(i,i,t(l,l,m)),c+=m):c===0&&(n(f,f,l),d++)}return c===0?d!==0&&(t(i,f,1/d),!0):(t(i,i,1/c),!0)}const l=i(),u=i(),d=i(),f=i();export{c as computeAttachmentOriginLines,s as computeAttachmentOriginPoints,o as computeAttachmentOriginTriangles};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{createRenderScreenPointArray3 as e}from"../../../../core/screenUtils.js";import{copy as t,set as n}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as r}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{fromValues as i,intersects as a,containsPoint as o,create as s,containsXY as c}from"../../../../geometry/support/aaBoundingRect.js";import{distance2 as l,fromPoints as u,create as d}from"../../../../geometry/support/lineSegment.js";import{signedDistance as f,intersectLineSegment as p}from"../../../../geometry/support/plane.js";import{containsPoint2dFromValues as m}from"../../../../geometry/support/triangle.js";function h(e,t){return e.isRectangle?o(e.bounds,t):T(t,e.points)}function g(e,t,n){let r=t[0]-n,o=t[1]-n,s=t[0]+n,c=t[1]+n;if(!a(e.bounds,i(r,o,s,c,I)))return!1;if(h(e,t))return!0;let l=n*n;for(let n of e.points){let e=n[0]-t[0],r=n[1]-t[1];if(e*e+r*r<=l)return!0}for(let n=0;n<e.points.length;n++){let r=e.points[n],i=e.points[(n+1)%e.points.length];if(M(t,r,i)<=l)return!0}return!1}function _(e,t){if(!a(e.bounds,t))return!1;if(e.isRectangle)return!0;for(let n of e.points)if(o(t,n))return!0;if(D(t,e.points))return!0;for(let n=0;n<e.points.length;n++){let r=e.points[n];if(O(r,n===e.points.length-1?e.points[0]:e.points[n+1],t))return!0}return!1}function v(e,t,n,r){let a=Math.min(t[0],n[0],r[0]),o=Math.min(t[1],n[1],r[1]),s=Math.max(t[0],n[0],r[0]),c=Math.max(t[1],n[1],r[1]);if(!_(e,i(a,o,s,c,I)))return!1;if(h(e,t)||h(e,n)||h(e,r))return!0;for(let i of e.points)if(m(t,n,r,i,U))return!0;for(let i=0;i<e.points.length;i++){let a=e.points[i],o=e.points[(i+1)%e.points.length];if(A(t,n,a,o)||A(n,r,a,o)||A(r,t,a,o))return!0}return!1}function y(e,t,n,r){let o=Math.min(t[0],n[0])-r,s=Math.min(t[1],n[1])-r,c=Math.max(t[0],n[0])+r,l=Math.max(t[1],n[1])+r;if(!a(e.bounds,i(o,s,c,l,I)))return!1;if(h(e,t)||h(e,n))return!0;let u=r*r;for(let r of e.points)if(M(r,t,n)<=u)return!0;for(let r=0;r<e.points.length;r++){let i=e.points[r],a=e.points[(r+1)%e.points.length];if(A(t,n,i,a)||j(t,n,i,a)<=u)return!0}return!1}function b(e,n,r,i,a){t(z,n),t(B,r);let o=e.projectToRenderScreen(z,L),s=e.projectToRenderScreen(B,R);if(o==null||s==null)return!1;let c=x(e,z),l=x(e,B);if(c&&l)return!1;if(c!==l){let t=c?z:B,n=c?B:z,r=c?o:s;if(!C(e,t,n)||!e.projectToRenderScreen(t,r))return!1}return i[0]=o[0],i[1]=o[1],i[2]=0,a[0]=s[0],a[1]=s[1],a[2]=0,!0}function x(e,t){return S(e,t)>0}function S(e,t){return f(e.frustum[4],t)}function C(e,t,n){return w(e,t,n,t)}function w(e,t,n,r){return p(e.frustum[4],u(t,n,H),r)}function T(e,t){return E(e[0],e[1],t)}function E(e,t,n){let r=!1;for(let i=0,a=n.length-1;i<n.length;a=i++){let o=n[i],s=n[a];o[1]>t!=s[1]>t&&e<(s[0]-o[0])*(t-o[1])/(s[1]-o[1])+o[0]&&(r=!r)}return r}function D(e,t){let n=e[0],r=e[1],i=e[2],a=e[3];return E(n,r,t)||E(i,r,t)||E(i,a,t)||E(n,a,t)}function O(e,t,n){let r=n[0],i=n[1],a=n[2],o=n[3],s=e[0],l=e[1],u=t[0],d=t[1];return s<r&&u<r||s>a&&u>a||l<i&&d<i||l>o&&d>o?!1:c(n,s,l)||c(n,u,d)?!0:k(e,t,r,i,a,i)||k(e,t,a,i,a,o)||k(e,t,a,o,r,o)||k(e,t,r,o,r,i)}function k(e,t,n,r,i,a){let o=N(e[0],e[1],t[0],t[1],n,r),s=N(e[0],e[1],t[0],t[1],i,a),c=N(n,r,i,a,e[0],e[1]),l=N(n,r,i,a,t[0],t[1]);return o!==s&&c!==l||o===0&&P(e,t,n,r)||s===0&&P(e,t,i,a)||c===0&&F(n,r,i,a,e[0],e[1])||l===0&&F(n,r,i,a,t[0],t[1])}function A(e,t,n,r){return k(e,t,n[0],n[1],r[0],r[1])}function j(e,t,n,r){return A(e,t,n,r)?0:Math.min(M(e,n,r),M(t,n,r),M(n,e,t),M(r,e,t))}function M(e,t,r){return l(u(n(z,t[0],t[1],0),n(B,r[0],r[1],0),H),n(V,e[0],e[1],0))}function N(e,t,n,r,i,a){let o=(r-t)*(i-n)-(n-e)*(a-r);return Math.abs(o)<=U?0:Math.sign(o)}function P(e,t,n,r){return F(e[0],e[1],t[0],t[1],n,r)}function F(e,t,n,r,i,a){return i>=Math.min(e,n)-U&&i<=Math.max(e,n)+U&&a>=Math.min(t,r)-U&&a<=Math.max(t,r)+U}const I=s(),L=e(),R=e(),z=r(),B=r(),V=r(),H=d(),U=1e-9;export{x as isBehindNearPlane,b as projectWorldLineSegmentToRenderScreen,h as screenPolygonContainsPoint,_ as screenPolygonIntersectsBounds,y as screenPolygonIntersectsBufferedSegment,g as screenPolygonIntersectsCircle,v as screenPolygonIntersectsTriangle};
2
+ import{createRenderScreenPointArray3 as e}from"../../../../core/screenUtils.js";import{copy as t,set as n}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as r}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{intersects as i,fromValues as a,create as o,containsPoint as s,containsXY as c}from"../../../../geometry/support/aaBoundingRect.js";import{distance2 as l,fromPoints as u,create as d}from"../../../../geometry/support/lineSegment.js";import{signedDistance as f,intersectLineSegment as p}from"../../../../geometry/support/plane.js";import{containsPoint2dFromValues as m}from"../../../../geometry/support/triangle.js";function h(e,t){return e.isRectangle?s(e.bounds,t):T(t,e.points)}function g(e,t,n){let r=t[0]-n,o=t[1]-n,s=t[0]+n,c=t[1]+n;if(!i(e.bounds,a(r,o,s,c,I)))return!1;if(h(e,t))return!0;let l=n*n;for(let n of e.points){let e=n[0]-t[0],r=n[1]-t[1];if(e*e+r*r<=l)return!0}for(let n=0;n<e.points.length;n++){let r=e.points[n],i=e.points[(n+1)%e.points.length];if(M(t,r,i)<=l)return!0}return!1}function _(e,t){if(!i(e.bounds,t))return!1;if(e.isRectangle)return!0;for(let n of e.points)if(s(t,n))return!0;if(D(t,e.points))return!0;for(let n=0;n<e.points.length;n++){let r=e.points[n];if(O(r,n===e.points.length-1?e.points[0]:e.points[n+1],t))return!0}return!1}function v(e,t,n,r){let i=Math.min(t[0],n[0],r[0]),o=Math.min(t[1],n[1],r[1]),s=Math.max(t[0],n[0],r[0]),c=Math.max(t[1],n[1],r[1]);if(!_(e,a(i,o,s,c,I)))return!1;if(h(e,t)||h(e,n)||h(e,r))return!0;for(let i of e.points)if(m(t,n,r,i,U))return!0;for(let i=0;i<e.points.length;i++){let a=e.points[i],o=e.points[(i+1)%e.points.length];if(A(t,n,a,o)||A(n,r,a,o)||A(r,t,a,o))return!0}return!1}function y(e,t,n,r){let o=Math.min(t[0],n[0])-r,s=Math.min(t[1],n[1])-r,c=Math.max(t[0],n[0])+r,l=Math.max(t[1],n[1])+r;if(!i(e.bounds,a(o,s,c,l,I)))return!1;if(h(e,t)||h(e,n))return!0;let u=r*r;for(let r of e.points)if(M(r,t,n)<=u)return!0;for(let r=0;r<e.points.length;r++){let i=e.points[r],a=e.points[(r+1)%e.points.length];if(A(t,n,i,a)||j(t,n,i,a)<=u)return!0}return!1}function b(e,n,r,i,a){t(z,n),t(B,r);let o=e.projectToRenderScreen(z,L),s=e.projectToRenderScreen(B,R);if(o==null||s==null)return!1;let c=x(e,z),l=x(e,B);if(c&&l)return!1;if(c!==l){let t=c?z:B,n=c?B:z,r=c?o:s;if(!C(e,t,n)||!e.projectToRenderScreen(t,r))return!1}return i[0]=o[0],i[1]=o[1],i[2]=0,a[0]=s[0],a[1]=s[1],a[2]=0,!0}function x(e,t){return S(e,t)>0}function S(e,t){return f(e.frustum[4],t)}function C(e,t,n){return w(e,t,n,t)}function w(e,t,n,r){return p(e.frustum[4],u(t,n,H),r)}function T(e,t){return E(e[0],e[1],t)}function E(e,t,n){let r=!1;for(let i=0,a=n.length-1;i<n.length;a=i++){let o=n[i],s=n[a];o[1]>t!=s[1]>t&&e<(s[0]-o[0])*(t-o[1])/(s[1]-o[1])+o[0]&&(r=!r)}return r}function D(e,t){let n=e[0],r=e[1],i=e[2],a=e[3];return E(n,r,t)||E(i,r,t)||E(i,a,t)||E(n,a,t)}function O(e,t,n){let r=n[0],i=n[1],a=n[2],o=n[3],s=e[0],l=e[1],u=t[0],d=t[1];return s<r&&u<r||s>a&&u>a||l<i&&d<i||l>o&&d>o?!1:c(n,s,l)||c(n,u,d)?!0:k(e,t,r,i,a,i)||k(e,t,a,i,a,o)||k(e,t,a,o,r,o)||k(e,t,r,o,r,i)}function k(e,t,n,r,i,a){let o=N(e[0],e[1],t[0],t[1],n,r),s=N(e[0],e[1],t[0],t[1],i,a),c=N(n,r,i,a,e[0],e[1]),l=N(n,r,i,a,t[0],t[1]);return o!==s&&c!==l||o===0&&P(e,t,n,r)||s===0&&P(e,t,i,a)||c===0&&F(n,r,i,a,e[0],e[1])||l===0&&F(n,r,i,a,t[0],t[1])}function A(e,t,n,r){return k(e,t,n[0],n[1],r[0],r[1])}function j(e,t,n,r){return A(e,t,n,r)?0:Math.min(M(e,n,r),M(t,n,r),M(n,e,t),M(r,e,t))}function M(e,t,r){return l(u(n(z,t[0],t[1],0),n(B,r[0],r[1],0),H),n(V,e[0],e[1],0))}function N(e,t,n,r,i,a){let o=(r-t)*(i-n)-(n-e)*(a-r);return Math.abs(o)<=U?0:Math.sign(o)}function P(e,t,n,r){return F(e[0],e[1],t[0],t[1],n,r)}function F(e,t,n,r,i,a){return i>=Math.min(e,n)-U&&i<=Math.max(e,n)+U&&a>=Math.min(t,r)-U&&a<=Math.max(t,r)+U}const I=o(),L=e(),R=e(),z=r(),B=r(),V=r(),H=d(),U=1e-9;export{x as isBehindNearPlane,b as projectWorldLineSegmentToRenderScreen,h as screenPolygonContainsPoint,_ as screenPolygonIntersectsBounds,y as screenPolygonIntersectsBufferedSegment,g as screenPolygonIntersectsCircle,v as screenPolygonIntersectsTriangle};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import e from"../../../../core/PooledArray.js";import{createScreenPointArray as t}from"../../../../core/screenUtils.js";import{distance as n,copy as r,set as i,transformMat4 as a,squaredDistance as o}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as s}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{copy as c,create as l}from"../../../../geometry/support/aaBoundingBox.js";import{intersectsTransformedAabb as u}from"../../../../geometry/support/frustumPlanes.js";import{clipPolygon as d}from"../../../../geometry/support/plane.js";import{normalFromValues as f,closestPointFromValues as p}from"../../../../geometry/support/triangle.js";import{boundingInfoSubdivisionThreshold as m}from"./intersectionConstants.js";import{screenPolygonIntersectsTriangle as h}from"./screenPolygonOverlapUtils.js";class g{constructor(e){this.primitiveIndex=e}}class _{constructor(e){this.type=e,this.distance=1/0,this.renderDistance=1/0,this.primitiveIndex=0,this.hasNormal=!1,this.point=s(),this.normal=s()}reset(){this.distance=1/0,this.renderDistance=1/0,this.hasNormal=!1}update(e,t,n,i,a=e){this.distance=e,this.renderDistance=a,this.primitiveIndex=t,r(this.point,n),this.hasNormal=i!=null,i!=null&&r(this.normal,i)}updateIfCloserFromValues(e,t,n,r,i=e){i<this.renderDistance&&this.update(e,t,n,r,i)}updateIfCloser(e){let{distance:t,renderDistance:n,primitiveIndex:r,point:i,normal:a}=e;this.updateIfCloserFromValues(t,r,i,e.hasNormal?a:null,n)}get valid(){return Number.isFinite(this.distance)}}function v(e,t,n,r,i){if(!e.visible)return null;let a=new _(4),o;o=e.boundingInfo?b(e.readPrimitivePosition,e.boundingInfo,t,n,r,i):y(t,n,r,0,e.faceCount,e.readPrimitivePosition,i,null,0);for(let e of o)a.updateIfCloser(e);return a.valid?a:null}function*y(e,t,r,i,a,o,s,c=null,l=0){if(e.camera==null)return;let{camera:u,screenPolygonPrimitiveProcessor:d}=e;for(let e=i;e<a;++e){let i=(c?.[e]??e)+l,a=c==null?i:e,p=i*3;x(T[0],o,p+0,s,a,t),x(T[1],o,p+1,s,a,t),x(T[2],o,p+2,s,a,t);let m=j,h;N.reset();let g=E;for(let e of d.processTriangle(T))S(r,e,u,g)&&(C(u.eye,g,A),h??=f(j,T[0],T[1],T[2]),N.updateIfCloserFromValues(n(u.eye,A),i,A,h?m:null));N.valid&&(yield N)}}function*b(e,t,n,r,i,a){let o;if(a==null?o=u(i.broadPhaseFrustum,t.box,r):(c(w,t.box),a.applyToAabb(w),o=u(i.broadPhaseFrustum,w,r)),!o)return;let{primitiveIndices:s}=t,l=s.length;if(l>m){let o=t.children;if(o!==void 0){for(let t of o)yield*b(e,t,n,r,i,a);return}}yield*y(n,r,i,0,l,e,a,s,0)}function x(e,t,n,r,o,s){let[c,l,u]=t(e,n);r==null?i(e,c,l,u):r.applyToVertex(e,c,l,u,o),s&&a(e,e,s)}function S(e,t,n,r){if(r.length=0,d(n.frustum[4],t,()=>r.pushNew()),r.length<3)return!1;let i=D,a=O,o=k;n.projectToScreen(r.data[0],i),n.projectToScreen(r.data[1],a);for(let t=2;t<r.length;t++){if(n.projectToScreen(r.data[t],o),h(e,i,a,o))return!0;let s=a;a=o,o=s}return!1}function C(e,t,n){let i=1/0,a=t.at(0);for(let s=1;s<t.length-1;s++){p(M,e,a,t.at(s),t.at(s+1));let c=o(e,M);c<i&&(i=c,r(n,M))}}const w=l(),T=[s(),s(),s()],E=new e({allocator:e=>e??s()}),D=t(),O=t(),k=t(),A=s(),j=s(),M=s(),N=new _(4);export{g as DrapedHit,_ as Hit,y as forEachTriangleRangeScreenPolygonHit,S as intersectConvexPolygonWithScreenPolygon,v as intersectTriangleGeometryWithScreenPolygon};
2
+ import e from"../../../../core/PooledArray.js";import{createScreenPointArray as t}from"../../../../core/screenUtils.js";import{copy as n,distance as r,set as i,transformMat4 as a,squaredDistance as o}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as s}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{copy as c,create as l}from"../../../../geometry/support/aaBoundingBox.js";import{intersectsTransformedAabb as u}from"../../../../geometry/support/frustumPlanes.js";import{clipPolygon as d}from"../../../../geometry/support/plane.js";import{normalFromValues as f,closestPointFromValues as p}from"../../../../geometry/support/triangle.js";import{boundingInfoSubdivisionThreshold as m}from"./intersectionConstants.js";import{screenPolygonIntersectsTriangle as h}from"./screenPolygonOverlapUtils.js";class g{constructor(e){this.primitiveIndex=e}}class _{constructor(e){this.type=e,this.distance=1/0,this.renderDistance=1/0,this.primitiveIndex=0,this.hasNormal=!1,this.point=s(),this.normal=s()}reset(){this.distance=1/0,this.renderDistance=1/0,this.hasNormal=!1}update(e,t,r,i,a=e){this.distance=e,this.renderDistance=a,this.primitiveIndex=t,n(this.point,r),this.hasNormal=i!=null,i!=null&&n(this.normal,i)}updateIfCloserFromValues(e,t,n,r,i=e){i<this.renderDistance&&this.update(e,t,n,r,i)}updateIfCloser(e){let{distance:t,renderDistance:n,primitiveIndex:r,point:i,normal:a}=e;this.updateIfCloserFromValues(t,r,i,e.hasNormal?a:null,n)}get valid(){return Number.isFinite(this.distance)}}function v(e,t,n,r,i){if(!e.visible)return null;let a=new _(4),o;o=e.boundingInfo?b(e.readPrimitivePosition,e.boundingInfo,t,n,r,i):y(t,n,r,0,e.faceCount,e.readPrimitivePosition,i,null,0);for(let e of o)a.updateIfCloser(e);return a.valid?a:null}function*y(e,t,n,i,a,o,s,c=null,l=0){if(e.camera==null)return;let{camera:u,screenPolygonPrimitiveProcessor:d}=e;for(let e=i;e<a;++e){let i=(c?.[e]??e)+l,a=c==null?i:e,p=i*3;x(T[0],o,p+0,s,a,t),x(T[1],o,p+1,s,a,t),x(T[2],o,p+2,s,a,t);let m=j,h;N.reset();let g=E;for(let e of d.processTriangle(T))S(n,e,u,g)&&(C(u.eye,g,A),h??=f(j,T[0],T[1],T[2]),N.updateIfCloserFromValues(r(u.eye,A),i,A,h?m:null));N.valid&&(yield N)}}function*b(e,t,n,r,i,a){let o;if(a==null?o=u(i.broadPhaseFrustum,t.box,r):(c(w,t.box),a.applyToAabb(w),o=u(i.broadPhaseFrustum,w,r)),!o)return;let{primitiveIndices:s}=t,l=s.length;if(l>m){let o=t.children;if(o!==void 0){for(let t of o)yield*b(e,t,n,r,i,a);return}}yield*y(n,r,i,0,l,e,a,s,0)}function x(e,t,n,r,o,s){let[c,l,u]=t(e,n);r==null?i(e,c,l,u):r.applyToVertex(e,c,l,u,o),s&&a(e,e,s)}function S(e,t,n,r){if(r.length=0,d(n.frustum[4],t,()=>r.pushNew()),r.length<3)return!1;let i=D,a=O,o=k;n.projectToScreen(r.data[0],i),n.projectToScreen(r.data[1],a);for(let t=2;t<r.length;t++){if(n.projectToScreen(r.data[t],o),h(e,i,a,o))return!0;let s=a;a=o,o=s}return!1}function C(e,t,r){let i=1/0,a=t.at(0);for(let s=1;s<t.length-1;s++){p(M,e,a,t.at(s),t.at(s+1));let c=o(e,M);c<i&&(i=c,n(r,M))}}const w=l(),T=[s(),s(),s()],E=new e({allocator:e=>e??s()}),D=t(),O=t(),k=t(),A=s(),j=s(),M=s(),N=new _(4);export{g as DrapedHit,_ as Hit,y as forEachTriangleRangeScreenPolygonHit,S as intersectConvexPolygonWithScreenPolygon,v as intersectTriangleGeometryWithScreenPolygon};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{clamp as e,deg2rad as t}from"../../../../core/mathUtils.js";import{createRenderScreenPointArray3 as n}from"../../../../core/screenUtils.js";import{fromMat4 as r}from"../../../../core/libs/gl-matrix-2/math/mat3.js";import{create as i}from"../../../../core/libs/gl-matrix-2/factories/mat3f64.js";import{copy as a,set as o,rotate as s}from"../../../../core/libs/gl-matrix-2/math/vec2.js";import{ONES as c,fromValues as l,create as u}from"../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{copy as d,length as f,scale as p,distance as m,transformMat4 as h,set as g,normalize as _,subtract as v,transformMat3 as y,scaleAndAdd as b,sub as x,dot as ee}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as S,fromValues as C}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{ONES as w,create as T}from"../../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{create as E,empty as te,expandPointInPlace as D}from"../../../../geometry/support/aaBoundingRect.js";import{BufferViewVec3f as ne}from"../../../../geometry/support/buffer/BufferView.js";import{evaluateModelTransformScale as re}from"../../layers/support/FastSymbolUpdates.js";import{debugFlags as ie}from"../../support/debugFlags.js";import{isColorHighlightOrOLID as O,isColor as ae,isOIT as oe}from"../core/shaderLibrary/ShaderOutput.js";import{HUDVerticalPixelOffset as se}from"../core/shaderLibrary/hud/HUD.glsl.js";import{getVec3AttributeView as k,getVec2AttributeView as ce,getScalarAttributeView as le,getVec4AttributeView as ue}from"../lib/attributeViewUtils.js";import{GLTextureMaterialBindParameters as de,GLTextureMaterial as fe}from"../lib/GLTextureMaterial.js";import{PointMaterial as pe}from"../lib/PointMaterial.js";import{screenPolygonIntersectsBounds as me,screenPolygonIntersectsTriangle as he}from"../lib/screenPolygonOverlapUtils.js";import{DrapedHit as ge,Hit as _e}from"../lib/screenPolygonTriangleIntersections.js";import{SeparateScreenSizePerspectiveEvaluators as ve}from"../lib/screenSizePerspectiveUtils.js";import{assert as ye}from"../lib/Util.js";import{verticalOffsetAtDistance as be}from"./internal/MaterialUtil.js";import{a as A}from"../../../../chunks/HUDMaterial.glsl.js";import{baseLayout as xe,getInstanceLayout as Se,HUDMaterialTechnique as Ce}from"../shaders/HUDMaterialTechnique.js";import{HUDMaterialTechniqueConfiguration as we}from"../shaders/HUDMaterialTechniqueConfiguration.js";import{alphaCutoff as j}from"../../../../webscene/support/AlphaCutoff.js";class Te extends pe{constructor(e,t,n=!1){super(e,Re),this.produces=new Map([[12,e=>O(e)&&!this.parameters.drawAsLabel&&!this._configuration.transparentOccluded],[13,e=>O(e)&&!this.parameters.drawAsLabel&&this._configuration.transparentOccluded],[14,e=>O(e)&&this.parameters.drawAsLabel],[18,e=>this.parameters.draped&&O(e)]]),this._visible=!0,this._configuration=new we(t,n)}updateConfiguration(e){super.updateConfiguration(e);let{parameters:t,_configuration:n}=this,r=t.draped;n.enableOITOffset=e.enableOITOffset,n.hasSlicePlane=this.parameters.hasSlicePlane,n.hasVerticalOffset=!!this.parameters.verticalOffset,n.hasScreenSizePerspective=!!this.parameters.screenSizePerspective,n.screenCenterOffsetUnitsEnabled=this.parameters.centerOffsetUnits===`screen`,n.polygonOffset=this.parameters.polygonOffset,n.draped=r,n.pixelSnappingEnabled=this.parameters.pixelSnappingEnabled,n.signedDistanceFieldEnabled=this.parameters.textureIsSignedDistanceField,n.sampleSignedDistanceFieldTexelCenter=this.parameters.sampleSignedDistanceFieldTexelCenter,n.hasRotation=this.parameters.hasRotation,n.hasVVSize=!!this.parameters.vvSize,n.hasVVColor=!!this.parameters.vvColor,n.occludedFragmentFade=!r&&!!this.parameters.occludedFragmentOpacity,n.hasFocusAreaStyle=this.parameters.focusAreaStyle!=null,n.depthTestEnabled=this.parameters.depthEnabled,n.hasVertexColor=this.parameters.hasVertexColor,n.hasVertexSize=this.parameters.hasVertexSize,n.hasVertexRotation=this.parameters.hasVertexRotation,n.hasVertexUVi=this.parameters.hasVertexUVi,n.hasVertexCenterOffset=this.parameters.hasVertexCenterOffset,ae(e.output)&&(n.debugDrawLabelBorder=!!ie.LABELS_SHOW_BORDER),n.hasOcclusionTexture=!t.drawAsLabel&&n.transparentOccluded&&oe(e.output)}intersectRay(e,t,n,r,i,a){let{options:{selectionMode:o,hud:s,excludeLabels:c},point:l,camera:u}=n,{parameters:g}=this;if(o&&s&&(!c||!g.isLabel)&&e.visible&&l&&u){for(let{renderScreenPosition:r,screenSize:i,pixelRatioTolerance:o,halfOutlineSize:s,rotationAngle:c,anchor:_,centerView:v}of this._forEachScreenSpaceHUDInstance(Z,e,t,u))if(N(l,r[0],r[1],i,o,s,c,g,_)){let e=n.ray;if(B[0]=l[0],B[1]=l[1],B[2]=r[2],u.unprojectFromRenderScreen(B,L)){let t=S();d(t,e.direction);let n=1/f(t);p(t,t,n);let r=m(e.origin,L)*n,i=S();h(i,v,u.inverseViewMatrix),a(r,r,t,-1,i)}}}}*_forEachScreenSpaceHUDInstance(e,t,n,i){let{parameters:o}=this,s=k(t,`position`),c=ce(t,`size`),l=k(t,`normal`),u=le(t,`rotation`),f=k(t,`centerOffset`),m=ue(t,`featureAttribute`),x=o.size,ee=r(Oe,n),S=o.centerOffsetUnits===`screen`;for(let t=0;t<s.count;t++){let{scaleX:r,scaleY:C}=Be(m?.getVec(t,ke)??null,o,i.pixelRatio);if(s.getVec(t,L),h(L,L,n),h(L,L,i.viewMatrix),f?f.getVec(t,W):g(W,0,0,0),!S&&(L[0]+=W[0],L[1]+=W[1],W[2]!==0)){let e=W[2];_(W,L),v(L,L,p(W,W,e))}l.getVec(t,R),y(R,R,ee);let{normal:w,cosAngle:T}=M(R,i,Pe),E=$(o,L,T,i,I);if(b(L,L,w,E),i.applyProjection(L,z),z[0]>-1){S&&(W[0]||W[1])&&(z[0]+=W[0]*i.pixelRatio,W[1]!==0&&(z[1]+=I.alignmentEvaluator.apply(W[1])*i.pixelRatio),i.unapplyProjection(z,L)),z[0]+=o.screenOffset[0]*i.pixelRatio,z[1]+=o.screenOffset[1]*i.pixelRatio,z[0]=Math.floor(z[0]),z[1]=Math.floor(z[1]),Q[0]=x[0],Q[1]=x[1],c!=null&&(Q[0]*=c.get(t,0),Q[1]*=c.get(t,1)),I.evaluator.applyVec2(Q,Q);let n=0;o.textureIsSignedDistanceField&&(n=Math.min(o.outlineSize,.5*Q[0])*i.pixelRatio/2),Q[0]*=r,Q[1]*=C,d(e.centerView,L),g(e.renderScreenPosition,z[0],z[1],z[2]),a(e.screenSize,Q),e.pixelRatioTolerance=Fe*i.pixelRatio,e.halfOutlineSize=n,e.rotationAngle=o.rotation+(u?.get(t)??0),e.anchor=A(o),yield e}}}*_forEachDrapedHUDInstance(e,t,n){let r=k(t,`position`),i=ce(t,`size`),o=le(t,`rotation`),s=ue(t,`featureAttribute`),c=this.parameters,l=c.size;e.pixelRatioTolerance=Ie*n,e.anchor=A(c);for(let t=0;t<r.count;t++){let{scaleX:u,scaleY:d}=Be(s?.getVec(t,ke)??null,c,n);e.x=r.get(t,0),e.y=r.get(t,1),Q[0]=l[0],Q[1]=l[1],i!=null&&(Q[0]*=i.get(t,0),Q[1]*=i.get(t,1)),e.halfOutlineSize=0,c.textureIsSignedDistanceField&&(e.halfOutlineSize=Math.min(c.outlineSize,.5*Q[0])*n/2),Q[0]*=u,Q[1]*=d,a(e.screenSize,Q),e.rotationAngle=c.rotation+(o?.get(t)??0),yield e}}intersectRayDraped(e,t,n,r,i,a){let o=this.parameters;for(let{x:t,y:s,screenSize:c,pixelRatioTolerance:l,halfOutlineSize:u,rotationAngle:d,anchor:f}of this._forEachDrapedHUDInstance(Ne,e,a))N(n,t,s,c,l,u,d,o,f)&&r(i.distance,i.renderDistance,i.normal,-1)}intersectScreenPolygonDraped(e,t,n,r,i){if(!n.options.selectionMode||n.options.excludeLabels&&this.parameters.isLabel)return null;let a=this.parameters;for(let{x:n,y:o,screenSize:s,pixelRatioTolerance:c,halfOutlineSize:l,rotationAngle:u,anchor:d}of this._forEachDrapedHUDInstance(Ne,e,i))if(P(r,n+t[0],o+t[1],s,c,l,u,a,d,!1))return new ge(-1);return null}intersectScreenPolygon(e,t,n,r){let{options:{selectionMode:i,hud:a,excludeLabels:o},camera:s}=n,{parameters:c}=this;if(!i||!a||o&&c.isLabel||!e.visible||t==null)return null;let l=new _e(1),u=1/s.pixelRatio;for(let{renderScreenPosition:i,screenSize:a,pixelRatioTolerance:o,halfOutlineSize:d,rotationAngle:f,anchor:p,centerView:g}of this._forEachScreenSpaceHUDInstance(Z,e,t,s)){let e=h(L,g,s.inverseViewMatrix);if(!n.screenPolygonPrimitiveProcessor?.validatePoint(e))continue;let t=i[0]*u,_=(s.fullHeight-i[1])*u;if(X[0]=a[0]*u,X[1]=a[1]*u,P(r,t,_,X,o*u,d*u,f,c,p,!0)){let t=m(s.eye,e);l.updateIfCloserFromValues(t,-1,e,null)}}return l.valid?l:null}createBufferWriter(){return new ze(this.parameters)}createPrimitivePositionReader(e,t){ye(t!=null,`HUD geometry requires instancing`);let n=e.vertex.getField(`position`,ne);return e=>n.getVec(0,e)}applyShaderOffsets(e,t,n,i,a,o,s,c){y(V,n,r(Oe,i));let l=M(V,s,Pe),u=Ve(f(t),s),d=$(this.parameters,t,l.cosAngle,s,c);b(t,t,l.normal,d+u),b(e,e,V,d+u);let p=o+d;this._applyPolygonOffsetView(t,l,p,s,t),this._applyCenterOffsetView(t,a,t)}applyShaderOffsetsNDC(e,t,n,r,i,a){return this._applyCenterOffsetNDC(e,t,r,i),a!=null&&d(a,i),this._applyPolygonOffsetNDC(i,n,r,i),i}_applyPolygonOffsetView(t,n,r,i,a){let o=i.aboveGround?1:-1,s=Math.sign(r);s===0&&(s=o);let c=o*s;if(this.parameters.shaderPolygonOffset<=0)return d(a,t);let l=e(Math.abs(n.cosAngle),.01,1),u=1-Math.sqrt(1-l*l)/l/i.viewport[2];return c>0?p(a,t,u):p(a,t,1/u),a}_applyCenterOffsetView(e,t,n){let r=this.parameters.centerOffsetUnits!==`screen`;return n!==e&&d(n,e),r&&(n[0]+=t[0],n[1]+=t[1],t[2]&&(_(R,n),x(n,n,p(R,R,t[2])))),n}_applyCenterOffsetNDC(e,t,n,r){let i=this.parameters.centerOffsetUnits!==`screen`;return r!==e&&d(r,e),i||(r[0]+=t[0]/n.fullWidth*2,r[1]+=t[1]/n.fullHeight*2),r}_applyPolygonOffsetNDC(e,t,n,r){let i=this.parameters.shaderPolygonOffset;if(e!==r&&d(r,e),i){let e=n.aboveGround?1:-1,a=e*Math.sign(t);r[2]-=(a||e)*i}return r}set visible(e){this._visible=e}get visible(){let{color:e,outlineSize:t,outlineColor:n}=this.parameters,r=e[3]>=j||t>=j&&n[3]>=j;return this._visible&&r}createGLMaterial(e){return new Ee(e)}calculateRelativeScreenBounds(e,t,n=E()){return De(this.parameters,e,t,n),n[2]=n[0]+e[0],n[3]=n[1]+e[1],n}}class Ee extends fe{constructor(e){super({...e,...e.material.parameters})}beginSlot(e){return this.updateTexture(this._material.parameters.textureId),this._material.setParameters(this.textureBindParameters),this.getTechnique(Ce,e)}}function De(e,t,n,r){r[0]=e.anchorPosition[0]*-t[0]+e.screenOffset[0]*n,r[1]=e.anchorPosition[1]*-t[1]+e.screenOffset[1]*n}function M(e,t,n){return h(n.normal,e,t.viewInverseTransposeMatrix),n.cosAngle=ee(n.normal,Le),n}function N(e,n,r,i,a,c,l,u,d){let f=F(n,r,i,a,c,u,d,Ae);return o(U,n,r),s(H,e,U,t(l)),H[0]>f[0]&&H[0]<f[2]&&H[1]>f[1]&&H[1]<f[3]}function P(e,n,r,i,a,c,l,u,d,f){let p=F(n,r,i,a,c,u,d,Ae,f);if(o(K,p[0],p[1]),o(q,p[2],p[1]),o(J,p[2],p[3]),o(Y,p[0],p[3]),l!==0){let e=t(l);o(U,n,r),s(K,K,U,e),s(q,q,U,e),s(J,J,U,e),s(Y,Y,U,e),te(p),D(p,K),D(p,q),D(p,J),D(p,Y)}return me(e,p)?he(e,K,q,J)||he(e,K,J,Y):!1}function F(e,t,n,r,i,a,o,s,c=!1){let l=e-r-n[0]*o[0],u=l+n[0]+2*r,d=c?1-o[1]:o[1],f=t-r-n[1]*d,p=f+n[1]+2*r,m=a.distanceFieldBoundingBox;return a.textureIsSignedDistanceField&&m!=null&&(l+=n[0]*m[0],f+=n[1]*(c?1-m[3]:m[1]),u-=n[0]*(1-m[2]),p-=n[1]*(c?m[1]:1-m[3]),l-=i,u+=i,f-=i,p+=i),s[0]=l,s[1]=f,s[2]=u,s[3]=p,s}const I=new ve,L=S(),R=S(),z=T(),B=n(),V=S(),H=u(),U=u(),Oe=i(),W=S(),G=S(),ke=T(),Ae=E(),K=u(),q=u(),J=u(),Y=u(),X=u();class je{constructor(){this.renderScreenPosition=S(),this.screenSize=u(),this.centerView=S(),this.pixelRatioTolerance=0,this.halfOutlineSize=0,this.rotationAngle=0,this.anchor=u()}}class Me{constructor(){this.x=0,this.y=0,this.screenSize=u(),this.pixelRatioTolerance=0,this.halfOutlineSize=0,this.rotationAngle=0,this.anchor=u()}}const Z=new je,Ne=new Me,Pe={normal:S(),cosAngle:0},Fe=1,Ie=2,Q=l(0,0),Le=C(0,0,1);class Re extends de{constructor(){super(...arguments),this.renderOccluded=1,this.testsTransparentRenderOrder=0,this.isDecoration=!1,this.color=w,this.size=c,this.polygonOffset=0,this.anchorPosition=l(.5,.5),this.screenOffset=[0,0],this.shaderPolygonOffset=1e-5,this.textureIsSignedDistanceField=!1,this.sampleSignedDistanceFieldTexelCenter=!1,this.outlineColor=w,this.outlineSize=0,this.distanceFieldBoundingBox=T(),this.rotation=0,this.hasRotation=!1,this.vvSizeEnabled=!1,this.vvSize=null,this.vvColor=null,this.vvOpacity=null,this.hasVertexColor=!1,this.hasVertexSize=!1,this.hasVertexRotation=!1,this.hasVertexUVi=!1,this.hasVertexCenterOffset=!1,this.hasSlicePlane=!1,this.pixelSnappingEnabled=!0,this.centerOffsetUnits=`world`,this.drawAsLabel=!1,this.depthEnabled=!0,this.focusAreaStyle=null,this.draped=!1,this.isLabel=!1}get hasVVSize(){return!!this.vvSize}get hasVVColor(){return!!this.vvColor}get hasVVOpacity(){return!!this.vvOpacity}}class ze{constructor(e){this.baseInstanceLayout=xe,this.layout=Se(e)}elementCount(){throw Error(`HUDMaterial only supports BufferGeometry`)}elementCountBaseInstance(){throw Error(`HUDMaterial only supports BufferGeometry`)}write(){throw Error(`HUDMaterial only supports BufferGeometry`)}writeBaseInstance(){throw Error(`HUDMaterial only supports BufferGeometry`)}rebaseBuffers(e,t){if(t==null)return;let{buffer:n,offset:r}=t;n.copyFrom(e.vertex,0,r)}}function Be(e,t,n){return e==null||t.vvSize==null?{scaleX:n,scaleY:n}:(re(G,t,e),{scaleX:G[0]*n,scaleY:G[1]*n})}function Ve(e,t){let n=t.computeRenderPixelSizeAtDistance(e)*se;return(t.aboveGround?1:-1)*n}function $(e,t,n,r,i){if(!e.verticalOffset?.screenLength){let r=f(t);return i.update(n,r,e.screenSizePerspective,e.screenSizePerspectiveMinPixelReferenceSize,e.screenSizePerspectiveAlignment,null),0}let a=f(t),o=e.screenSizePerspectiveAlignment??e.screenSizePerspective,s=be(r,a,e.verticalOffset,n,o,e.screenSizePerspectiveMinPixelReferenceSize);return i.update(n,a,e.screenSizePerspective,e.screenSizePerspectiveMinPixelReferenceSize,e.screenSizePerspectiveAlignment,null),s}export{Te as HUDMaterial,Re as Parameters};
2
+ import{clamp as e,deg2rad as t}from"../../../../core/mathUtils.js";import{createRenderScreenPointArray3 as n}from"../../../../core/screenUtils.js";import{fromMat4 as r}from"../../../../core/libs/gl-matrix-2/math/mat3.js";import{create as i}from"../../../../core/libs/gl-matrix-2/factories/mat3f64.js";import{copy as a,set as o,rotate as s}from"../../../../core/libs/gl-matrix-2/math/vec2.js";import{ONES as c,fromValues as l,create as u}from"../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{copy as d,length as f,scale as p,distance as m,transformMat4 as h,set as g,normalize as _,subtract as v,transformMat3 as y,scaleAndAdd as b,sub as x,dot as ee}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as S,fromValues as C}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{ONES as w,create as T}from"../../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{create as E,empty as te,expandPointInPlace as D}from"../../../../geometry/support/aaBoundingRect.js";import{BufferViewVec3f as ne}from"../../../../geometry/support/buffer/BufferView.js";import{evaluateModelTransformScale as re}from"../../layers/support/FastSymbolUpdates.js";import{debugFlags as ie}from"../../support/debugFlags.js";import{isColorHighlightOrOLID as O,isColor as ae,isOIT as oe}from"../core/shaderLibrary/ShaderOutput.js";import{HUDVerticalPixelOffset as se}from"../core/shaderLibrary/hud/HUD.glsl.js";import{getVec3AttributeView as k,getVec2AttributeView as ce,getScalarAttributeView as le,getVec4AttributeView as ue}from"../lib/attributeViewUtils.js";import{GLTextureMaterialBindParameters as de,GLTextureMaterial as fe}from"../lib/GLTextureMaterial.js";import{PointMaterial as pe}from"../lib/PointMaterial.js";import{screenPolygonIntersectsBounds as me,screenPolygonIntersectsTriangle as he}from"../lib/screenPolygonOverlapUtils.js";import{DrapedHit as ge,Hit as _e}from"../lib/screenPolygonTriangleIntersections.js";import{SeparateScreenSizePerspectiveEvaluators as ve}from"../lib/screenSizePerspectiveUtils.js";import{assert as ye}from"../lib/Util.js";import{verticalOffsetAtDistance as be}from"./internal/MaterialUtil.js";import{a as A}from"../../../../chunks/HUDMaterial.glsl.js";import{baseLayout as xe,getInstanceLayout as Se}from"../shaders/hudMaterialLayouts.js";import{HUDMaterialTechnique as Ce}from"../shaders/HUDMaterialTechnique.js";import{HUDMaterialTechniqueConfiguration as we}from"../shaders/HUDMaterialTechniqueConfiguration.js";import{alphaCutoff as j}from"../../../../webscene/support/AlphaCutoff.js";class Te extends pe{constructor(e,t,n=!1){super(e,Re),this.produces=new Map([[12,e=>O(e)&&!this.parameters.drawAsLabel&&!this._configuration.transparentOccluded],[13,e=>O(e)&&!this.parameters.drawAsLabel&&this._configuration.transparentOccluded],[14,e=>O(e)&&this.parameters.drawAsLabel],[18,e=>this.parameters.draped&&O(e)]]),this._visible=!0,this._configuration=new we(t,n)}updateConfiguration(e){super.updateConfiguration(e);let{parameters:t,_configuration:n}=this,r=t.draped;n.enableOITOffset=e.enableOITOffset,n.hasSlicePlane=this.parameters.hasSlicePlane,n.hasVerticalOffset=!!this.parameters.verticalOffset,n.hasScreenSizePerspective=!!this.parameters.screenSizePerspective,n.screenCenterOffsetUnitsEnabled=this.parameters.centerOffsetUnits===`screen`,n.polygonOffset=this.parameters.polygonOffset,n.draped=r,n.pixelSnappingEnabled=this.parameters.pixelSnappingEnabled,n.signedDistanceFieldEnabled=this.parameters.textureIsSignedDistanceField,n.sampleSignedDistanceFieldTexelCenter=this.parameters.sampleSignedDistanceFieldTexelCenter,n.hasRotation=this.parameters.hasRotation,n.hasVVSize=!!this.parameters.vvSize,n.hasVVColor=!!this.parameters.vvColor,n.occludedFragmentFade=!r&&!!this.parameters.occludedFragmentOpacity,n.hasFocusAreaStyle=this.parameters.focusAreaStyle!=null,n.depthTestEnabled=this.parameters.depthEnabled,n.hasVertexColor=this.parameters.hasVertexColor,n.hasVertexSize=this.parameters.hasVertexSize,n.hasVertexRotation=this.parameters.hasVertexRotation,n.hasVertexUVi=this.parameters.hasVertexUVi,n.hasVertexCenterOffset=this.parameters.hasVertexCenterOffset,ae(e.output)&&(n.debugDrawLabelBorder=!!ie.LABELS_SHOW_BORDER),n.hasOcclusionTexture=!t.drawAsLabel&&n.transparentOccluded&&oe(e.output)}intersectRay(e,t,n,r,i,a){let{options:{selectionMode:o,hud:s,excludeLabels:c},point:l,camera:u}=n,{parameters:g}=this;if(o&&s&&(!c||!g.isLabel)&&e.visible&&l&&u){for(let{renderScreenPosition:r,screenSize:i,pixelRatioTolerance:o,halfOutlineSize:s,rotationAngle:c,anchor:_,centerView:v}of this._forEachScreenSpaceHUDInstance(Z,e,t,u))if(N(l,r[0],r[1],i,o,s,c,g,_)){let e=n.ray;if(B[0]=l[0],B[1]=l[1],B[2]=r[2],u.unprojectFromRenderScreen(B,L)){let t=S();d(t,e.direction);let n=1/f(t);p(t,t,n);let r=m(e.origin,L)*n,i=S();h(i,v,u.inverseViewMatrix),a(r,r,t,-1,i)}}}}*_forEachScreenSpaceHUDInstance(e,t,n,i){let{parameters:o}=this,s=k(t,`position`),c=ce(t,`size`),l=k(t,`normal`),u=le(t,`rotation`),f=k(t,`centerOffset`),m=ue(t,`featureAttribute`),x=o.size,ee=r(Oe,n),S=o.centerOffsetUnits===`screen`;for(let t=0;t<s.count;t++){let{scaleX:r,scaleY:C}=Be(m?.getVec(t,ke)??null,o,i.pixelRatio);if(s.getVec(t,L),h(L,L,n),h(L,L,i.viewMatrix),f?f.getVec(t,W):g(W,0,0,0),!S&&(L[0]+=W[0],L[1]+=W[1],W[2]!==0)){let e=W[2];_(W,L),v(L,L,p(W,W,e))}l.getVec(t,R),y(R,R,ee);let{normal:w,cosAngle:T}=M(R,i,Pe),E=$(o,L,T,i,I);if(b(L,L,w,E),i.applyProjection(L,z),z[0]>-1){S&&(W[0]||W[1])&&(z[0]+=W[0]*i.pixelRatio,W[1]!==0&&(z[1]+=I.alignmentEvaluator.apply(W[1])*i.pixelRatio),i.unapplyProjection(z,L)),z[0]+=o.screenOffset[0]*i.pixelRatio,z[1]+=o.screenOffset[1]*i.pixelRatio,z[0]=Math.floor(z[0]),z[1]=Math.floor(z[1]),Q[0]=x[0],Q[1]=x[1],c!=null&&(Q[0]*=c.get(t,0),Q[1]*=c.get(t,1)),I.evaluator.applyVec2(Q,Q);let n=0;o.textureIsSignedDistanceField&&(n=Math.min(o.outlineSize,.5*Q[0])*i.pixelRatio/2),Q[0]*=r,Q[1]*=C,d(e.centerView,L),g(e.renderScreenPosition,z[0],z[1],z[2]),a(e.screenSize,Q),e.pixelRatioTolerance=Fe*i.pixelRatio,e.halfOutlineSize=n,e.rotationAngle=o.rotation+(u?.get(t)??0),e.anchor=A(o),yield e}}}*_forEachDrapedHUDInstance(e,t,n){let r=k(t,`position`),i=ce(t,`size`),o=le(t,`rotation`),s=ue(t,`featureAttribute`),c=this.parameters,l=c.size;e.pixelRatioTolerance=Ie*n,e.anchor=A(c);for(let t=0;t<r.count;t++){let{scaleX:u,scaleY:d}=Be(s?.getVec(t,ke)??null,c,n);e.x=r.get(t,0),e.y=r.get(t,1),Q[0]=l[0],Q[1]=l[1],i!=null&&(Q[0]*=i.get(t,0),Q[1]*=i.get(t,1)),e.halfOutlineSize=0,c.textureIsSignedDistanceField&&(e.halfOutlineSize=Math.min(c.outlineSize,.5*Q[0])*n/2),Q[0]*=u,Q[1]*=d,a(e.screenSize,Q),e.rotationAngle=c.rotation+(o?.get(t)??0),yield e}}intersectRayDraped(e,t,n,r,i,a){let o=this.parameters;for(let{x:t,y:s,screenSize:c,pixelRatioTolerance:l,halfOutlineSize:u,rotationAngle:d,anchor:f}of this._forEachDrapedHUDInstance(Ne,e,a))N(n,t,s,c,l,u,d,o,f)&&r(i.distance,i.renderDistance,i.normal,-1)}intersectScreenPolygonDraped(e,t,n,r,i){if(!n.options.selectionMode||n.options.excludeLabels&&this.parameters.isLabel)return null;let a=this.parameters;for(let{x:n,y:o,screenSize:s,pixelRatioTolerance:c,halfOutlineSize:l,rotationAngle:u,anchor:d}of this._forEachDrapedHUDInstance(Ne,e,i))if(P(r,n+t[0],o+t[1],s,c,l,u,a,d,!1))return new ge(-1);return null}intersectScreenPolygon(e,t,n,r){let{options:{selectionMode:i,hud:a,excludeLabels:o},camera:s}=n,{parameters:c}=this;if(!i||!a||o&&c.isLabel||!e.visible||t==null)return null;let l=new _e(1),u=1/s.pixelRatio;for(let{renderScreenPosition:i,screenSize:a,pixelRatioTolerance:o,halfOutlineSize:d,rotationAngle:f,anchor:p,centerView:g}of this._forEachScreenSpaceHUDInstance(Z,e,t,s)){let e=h(L,g,s.inverseViewMatrix);if(!n.screenPolygonPrimitiveProcessor?.validatePoint(e))continue;let t=i[0]*u,_=(s.fullHeight-i[1])*u;if(X[0]=a[0]*u,X[1]=a[1]*u,P(r,t,_,X,o*u,d*u,f,c,p,!0)){let t=m(s.eye,e);l.updateIfCloserFromValues(t,-1,e,null)}}return l.valid?l:null}createBufferWriter(){return new ze(this.parameters)}createPrimitivePositionReader(e,t){ye(t!=null,`HUD geometry requires instancing`);let n=e.vertex.getField(`position`,ne);return e=>n.getVec(0,e)}applyShaderOffsets(e,t,n,i,a,o,s,c){y(V,n,r(Oe,i));let l=M(V,s,Pe),u=Ve(f(t),s),d=$(this.parameters,t,l.cosAngle,s,c);b(t,t,l.normal,d+u),b(e,e,V,d+u);let p=o+d;this._applyPolygonOffsetView(t,l,p,s,t),this._applyCenterOffsetView(t,a,t)}applyShaderOffsetsNDC(e,t,n,r,i,a){return this._applyCenterOffsetNDC(e,t,r,i),a!=null&&d(a,i),this._applyPolygonOffsetNDC(i,n,r,i),i}_applyPolygonOffsetView(t,n,r,i,a){let o=i.aboveGround?1:-1,s=Math.sign(r);s===0&&(s=o);let c=o*s;if(this.parameters.shaderPolygonOffset<=0)return d(a,t);let l=e(Math.abs(n.cosAngle),.01,1),u=1-Math.sqrt(1-l*l)/l/i.viewport[2];return c>0?p(a,t,u):p(a,t,1/u),a}_applyCenterOffsetView(e,t,n){let r=this.parameters.centerOffsetUnits!==`screen`;return n!==e&&d(n,e),r&&(n[0]+=t[0],n[1]+=t[1],t[2]&&(_(R,n),x(n,n,p(R,R,t[2])))),n}_applyCenterOffsetNDC(e,t,n,r){let i=this.parameters.centerOffsetUnits!==`screen`;return r!==e&&d(r,e),i||(r[0]+=t[0]/n.fullWidth*2,r[1]+=t[1]/n.fullHeight*2),r}_applyPolygonOffsetNDC(e,t,n,r){let i=this.parameters.shaderPolygonOffset;if(e!==r&&d(r,e),i){let e=n.aboveGround?1:-1,a=e*Math.sign(t);r[2]-=(a||e)*i}return r}set visible(e){this._visible=e}get visible(){let{color:e,outlineSize:t,outlineColor:n}=this.parameters,r=e[3]>=j||t>=j&&n[3]>=j;return this._visible&&r}createGLMaterial(e){return new Ee(e)}calculateRelativeScreenBounds(e,t,n=E()){return De(this.parameters,e,t,n),n[2]=n[0]+e[0],n[3]=n[1]+e[1],n}}class Ee extends fe{constructor(e){super({...e,...e.material.parameters})}beginSlot(e){return this.updateTexture(this._material.parameters.textureId),this._material.setParameters(this.textureBindParameters),this.getTechnique(Ce,e)}}function De(e,t,n,r){r[0]=e.anchorPosition[0]*-t[0]+e.screenOffset[0]*n,r[1]=e.anchorPosition[1]*-t[1]+e.screenOffset[1]*n}function M(e,t,n){return h(n.normal,e,t.viewInverseTransposeMatrix),n.cosAngle=ee(n.normal,Le),n}function N(e,n,r,i,a,c,l,u,d){let f=F(n,r,i,a,c,u,d,Ae);return o(U,n,r),s(H,e,U,t(l)),H[0]>f[0]&&H[0]<f[2]&&H[1]>f[1]&&H[1]<f[3]}function P(e,n,r,i,a,c,l,u,d,f){let p=F(n,r,i,a,c,u,d,Ae,f);if(o(K,p[0],p[1]),o(q,p[2],p[1]),o(J,p[2],p[3]),o(Y,p[0],p[3]),l!==0){let e=t(l);o(U,n,r),s(K,K,U,e),s(q,q,U,e),s(J,J,U,e),s(Y,Y,U,e),te(p),D(p,K),D(p,q),D(p,J),D(p,Y)}return me(e,p)?he(e,K,q,J)||he(e,K,J,Y):!1}function F(e,t,n,r,i,a,o,s,c=!1){let l=e-r-n[0]*o[0],u=l+n[0]+2*r,d=c?1-o[1]:o[1],f=t-r-n[1]*d,p=f+n[1]+2*r,m=a.distanceFieldBoundingBox;return a.textureIsSignedDistanceField&&m!=null&&(l+=n[0]*m[0],f+=n[1]*(c?1-m[3]:m[1]),u-=n[0]*(1-m[2]),p-=n[1]*(c?m[1]:1-m[3]),l-=i,u+=i,f-=i,p+=i),s[0]=l,s[1]=f,s[2]=u,s[3]=p,s}const I=new ve,L=S(),R=S(),z=T(),B=n(),V=S(),H=u(),U=u(),Oe=i(),W=S(),G=S(),ke=T(),Ae=E(),K=u(),q=u(),J=u(),Y=u(),X=u();class je{constructor(){this.renderScreenPosition=S(),this.screenSize=u(),this.centerView=S(),this.pixelRatioTolerance=0,this.halfOutlineSize=0,this.rotationAngle=0,this.anchor=u()}}class Me{constructor(){this.x=0,this.y=0,this.screenSize=u(),this.pixelRatioTolerance=0,this.halfOutlineSize=0,this.rotationAngle=0,this.anchor=u()}}const Z=new je,Ne=new Me,Pe={normal:S(),cosAngle:0},Fe=1,Ie=2,Q=l(0,0),Le=C(0,0,1);class Re extends de{constructor(){super(...arguments),this.renderOccluded=1,this.testsTransparentRenderOrder=0,this.isDecoration=!1,this.color=w,this.size=c,this.polygonOffset=0,this.anchorPosition=l(.5,.5),this.screenOffset=[0,0],this.shaderPolygonOffset=1e-5,this.textureIsSignedDistanceField=!1,this.sampleSignedDistanceFieldTexelCenter=!1,this.outlineColor=w,this.outlineSize=0,this.distanceFieldBoundingBox=T(),this.rotation=0,this.hasRotation=!1,this.vvSizeEnabled=!1,this.vvSize=null,this.vvColor=null,this.vvOpacity=null,this.hasVertexColor=!1,this.hasVertexSize=!1,this.hasVertexRotation=!1,this.hasVertexUVi=!1,this.hasVertexCenterOffset=!1,this.hasSlicePlane=!1,this.pixelSnappingEnabled=!0,this.centerOffsetUnits=`world`,this.drawAsLabel=!1,this.depthEnabled=!0,this.focusAreaStyle=null,this.draped=!1,this.isLabel=!1}get hasVVSize(){return!!this.vvSize}get hasVVColor(){return!!this.vvColor}get hasVVOpacity(){return!!this.vvOpacity}}class ze{constructor(e){this.baseInstanceLayout=xe,this.layout=Se(e)}elementCount(){throw Error(`HUDMaterial only supports BufferGeometry`)}elementCountBaseInstance(){throw Error(`HUDMaterial only supports BufferGeometry`)}write(){throw Error(`HUDMaterial only supports BufferGeometry`)}writeBaseInstance(){throw Error(`HUDMaterial only supports BufferGeometry`)}rebaseBuffers(e,t){if(t==null)return;let{buffer:n,offset:r}=t;n.copyFrom(e.vertex,0,r)}}function Be(e,t,n){return e==null||t.vvSize==null?{scaleX:n,scaleY:n}:(re(G,t,e),{scaleX:G[0]*n,scaleY:G[1]*n})}function Ve(e,t){let n=t.computeRenderPixelSizeAtDistance(e)*se;return(t.aboveGround?1:-1)*n}function $(e,t,n,r,i){if(!e.verticalOffset?.screenLength){let r=f(t);return i.update(n,r,e.screenSizePerspective,e.screenSizePerspectiveMinPixelReferenceSize,e.screenSizePerspectiveAlignment,null),0}let a=f(t),o=e.screenSizePerspectiveAlignment??e.screenSizePerspective,s=be(r,a,e.verticalOffset,n,o,e.screenSizePerspectiveMinPixelReferenceSize);return i.update(n,a,e.screenSizePerspective,e.screenSizePerspectiveMinPixelReferenceSize,e.screenSizePerspectiveAlignment,null),s}export{Te as HUDMaterial,Re as Parameters};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{BufferGeometryBaseInstance as e}from"../lib/BufferGeometryBaseInstance.js";import{Buffers as t}from"../lib/Buffers.js";import{baseLayout as n}from"../shaders/HUDMaterialTechnique.js";function r(){return a??=i(),a}function i(){let r=n.createBuffer(4);return r.uv0.setValues(0,0,0),r.uv0.setValues(1,0,255),r.uv0.setValues(2,255,0),r.uv0.setValues(3,255,255),new e(new t(r))}let a=null;export{r as getHUDMaterialBufferBaseInstance};
2
+ import{BufferGeometryBaseInstance as e}from"../lib/BufferGeometryBaseInstance.js";import{Buffers as t}from"../lib/Buffers.js";import{baseLayout as n}from"../shaders/hudMaterialLayouts.js";function r(){return a??=i(),a}function i(){let r=n.createBuffer(4);return r.uv0.setValues(0,0,0),r.uv0.setValues(1,0,255),r.uv0.setValues(2,255,0),r.uv0.setValues(3,255,255),new e(new t(r))}let a=null;export{r as getHUDMaterialBufferBaseInstance};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{BufferViewVec3f as e}from"../../../../geometry/support/buffer/BufferView.js";import{isColor as t,isDepth as n,isColorHighlightOLIDOrDepth as r}from"../core/shaderLibrary/ShaderOutput.js";import i from"../lib/GLMaterial.js";import{LineMaterial as a}from"../lib/LineMaterial.js";import{createVerticesView as o}from"../lib/VerticesView.js";import{VisualVariablePassParameters as s}from"./VisualVariablePassParameters.js";import{writeLineMarkerBuffer as c}from"./internal/lineMarkerBufferUtils.js";import{getLayout as l,LineMarkerTechnique as u}from"../shaders/LineMarkerTechnique.js";import{LineMarkerTechniqueConfiguration as d}from"../shaders/LineMarkerTechniqueConfiguration.js";import{alphaCutoff as f}from"../../../../webscene/support/AlphaCutoff.js";class p extends a{constructor(e,i){super(e,h),this.produces=new Map([[2,e=>e===10||t(e)&&this.parameters.renderOccluded===8],[3,e=>n(e)],[10,e=>r(e)&&this.parameters.renderOccluded===8],[11,e=>r(e)&&this.parameters.renderOccluded===8],[4,e=>t(e)],[18,e=>t(e)||e===10]]),this.intersectRayDraped=void 0,this.intersectScreenPolygonDraped=void 0,this._configuration=new d(i)}updateConfiguration(e){super.updateConfiguration(e),this._configuration.hideOnShortSegments=this.parameters.hideOnShortSegments,this._configuration.hasCap=this.parameters.cap!==0,this._configuration.anchor=this.parameters.anchor,this._configuration.hasTip=this.parameters.hasTip,this._configuration.hasSlicePlane=this.parameters.hasSlicePlane,this._configuration.worldSpace=this.parameters.worldSpace&&!this._configuration.draped,this._configuration.hasScreenSizePerspective=this.parameters.screenSizePerspective!=null&&!this._configuration.worldSized}get visible(){return this.parameters.color[3]>=f}get emissions(){return this.parameters.emissiveStrength>0?this.parameters.renderOccluded===8?1:2:0}intersectRay(){}intersectScreenPolygon(){return null}computeAttachmentOrigin(){return!1}createPrimitivePositionReader(t){let n=t.vertex.getField(`position`,e);return(e,t)=>n.getVec(t,e)}createBufferWriter(){return new g(l(this.parameters),this.parameters)}createGLMaterial(e){return new m(e)}}class m extends i{dispose(){super.dispose(),this._markerTextures?.release(this._markerPrimitive),this._markerPrimitive=null}beginSlot(e){let t=this._material.parameters.markerPrimitive;return t!==this._markerPrimitive&&(this._material.setParameters({markerTexture:this._markerTextures.swap(t,this._markerPrimitive)}),this._markerPrimitive=t),this.getTechnique(u,e)}}class h extends s{constructor(){super(...arguments),this.width=0,this.color=[1,1,1,1],this.markerPrimitive=`arrow`,this.markerScale=1,this.placement=`end`,this.cap=0,this.anchor=0,this.hasTip=!1,this.shadingEnabled=!1,this.worldSpace=!1,this.worldSized=!1,this.hideOnShortSegments=!1,this.hasSlicePlane=!1,this.vvFastUpdate=!1,this.stipplePattern=null,this.markerTexture=null}}class g{constructor(e,t){this.layout=e,this._parameters=t}elementCount(){return this._parameters.placement===`begin-end`?12:6}rebaseBuffers(e,t){t?.buffer.copyFrom(e.vertex,0,t.offset)}write(e,t,n,r){if(r==null)return;let i=n.get(`position`);c({position:o(i,3),normal:n.get(`normal`)?.data,color:n.get(`color`)?.data,size:n.get(`size`)?.data[0],colorFeature:this._parameters.vvColor?n.get(`colorFeatureAttribute`).data[0]:void 0,sizeFeature:this._parameters.vvSize?n.get(`sizeFeatureAttribute`).data[0]:void 0,opacityFeature:this._parameters.vvOpacity?n.get(`opacityFeatureAttribute`).data[0]:void 0},this._parameters,r,e)}}export{p as LineMarkerMaterial,h as Parameters};
2
+ import{BufferViewVec3f as e}from"../../../../geometry/support/buffer/BufferView.js";import{isColor as t,isDepth as n,isColorHighlightOLIDOrDepth as r}from"../core/shaderLibrary/ShaderOutput.js";import i from"../lib/GLMaterial.js";import{LineMaterial as a}from"../lib/LineMaterial.js";import{createVerticesView as o}from"../lib/VerticesView.js";import{VisualVariablePassParameters as s}from"./VisualVariablePassParameters.js";import{writeLineMarkerBuffer as c}from"./internal/lineMarkerBufferUtils.js";import{getLayout as l}from"../shaders/lineMarkerLayouts.js";import{LineMarkerTechnique as u}from"../shaders/LineMarkerTechnique.js";import{LineMarkerTechniqueConfiguration as d}from"../shaders/LineMarkerTechniqueConfiguration.js";import{alphaCutoff as f}from"../../../../webscene/support/AlphaCutoff.js";class p extends a{constructor(e,i){super(e,h),this.produces=new Map([[2,e=>e===10||t(e)&&this.parameters.renderOccluded===8],[3,e=>n(e)],[10,e=>r(e)&&this.parameters.renderOccluded===8],[11,e=>r(e)&&this.parameters.renderOccluded===8],[4,e=>t(e)],[18,e=>t(e)||e===10]]),this.intersectRayDraped=void 0,this.intersectScreenPolygonDraped=void 0,this._configuration=new d(i)}updateConfiguration(e){super.updateConfiguration(e),this._configuration.hideOnShortSegments=this.parameters.hideOnShortSegments,this._configuration.hasCap=this.parameters.cap!==0,this._configuration.anchor=this.parameters.anchor,this._configuration.hasTip=this.parameters.hasTip,this._configuration.hasSlicePlane=this.parameters.hasSlicePlane,this._configuration.worldSpace=this.parameters.worldSpace&&!this._configuration.draped,this._configuration.hasScreenSizePerspective=this.parameters.screenSizePerspective!=null&&!this._configuration.worldSized}get visible(){return this.parameters.color[3]>=f}get emissions(){return this.parameters.emissiveStrength>0?this.parameters.renderOccluded===8?1:2:0}intersectRay(){}intersectScreenPolygon(){return null}computeAttachmentOrigin(){return!1}createPrimitivePositionReader(t){let n=t.vertex.getField(`position`,e);return(e,t)=>n.getVec(t,e)}createBufferWriter(){return new g(l(this.parameters),this.parameters)}createGLMaterial(e){return new m(e)}}class m extends i{dispose(){super.dispose(),this._markerTextures?.release(this._markerPrimitive),this._markerPrimitive=null}beginSlot(e){let t=this._material.parameters.markerPrimitive;return t!==this._markerPrimitive&&(this._material.setParameters({markerTexture:this._markerTextures.swap(t,this._markerPrimitive)}),this._markerPrimitive=t),this.getTechnique(u,e)}}class h extends s{constructor(){super(...arguments),this.width=0,this.color=[1,1,1,1],this.markerPrimitive=`arrow`,this.markerScale=1,this.placement=`end`,this.cap=0,this.anchor=0,this.hasTip=!1,this.shadingEnabled=!1,this.worldSpace=!1,this.worldSized=!1,this.hideOnShortSegments=!1,this.hasSlicePlane=!1,this.vvFastUpdate=!1,this.stipplePattern=null,this.markerTexture=null}}class g{constructor(e,t){this.layout=e,this._parameters=t}elementCount(){return this._parameters.placement===`begin-end`?12:6}rebaseBuffers(e,t){t?.buffer.copyFrom(e.vertex,0,t.offset)}write(e,t,n,r){if(r==null)return;let i=n.get(`position`);c({position:o(i,3),normal:n.get(`normal`)?.data,color:n.get(`color`)?.data,size:n.get(`size`)?.data[0],colorFeature:this._parameters.vvColor?n.get(`colorFeatureAttribute`).data[0]:void 0,sizeFeature:this._parameters.vvSize?n.get(`sizeFeatureAttribute`).data[0]:void 0,opacityFeature:this._parameters.vvOpacity?n.get(`opacityFeatureAttribute`).data[0]:void 0},this._parameters,r,e)}}export{p as LineMarkerMaterial,h as Parameters};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{subtract as e,length as t,scale as n}from"../../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as r}from"../../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{isOrthoNormal as i,hasIdentityRotation as a}from"../../../../../core/libs/gl-matrix-2/math/mat4.js";import{BufferViewVec4u8 as o,BufferViewVec4f as s,BufferViewFloat as c,BufferViewVec2i16 as l,BufferViewVec2f16 as u,BufferViewVec2f as d,BufferViewVec3f as f}from"../../../../../geometry/support/buffer/BufferView.js";import{assert as p}from"../../lib/Util.js";function m(e,t,n){let{data:r,indices:i}=e,a=t.typedBuffer,o=t.typedBufferStride,s=i.length;n*=o;for(let e=0;e<s;++e)a[n]=r[i[e]],n+=o}function h(e,t,n,r=1){let{data:i,indices:a}=e,o=t.typedBuffer,s=t.typedBufferStride,c=a.length;if(n*=s,r===1)for(let e=0;e<c;++e)o[n]=i[a[e]],n+=s;else for(let e=0;e<c;++e){let t=i[a[e]];for(let e=0;e<r;e++)o[n]=t,n+=s}}function g(e,t,n){let{data:r,indices:i}=e,a=t.typedBuffer,o=t.typedBufferStride,s=i.length;n*=o;for(let e=0;e<s;++e)a[n]=r[i[e]],n+=o}function _(e,t,n){let{data:r,stride:i,indices:a}=e,o=a.length;for(let e=0;e<o;++e)t.set(n+e,r[i*a[e]])}function v(e,t,n){let{data:r,stride:i,indices:a}=e,o=a.length;for(let e=0;e<o;++e)t.set(n+e,r[i*a[e]])}function y(e,t,n){let{data:r,indices:i}=e,a=t.typedBuffer,o=t.typedBufferStride,s=i.length;n*=o;for(let e=0;e<s;++e){let t=2*i[e];a[n]=r[t],a[n+1]=r[t+1],n+=o}}function b(e,t,n,r=1){let{data:i,indices:a}=e,o=t.typedBuffer,s=t.typedBufferStride,c=a.length;if(n*=s,r===1)for(let e=0;e<c;++e){let t=3*a[e];o[n]=i[t],o[n+1]=i[t+1],o[n+2]=i[t+2],n+=s}else for(let e=0;e<c;++e){let t=3*a[e];for(let e=0;e<r;++e)o[n]=i[t],o[n+1]=i[t+1],o[n+2]=i[t+2],n+=s}}function x(e,t,n,r=1){let{data:i,indices:a}=e,o=t.typedBuffer,s=t.typedBufferStride,c=a.length;if(n*=s,r===1)for(let e=0;e<c;++e){let t=4*a[e];o[n]=i[t],o[n+1]=i[t+1],o[n+2]=i[t+2],o[n+3]=i[t+3],n+=s}else for(let e=0;e<c;++e){let t=4*a[e];for(let e=0;e<r;++e)o[n]=i[t],o[n+1]=i[t+1],o[n+2]=i[t+2],o[n+3]=i[t+3],n+=s}}function S(e,t,n){let{data:r,indices:i}=e,a=t.typedBuffer,o=t.typedBufferStride,s=i.length;n*=o;for(let e=0;e<s;++e){let t=9*i[e];for(let e=0;e<9;++e)a[n+e]=r[t+e];n+=o}}function C(e,t,n){let{data:r,indices:i}=e,a=t.typedBuffer,o=t.typedBufferStride,s=i.length;n*=o;for(let e=0;e<s;++e){let t=16*i[e];for(let e=0;e<16;++e)a[n+e]=r[t+e];n+=o}}function w(e,t,n,r,i=1){if(!t){b(e,n,r,i);return}let{data:o,indices:s}=e,c=n.typedBuffer,l=n.typedBufferStride,u=s.length,d=t[0],f=t[1],p=t[2],m=t[4],h=t[5],g=t[6],_=t[8],v=t[9],y=t[10],x=t[12],S=t[13],C=t[14];r*=l;let w=0,T=0,E=0,D=a(t)?e=>{w=o[e]+x,T=o[e+1]+S,E=o[e+2]+C}:e=>{let t=o[e],n=o[e+1],r=o[e+2];w=d*t+m*n+_*r+x,T=f*t+h*n+v*r+S,E=p*t+g*n+y*r+C};if(i===1)for(let e=0;e<u;++e)D(3*s[e]),c[r]=w,c[r+1]=T,c[r+2]=E,r+=l;else for(let e=0;e<u;++e){D(3*s[e]);for(let e=0;e<i;++e)c[r]=w,c[r+1]=T,c[r+2]=E,r+=l}}function T(e,t,n,r){if(!t){y(e,n,r);return}let{data:i,indices:o}=e,s=n.typedBuffer,c=n.typedBufferStride,l=o.length,u=t[0],d=t[1],f=t[4],p=t[5],m=t[12],h=t[13];r*=c;let g=0,_=0,v=a(t)?e=>{g=i[e]+m,_=i[e+1]+h}:e=>{let t=i[e],n=i[e+1];g=u*t+f*n+m,_=d*t+p*n+h};for(let e=0;e<l;++e)v(2*o[e]),s[r]=g,s[r+1]=_,r+=c}function E(e,t,n,r,o=1){if(!t){b(e,n,r,o);return}let{data:s,indices:c}=e,l=t,u=n.typedBuffer,d=n.typedBufferStride,f=c.length,p=l[0],m=l[1],h=l[2],g=l[4],_=l[5],v=l[6],y=l[8],x=l[9],S=l[10],C=!i(l),w=1e-6,T=.999999;r*=d;let E=0,D=0,O=0,k=a(l)?e=>{E=s[e],D=s[e+1],O=s[e+2]}:e=>{let t=s[e],n=s[e+1],r=s[e+2];E=p*t+g*n+y*r,D=m*t+_*n+x*r,O=h*t+v*n+S*r};if(o===1){if(C)for(let e=0;e<f;++e){k(3*c[e]);let t=E*E+D*D+O*O;if(t<T&&t>w){let e=1/Math.sqrt(t);u[r]=E*e,u[r+1]=D*e,u[r+2]=O*e}else u[r]=E,u[r+1]=D,u[r+2]=O;r+=d}else for(let e=0;e<f;++e)k(3*c[e]),u[r]=E,u[r+1]=D,u[r+2]=O,r+=d}else for(let e=0;e<f;++e){if(k(3*c[e]),C){let e=E*E+D*D+O*O;if(e<T&&e>w){let t=1/Math.sqrt(e);E*=t,D*=t,O*=t}}for(let e=0;e<o;++e)u[r]=E,u[r+1]=D,u[r+2]=O,r+=d}}function D(e,t,n,r,a=1){if(!t){x(e,n,r,a);return}let{data:o,indices:s}=e,c=t,l=n.typedBuffer,u=n.typedBufferStride,d=s.length,f=c[0],p=c[1],m=c[2],h=c[4],g=c[5],_=c[6],v=c[8],y=c[9],b=c[10],S=!i(c),C=1e-6,w=.999999;if(r*=u,a===1)for(let e=0;e<d;++e){let t=4*s[e],n=o[t],i=o[t+1],a=o[t+2],c=o[t+3],d=f*n+h*i+v*a,x=p*n+g*i+y*a,T=m*n+_*i+b*a;if(S){let e=d*d+x*x+T*T;if(e<w&&e>C){let t=1/Math.sqrt(e);d*=t,x*=t,T*=t}}l[r]=d,l[r+1]=x,l[r+2]=T,l[r+3]=c,r+=u}else for(let e=0;e<d;++e){let t=4*s[e],n=o[t],i=o[t+1],c=o[t+2],d=o[t+3],x=f*n+h*i+v*c,T=p*n+g*i+y*c,E=m*n+_*i+b*c;if(S){let e=x*x+T*T+E*E;if(e<w&&e>C){let t=1/Math.sqrt(e);x*=t,T*=t,E*=t}}for(let e=0;e<a;++e)l[r]=x,l[r+1]=T,l[r+2]=E,l[r+3]=d,r+=u}}function O(e,t,n,r,i=1){let{data:a,indices:o}=e,s=n.typedBuffer,c=n.typedBufferStride,l=o.length;if(r*=c,t===a.length&&t===4){s[r]=a[0],s[r+1]=a[1],s[r+2]=a[2],s[r+3]=a[3];let e=new Uint32Array(n.typedBuffer.buffer,n.start),t=c/4;r/=4;let o=e[r];r+=t;let u=l*i;for(let n=1;n<u;++n)e[r]=o,r+=t}else if(i===1){if(t===4){for(let e=0;e<l;++e){let t=4*o[e];s[r]=a[t],s[r+1]=a[t+1],s[r+2]=a[t+2],s[r+3]=a[t+3],r+=c}return}for(let e=0;e<l;++e){let t=3*o[e];s[r]=a[t],s[r+1]=a[t+1],s[r+2]=a[t+2],s[r+3]=255,r+=c}}else if(t===4)for(let e=0;e<l;++e){let t=4*o[e];for(let e=0;e<i;++e)s[r]=a[t],s[r+1]=a[t+1],s[r+2]=a[t+2],s[r+3]=a[t+3],r+=c}else for(let e=0;e<l;++e){let t=3*o[e];for(let e=0;e<i;++e)s[r]=a[t],s[r+1]=a[t+1],s[r+2]=a[t+2],s[r+3]=255,r+=c}}function k(e,t,n){let{data:r,indices:i}=e,a=t.typedBuffer,o=t.typedBufferStride,s=i.length,c=r[0];n*=o;for(let e=0;e<s;++e)a[n]=c,n+=o}function A(r,i,a,o){e(j,r,i);let s=Math.max(Math.sqrt(t(j)),1e-4);n(j,j,1/s),a[o++]=j[0],a[o++]=j[1],a[o++]=j[2],a[o++]=s}const j=r();function M(e,t,n,r,i){let{buffer:a,offset:o}=i;for(let i of t.fields.keys()){let t=e.get(i),s=t?.indices;t&&s&&N(i,t,n,r,a,o)}}function N(e,t,n,r,i,a){switch(e){case`position`:{p(t.size===3);let r=i.getField(e,f);p(!!r,`No buffer view for ${e}`),w(t,n,r,a);break}case`normal`:{p(t.size===3);let n=i.getField(e,f);p(!!n,`No buffer view for ${e}`),E(t,r,n,a);break}case`normalCompressed`:case`profileRight`:case`profileUp`:{p(t.size===2);let n=i.getField(e,l);p(!!n,`No buffer view for ${e}`),y(t,n,a);break}case`uv0`:{p(t.size===2);let n=i.getField(e,u)??i.getField(e,d);p(!!n,`No buffer view for ${e}`),y(t,n,a);break}case`uvi`:{p(t.size===2);let n=i.getField(e,l);p(!!n,`No buffer view for ${e}`),y(t,n,a);break}case`color`:case`symbolColor`:{let n=i.getField(e,o);p(!!n,`No buffer view for ${e}`),p(t.size===3||t.size===4),O(t,t.size,n,a);break}case`colorFeatureAttribute`:case`opacityFeatureAttribute`:case`sizeFeatureAttribute`:{let n=i.getField(e,c)??i.getField(e,c);p(!!n,`No buffer view for ${e}`),p(t.size===1),k(t,n,a);break}case`tangent`:{p(t.size===4);let r=i.getField(e,s);p(!!r,`No buffer view for ${e}`),D(t,n,r,a);break}case`olidColor`:p(t.size===4),O(t,4,i.getField(e,o),a)}}function P(e,t,n,r){let{data:i,stride:a,size:o,indices:s}=e;p(o===1,`Index should be 1D`);let c=s.length;for(let e=0;e<c;++e){let o=i[a*s[e]];t.set(n+e,r+o)}}function F(e,t,n,r){for(let i=0;i<r;++i)e.set(t+i,n)}export{N as writeAttribute,M as writeAttributes,h as writeBufferFloat,m as writeBufferFloat16,g as writeBufferInt16,S as writeBufferMat3f,C as writeBufferMat4f,_ as writeBufferUint32,v as writeBufferUint8,y as writeBufferVec2,b as writeBufferVec3,x as writeBufferVec4,O as writeColor,F as writeConstTextureElementIndex,A as writeDeltaF16Vector,E as writeNormal,w as writePosition,T as writePosition2d,D as writeTangent,P as writeTextureElementIndex,k as writeVVFeatureAttribute};
2
+ import{subtract as e,length as t,scale as n}from"../../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as r}from"../../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{hasIdentityRotation as i,isOrthoNormal as a}from"../../../../../core/libs/gl-matrix-2/math/mat4.js";import{BufferViewVec4u8 as o,BufferViewVec4f as s,BufferViewFloat as c,BufferViewVec2i16 as l,BufferViewVec2f16 as u,BufferViewVec2f as d,BufferViewVec3f as f}from"../../../../../geometry/support/buffer/BufferView.js";import{assert as p}from"../../lib/Util.js";function m(e,t,n){let{data:r,indices:i}=e,a=t.typedBuffer,o=t.typedBufferStride,s=i.length;n*=o;for(let e=0;e<s;++e)a[n]=r[i[e]],n+=o}function h(e,t,n,r=1){let{data:i,indices:a}=e,o=t.typedBuffer,s=t.typedBufferStride,c=a.length;if(n*=s,r===1)for(let e=0;e<c;++e)o[n]=i[a[e]],n+=s;else for(let e=0;e<c;++e){let t=i[a[e]];for(let e=0;e<r;e++)o[n]=t,n+=s}}function g(e,t,n){let{data:r,indices:i}=e,a=t.typedBuffer,o=t.typedBufferStride,s=i.length;n*=o;for(let e=0;e<s;++e)a[n]=r[i[e]],n+=o}function _(e,t,n){let{data:r,stride:i,indices:a}=e,o=a.length;for(let e=0;e<o;++e)t.set(n+e,r[i*a[e]])}function v(e,t,n){let{data:r,stride:i,indices:a}=e,o=a.length;for(let e=0;e<o;++e)t.set(n+e,r[i*a[e]])}function y(e,t,n){let{data:r,indices:i}=e,a=t.typedBuffer,o=t.typedBufferStride,s=i.length;n*=o;for(let e=0;e<s;++e){let t=2*i[e];a[n]=r[t],a[n+1]=r[t+1],n+=o}}function b(e,t,n,r=1){let{data:i,indices:a}=e,o=t.typedBuffer,s=t.typedBufferStride,c=a.length;if(n*=s,r===1)for(let e=0;e<c;++e){let t=3*a[e];o[n]=i[t],o[n+1]=i[t+1],o[n+2]=i[t+2],n+=s}else for(let e=0;e<c;++e){let t=3*a[e];for(let e=0;e<r;++e)o[n]=i[t],o[n+1]=i[t+1],o[n+2]=i[t+2],n+=s}}function x(e,t,n,r=1){let{data:i,indices:a}=e,o=t.typedBuffer,s=t.typedBufferStride,c=a.length;if(n*=s,r===1)for(let e=0;e<c;++e){let t=4*a[e];o[n]=i[t],o[n+1]=i[t+1],o[n+2]=i[t+2],o[n+3]=i[t+3],n+=s}else for(let e=0;e<c;++e){let t=4*a[e];for(let e=0;e<r;++e)o[n]=i[t],o[n+1]=i[t+1],o[n+2]=i[t+2],o[n+3]=i[t+3],n+=s}}function S(e,t,n){let{data:r,indices:i}=e,a=t.typedBuffer,o=t.typedBufferStride,s=i.length;n*=o;for(let e=0;e<s;++e){let t=9*i[e];for(let e=0;e<9;++e)a[n+e]=r[t+e];n+=o}}function C(e,t,n){let{data:r,indices:i}=e,a=t.typedBuffer,o=t.typedBufferStride,s=i.length;n*=o;for(let e=0;e<s;++e){let t=16*i[e];for(let e=0;e<16;++e)a[n+e]=r[t+e];n+=o}}function w(e,t,n,r,a=1){if(!t){b(e,n,r,a);return}let{data:o,indices:s}=e,c=n.typedBuffer,l=n.typedBufferStride,u=s.length,d=t[0],f=t[1],p=t[2],m=t[4],h=t[5],g=t[6],_=t[8],v=t[9],y=t[10],x=t[12],S=t[13],C=t[14];r*=l;let w=0,T=0,E=0,D=i(t)?e=>{w=o[e]+x,T=o[e+1]+S,E=o[e+2]+C}:e=>{let t=o[e],n=o[e+1],r=o[e+2];w=d*t+m*n+_*r+x,T=f*t+h*n+v*r+S,E=p*t+g*n+y*r+C};if(a===1)for(let e=0;e<u;++e)D(3*s[e]),c[r]=w,c[r+1]=T,c[r+2]=E,r+=l;else for(let e=0;e<u;++e){D(3*s[e]);for(let e=0;e<a;++e)c[r]=w,c[r+1]=T,c[r+2]=E,r+=l}}function T(e,t,n,r){if(!t){y(e,n,r);return}let{data:a,indices:o}=e,s=n.typedBuffer,c=n.typedBufferStride,l=o.length,u=t[0],d=t[1],f=t[4],p=t[5],m=t[12],h=t[13];r*=c;let g=0,_=0,v=i(t)?e=>{g=a[e]+m,_=a[e+1]+h}:e=>{let t=a[e],n=a[e+1];g=u*t+f*n+m,_=d*t+p*n+h};for(let e=0;e<l;++e)v(2*o[e]),s[r]=g,s[r+1]=_,r+=c}function E(e,t,n,r,o=1){if(!t){b(e,n,r,o);return}let{data:s,indices:c}=e,l=t,u=n.typedBuffer,d=n.typedBufferStride,f=c.length,p=l[0],m=l[1],h=l[2],g=l[4],_=l[5],v=l[6],y=l[8],x=l[9],S=l[10],C=!a(l),w=1e-6,T=.999999;r*=d;let E=0,D=0,O=0,k=i(l)?e=>{E=s[e],D=s[e+1],O=s[e+2]}:e=>{let t=s[e],n=s[e+1],r=s[e+2];E=p*t+g*n+y*r,D=m*t+_*n+x*r,O=h*t+v*n+S*r};if(o===1){if(C)for(let e=0;e<f;++e){k(3*c[e]);let t=E*E+D*D+O*O;if(t<T&&t>w){let e=1/Math.sqrt(t);u[r]=E*e,u[r+1]=D*e,u[r+2]=O*e}else u[r]=E,u[r+1]=D,u[r+2]=O;r+=d}else for(let e=0;e<f;++e)k(3*c[e]),u[r]=E,u[r+1]=D,u[r+2]=O,r+=d}else for(let e=0;e<f;++e){if(k(3*c[e]),C){let e=E*E+D*D+O*O;if(e<T&&e>w){let t=1/Math.sqrt(e);E*=t,D*=t,O*=t}}for(let e=0;e<o;++e)u[r]=E,u[r+1]=D,u[r+2]=O,r+=d}}function D(e,t,n,r,i=1){if(!t){x(e,n,r,i);return}let{data:o,indices:s}=e,c=t,l=n.typedBuffer,u=n.typedBufferStride,d=s.length,f=c[0],p=c[1],m=c[2],h=c[4],g=c[5],_=c[6],v=c[8],y=c[9],b=c[10],S=!a(c),C=1e-6,w=.999999;if(r*=u,i===1)for(let e=0;e<d;++e){let t=4*s[e],n=o[t],i=o[t+1],a=o[t+2],c=o[t+3],d=f*n+h*i+v*a,x=p*n+g*i+y*a,T=m*n+_*i+b*a;if(S){let e=d*d+x*x+T*T;if(e<w&&e>C){let t=1/Math.sqrt(e);d*=t,x*=t,T*=t}}l[r]=d,l[r+1]=x,l[r+2]=T,l[r+3]=c,r+=u}else for(let e=0;e<d;++e){let t=4*s[e],n=o[t],a=o[t+1],c=o[t+2],d=o[t+3],x=f*n+h*a+v*c,T=p*n+g*a+y*c,E=m*n+_*a+b*c;if(S){let e=x*x+T*T+E*E;if(e<w&&e>C){let t=1/Math.sqrt(e);x*=t,T*=t,E*=t}}for(let e=0;e<i;++e)l[r]=x,l[r+1]=T,l[r+2]=E,l[r+3]=d,r+=u}}function O(e,t,n,r,i=1){let{data:a,indices:o}=e,s=n.typedBuffer,c=n.typedBufferStride,l=o.length;if(r*=c,t===a.length&&t===4){s[r]=a[0],s[r+1]=a[1],s[r+2]=a[2],s[r+3]=a[3];let e=new Uint32Array(n.typedBuffer.buffer,n.start),t=c/4;r/=4;let o=e[r];r+=t;let u=l*i;for(let n=1;n<u;++n)e[r]=o,r+=t}else if(i===1){if(t===4){for(let e=0;e<l;++e){let t=4*o[e];s[r]=a[t],s[r+1]=a[t+1],s[r+2]=a[t+2],s[r+3]=a[t+3],r+=c}return}for(let e=0;e<l;++e){let t=3*o[e];s[r]=a[t],s[r+1]=a[t+1],s[r+2]=a[t+2],s[r+3]=255,r+=c}}else if(t===4)for(let e=0;e<l;++e){let t=4*o[e];for(let e=0;e<i;++e)s[r]=a[t],s[r+1]=a[t+1],s[r+2]=a[t+2],s[r+3]=a[t+3],r+=c}else for(let e=0;e<l;++e){let t=3*o[e];for(let e=0;e<i;++e)s[r]=a[t],s[r+1]=a[t+1],s[r+2]=a[t+2],s[r+3]=255,r+=c}}function k(e,t,n){let{data:r,indices:i}=e,a=t.typedBuffer,o=t.typedBufferStride,s=i.length,c=r[0];n*=o;for(let e=0;e<s;++e)a[n]=c,n+=o}function A(r,i,a,o){e(j,r,i);let s=Math.max(Math.sqrt(t(j)),1e-4);n(j,j,1/s),a[o++]=j[0],a[o++]=j[1],a[o++]=j[2],a[o++]=s}const j=r();function M(e,t,n,r,i){let{buffer:a,offset:o}=i;for(let i of t.fields.keys()){let t=e.get(i),s=t?.indices;t&&s&&N(i,t,n,r,a,o)}}function N(e,t,n,r,i,a){switch(e){case`position`:{p(t.size===3);let r=i.getField(e,f);p(!!r,`No buffer view for ${e}`),w(t,n,r,a);break}case`normal`:{p(t.size===3);let n=i.getField(e,f);p(!!n,`No buffer view for ${e}`),E(t,r,n,a);break}case`normalCompressed`:case`profileRight`:case`profileUp`:{p(t.size===2);let n=i.getField(e,l);p(!!n,`No buffer view for ${e}`),y(t,n,a);break}case`uv0`:{p(t.size===2);let n=i.getField(e,u)??i.getField(e,d);p(!!n,`No buffer view for ${e}`),y(t,n,a);break}case`uvi`:{p(t.size===2);let n=i.getField(e,l);p(!!n,`No buffer view for ${e}`),y(t,n,a);break}case`color`:case`symbolColor`:{let n=i.getField(e,o);p(!!n,`No buffer view for ${e}`),p(t.size===3||t.size===4),O(t,t.size,n,a);break}case`colorFeatureAttribute`:case`opacityFeatureAttribute`:case`sizeFeatureAttribute`:{let n=i.getField(e,c)??i.getField(e,c);p(!!n,`No buffer view for ${e}`),p(t.size===1),k(t,n,a);break}case`tangent`:{p(t.size===4);let r=i.getField(e,s);p(!!r,`No buffer view for ${e}`),D(t,n,r,a);break}case`olidColor`:p(t.size===4),O(t,4,i.getField(e,o),a)}}function P(e,t,n,r){let{data:i,stride:a,size:o,indices:s}=e;p(o===1,`Index should be 1D`);let c=s.length;for(let e=0;e<c;++e){let o=i[a*s[e]];t.set(n+e,r+o)}}function F(e,t,n,r){for(let i=0;i<r;++i)e.set(t+i,n)}export{N as writeAttribute,M as writeAttributes,h as writeBufferFloat,m as writeBufferFloat16,g as writeBufferInt16,S as writeBufferMat3f,C as writeBufferMat4f,_ as writeBufferUint32,v as writeBufferUint8,y as writeBufferVec2,b as writeBufferVec3,x as writeBufferVec4,O as writeColor,F as writeConstTextureElementIndex,A as writeDeltaF16Vector,E as writeNormal,w as writePosition,T as writePosition2d,D as writeTangent,P as writeTextureElementIndex,k as writeVVFeatureAttribute};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{fromTranslation as e}from"../../../../../core/libs/gl-matrix-2/math/mat4.js";import{create as t}from"../../../../../core/libs/gl-matrix-2/factories/mat4f64.js";import{negate as n,equals as r,transformMat4 as i}from"../../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as a,UNIT_X as o}from"../../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{ONES as s}from"../../../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{BufferViewVec4f16 as c,BufferViewVec3f as l,BufferViewVec2f16 as u,BufferViewVec4u8 as d,BufferViewFloat as f,BufferViewFloat16 as p,BufferViewVec3f16 as m}from"../../../../../geometry/support/buffer/BufferView.js";import{BufferGeometry as h}from"../../lib/BufferGeometry.js";import{Buffers as g}from"../../lib/Buffers.js";import{createVerticesView as _}from"../../lib/VerticesView.js";import{writeDeltaF16Vector as v}from"./bufferWriterUtils.js";import{getLayout as y}from"../../shaders/LineMarkerTechnique.js";function b(t,r,i){let{attributeData:a}=r,o=y(t.parameters).createBuffer(t.parameters.placement===`begin-end`?12:6);return n(k,i.vec3),e(A,k),x({position:_({data:a.position,size:3,stride:3},3),color:a.color??void 0,size:a.size??void 0,normal:a.normal??void 0,colorFeature:C(a.colorFeature),sizeFeature:C(a.sizeFeature),opacityFeature:C(a.opacityFeature)},t.parameters,{buffer:o,offset:0},A),new h(t,new g(o),i,r.mapPositions)}function x(e,t,n,r){S(e.position,t,{position:n.buffer.getField(`position`,l),previousDelta:n.buffer.getField(`previousDelta`,c),offset:n.offset},r);let{buffer:i,offset:a}=n,o=i.getField(`uv0`,u),s=i.getField(`color`,d),h=i.getField(`colorFeatureAttribute`,f),g=i.getField(`size`,p),_=i.getField(`sizeFeatureAttribute`,f),v=i.getField(`opacityFeatureAttribute`,f),y=i.getField(`normal`,m),b=t.placement===`begin-end`?12:6;for(let n=0;n<b;n++){let r=a+n,i=t.placement===`begin`||t.placement===`begin-end`&&n<6?0:e.position.count-1;if(o.setValues(r,w[n%6][0],w[n%6][1]),s!=null){let t=e.color??T,n=Math.min(i*4,t.length-4);s.setValues(r,t[n]*255,t[n+1]*255,t[n+2]*255,t[n+3]*255)}if(h?.set(r,e.colorFeature??0),v?.set(r,e.opacityFeature??0),g?.set(r,e.size??1),_?.set(r,e.sizeFeature??0),t.worldSpace){let t=e.normal??E;y.setValues(r,t[0],t[1],t[2])}}}function S(e,t,n,a=null){let{position:o,previousDelta:s}=n,c=n.offset,l=(t,n)=>{e.getVec(t,D);let l=t+n;do e.getVec(l,O),l+=n;while(r(D,O)&&l>=0&&l<e.count);a!=null&&(i(D,D,a),i(O,O,a));for(let e=0;e<6;e++,c++)o.setVec(c,D),v(O,D,s.typedBuffer,c*s.typedBufferStride)};(t.placement===`begin`||t.placement===`begin-end`)&&l(0,1),(t.placement===`end`||t.placement===`begin-end`)&&l(e.count-1,-1)}function C(e){return typeof e==`number`?e:e?.[0]}const w=[[-1,-1],[1,-1],[1,1],[-1,-1],[1,1],[-1,1]],T=s,E=o,D=a(),O=a(),k=a(),A=t();export{b as createLineMarkerBufferGeometry,x as writeLineMarkerBuffer,S as writeLineMarkerPositions};
2
+ import{fromTranslation as e}from"../../../../../core/libs/gl-matrix-2/math/mat4.js";import{create as t}from"../../../../../core/libs/gl-matrix-2/factories/mat4f64.js";import{negate as n,equals as r,transformMat4 as i}from"../../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as a,UNIT_X as o}from"../../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{ONES as s}from"../../../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{BufferViewVec4f16 as c,BufferViewVec3f as l,BufferViewVec2f16 as u,BufferViewVec4u8 as d,BufferViewFloat as f,BufferViewFloat16 as p,BufferViewVec3f16 as m}from"../../../../../geometry/support/buffer/BufferView.js";import{BufferGeometry as h}from"../../lib/BufferGeometry.js";import{Buffers as g}from"../../lib/Buffers.js";import{createVerticesView as _}from"../../lib/VerticesView.js";import{writeDeltaF16Vector as v}from"./bufferWriterUtils.js";import{getLayout as y}from"../../shaders/lineMarkerLayouts.js";function b(t,r,i){let{attributeData:a}=r,o=y(t.parameters).createBuffer(t.parameters.placement===`begin-end`?12:6);return n(k,i.vec3),e(A,k),x({position:_({data:a.position,size:3,stride:3},3),color:a.color??void 0,size:a.size??void 0,normal:a.normal??void 0,colorFeature:C(a.colorFeature),sizeFeature:C(a.sizeFeature),opacityFeature:C(a.opacityFeature)},t.parameters,{buffer:o,offset:0},A),new h(t,new g(o),i,r.mapPositions)}function x(e,t,n,r){S(e.position,t,{position:n.buffer.getField(`position`,l),previousDelta:n.buffer.getField(`previousDelta`,c),offset:n.offset},r);let{buffer:i,offset:a}=n,o=i.getField(`uv0`,u),s=i.getField(`color`,d),h=i.getField(`colorFeatureAttribute`,f),g=i.getField(`size`,p),_=i.getField(`sizeFeatureAttribute`,f),v=i.getField(`opacityFeatureAttribute`,f),y=i.getField(`normal`,m),b=t.placement===`begin-end`?12:6;for(let n=0;n<b;n++){let r=a+n,i=t.placement===`begin`||t.placement===`begin-end`&&n<6?0:e.position.count-1;if(o.setValues(r,w[n%6][0],w[n%6][1]),s!=null){let t=e.color??T,n=Math.min(i*4,t.length-4);s.setValues(r,t[n]*255,t[n+1]*255,t[n+2]*255,t[n+3]*255)}if(h?.set(r,e.colorFeature??0),v?.set(r,e.opacityFeature??0),g?.set(r,e.size??1),_?.set(r,e.sizeFeature??0),t.worldSpace){let t=e.normal??E;y.setValues(r,t[0],t[1],t[2])}}}function S(e,t,n,a=null){let{position:o,previousDelta:s}=n,c=n.offset,l=(t,n)=>{e.getVec(t,D);let l=t+n;do e.getVec(l,O),l+=n;while(r(D,O)&&l>=0&&l<e.count);a!=null&&(i(D,D,a),i(O,O,a));for(let e=0;e<6;e++,c++)o.setVec(c,D),v(O,D,s.typedBuffer,c*s.typedBufferStride)};(t.placement===`begin`||t.placement===`begin-end`)&&l(0,1),(t.placement===`end`||t.placement===`begin-end`)&&l(e.count-1,-1)}function C(e){return typeof e==`number`?e:e?.[0]}const w=[[-1,-1],[1,-1],[1,1],[-1,-1],[1,1],[-1,1]],T=s,E=o,D=a(),O=a(),k=a(),A=t();export{b as createLineMarkerBufferGeometry,x as writeLineMarkerBuffer,S as writeLineMarkerPositions};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import{subclass as t}from"../../../../core/accessorSupport/decorators.js";import{ZEROS as n,freeze as r,create as i}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{fromValues as a}from"../../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{glLayout as o}from"../../support/buffer/glUtil.js";import{newLayout as s}from"../../support/buffer/InterleavedLayout.js";import{VertexNormalPassParameters as c,VertexNormalDrawParameters as l}from"../core/shaderLibrary/attributes/VertexNormal.glsl.js";import{ReloadableShader as u}from"../core/shaderTechnique/ReloadableShader.js";import{ShaderTechnique as d}from"../core/shaderTechnique/ShaderTechnique.js";import{olidEnabled as f}from"../effects/geometry/olidUtils.js";import{depthWrite as p,blending as m,depthTest as h}from"../lib/OrderIndependentTransparency.js";import{stencilToolMaskBase as g,stencilBaseAllZeros as _,stencilWriteMaskOn as v}from"../lib/StencilUtils.js";import{getRenderInstanceDataLayout as y}from"../lib/lodRendering/RenderInstanceData.js";import{advancedMRRFactors as b}from"../materials/pbrUtils.js";import{polygonOffset as x}from"../materials/PolygonOffset.js";import{D as S}from"../../../../chunks/DefaultMaterial.glsl.js";import{makePipelineState as C,cullingParams as w,defaultColorWrite as T}from"../../../webgl/renderState.js";import{alphaCutoff as E}from"../../../../webscene/support/AlphaCutoff.js";class D extends c{constructor(){super(...arguments),this.isSchematic=!1,this.usePBR=!1,this.mrrFactors=b,this.hasVertexColors=!1,this.hasSymbolColors=!1,this.doubleSided=!1,this.doubleSidedType=`normal`,this.cullFace=2,this.instanced=!1,this.instancedFeatureAttribute=!1,this.instancedColor=!1,this.instanceColorEncodesAlphaIgnore=!1,this.emissiveStrengthFromSymbol=0,this.emissiveStrengthKHR=1,this.emissiveSource=1,this.emissiveBaseColor=n,this.instancedDoublePrecision=!1,this.normalType=0,this.receiveShadows=!0,this.receiveAmbientOcclusion=!0,this.castShadows=!0,this.ambient=r(.2,.2,.2),this.diffuse=r(.8,.8,.8),this.externalColor=a(1,1,1,1),this.colorMixMode=`multiply`,this.opacity=1,this.layerOpacity=1,this.origin=i(),this.hasSlicePlane=!1,this.offsetTransparentBackfaces=!1,this.vvSize=null,this.vvColor=null,this.vvOpacity=null,this.modelTransformation=null,this.drivenOpacity=!1,this.customDepthTest=0,this.textureAlphaMode=0,this.textureAlphaCutoff=E,this.textureAlphaPremultiplied=!1,this.renderOccluded=1,this.testsTransparentRenderOrder=0,this.isDecoration=!1}get emissiveStrength(){return this.emissiveStrengthFromSymbol*this.emissiveStrengthKHR}get hasVVSize(){return!!this.vvSize}get hasVVColor(){return!!this.vvColor}get hasVVOpacity(){return!!this.vvOpacity}}class O extends l{constructor(){super(...arguments),this.origin=i(),this.slicePlaneLocalOrigin=this.origin}get localOrigin(){return this.origin}}let k=class extends d{constructor(e,t){let n=o(M(t));t.instanced&&t.instancedDoublePrecision&&(n=n.concat(o(y(t)))),super(e,t,n),this.shader=new u(S,()=>import(`./DefaultMaterial.glsl.js`)),this.ignoreUnused=!0}_makePipeline(e,t){let{output:n,transparent:r,cullFace:i,customDepthTest:a,hasOccludees:o}=e;return C({blending:r?m(n,!1,e.emissionDimmingPass):null,culling:j(e)?w(i):null,depthTest:h(n,A(a)),depthWrite:p(e),colorWrite:T,stencilWrite:o?v:null,stencilTest:o?t?g:_:null,polygonOffset:x(e)})}initializePipeline(e){return this._occludeePipelineState=this._makePipeline(e,!0),this._makePipeline(e,!1)}getPipeline(e,t,n){return n?this._occludeePipelineState:super.getPipeline(e,t,n)}};k=e([t(`esri.views.3d.webgl-engine.shaders.DefaultMaterialTechnique`)],k);function A(e){switch(e){case 1:return 515;case 0:return 513;case 2:return 516;case 3:return 514;case 4:return 513}}function j(e){return e.cullFace!==0||!e.hasSlicePlane&&!e.transparent&&!e.doubleSidedMode}function M(e){let t=s().vec3f(`position`);return e.normalType===1?t.vec2i16(`normalCompressed`,{glNormalized:!0}):t.vec3f(`normal`),e.hasVertexTangents&&t.vec4f(`tangent`),e.hasTextures&&t.vec2f16(`uv0`),e.hasVertexColors&&t.vec4u8(`color`,{glNormalized:!0}),e.hasSymbolColors&&t.vec4u8(`symbolColor`),!e.instanced&&f()&&t.vec4u8(`olidColor`),t}export{O as DefaultMaterialDrawParameters,D as DefaultMaterialPassParameters,k as DefaultMaterialTechnique,M as getLayout,j as isCullingRequired};
2
+ import{__decorate as e}from"tslib";import{subclass as t}from"../../../../core/accessorSupport/decorators.js";import{ZEROS as n,freeze as r,create as i}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{fromValues as a}from"../../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{glLayout as o}from"../../support/buffer/glUtil.js";import{newLayout as s}from"../../support/buffer/InterleavedLayout.js";import{VertexNormalPassParameters as c,VertexNormalDrawParameters as l}from"../core/shaderLibrary/attributes/VertexNormal.glsl.js";import{ReloadableShader as u}from"../core/shaderTechnique/ReloadableShader.js";import{ShaderTechnique as d}from"../core/shaderTechnique/ShaderTechnique.js";import{olidEnabled as f}from"../effects/geometry/olidUtils.js";import{depthWrite as p,depthTest as m,blending as h}from"../lib/OrderIndependentTransparency.js";import{stencilToolMaskBase as g,stencilBaseAllZeros as _,stencilWriteMaskOn as v}from"../lib/StencilUtils.js";import{getRenderInstanceDataLayout as y}from"../lib/lodRendering/RenderInstanceData.js";import{advancedMRRFactors as b}from"../materials/pbrUtils.js";import{polygonOffset as x}from"../materials/PolygonOffset.js";import{D as S}from"../../../../chunks/DefaultMaterial.glsl.js";import{makePipelineState as C,defaultColorWrite as w,cullingParams as T}from"../../../webgl/renderState.js";import{alphaCutoff as E}from"../../../../webscene/support/AlphaCutoff.js";class D extends c{constructor(){super(...arguments),this.isSchematic=!1,this.usePBR=!1,this.mrrFactors=b,this.hasVertexColors=!1,this.hasSymbolColors=!1,this.doubleSided=!1,this.doubleSidedType=`normal`,this.cullFace=2,this.instanced=!1,this.instancedFeatureAttribute=!1,this.instancedColor=!1,this.instanceColorEncodesAlphaIgnore=!1,this.emissiveStrengthFromSymbol=0,this.emissiveStrengthKHR=1,this.emissiveSource=1,this.emissiveBaseColor=n,this.instancedDoublePrecision=!1,this.normalType=0,this.receiveShadows=!0,this.receiveAmbientOcclusion=!0,this.castShadows=!0,this.ambient=r(.2,.2,.2),this.diffuse=r(.8,.8,.8),this.externalColor=a(1,1,1,1),this.colorMixMode=`multiply`,this.opacity=1,this.layerOpacity=1,this.origin=i(),this.hasSlicePlane=!1,this.offsetTransparentBackfaces=!1,this.vvSize=null,this.vvColor=null,this.vvOpacity=null,this.modelTransformation=null,this.drivenOpacity=!1,this.customDepthTest=0,this.textureAlphaMode=0,this.textureAlphaCutoff=E,this.textureAlphaPremultiplied=!1,this.renderOccluded=1,this.testsTransparentRenderOrder=0,this.isDecoration=!1}get emissiveStrength(){return this.emissiveStrengthFromSymbol*this.emissiveStrengthKHR}get hasVVSize(){return!!this.vvSize}get hasVVColor(){return!!this.vvColor}get hasVVOpacity(){return!!this.vvOpacity}}class O extends l{constructor(){super(...arguments),this.origin=i(),this.slicePlaneLocalOrigin=this.origin}get localOrigin(){return this.origin}}let k=class extends d{constructor(e,t){let n=o(M(t));t.instanced&&t.instancedDoublePrecision&&(n=n.concat(o(y(t)))),super(e,t,n),this.shader=new u(S,()=>import(`./DefaultMaterial.glsl.js`)),this.ignoreUnused=!0}_makePipeline(e,t){let{output:n,transparent:r,cullFace:i,customDepthTest:a,hasOccludees:o}=e;return C({blending:r?h(n,!1,e.emissionDimmingPass):null,culling:j(e)?T(i):null,depthTest:m(n,A(a)),depthWrite:p(e),colorWrite:w,stencilWrite:o?v:null,stencilTest:o?t?g:_:null,polygonOffset:x(e)})}initializePipeline(e){return this._occludeePipelineState=this._makePipeline(e,!0),this._makePipeline(e,!1)}getPipeline(e,t,n){return n?this._occludeePipelineState:super.getPipeline(e,t,n)}};k=e([t(`esri.views.3d.webgl-engine.shaders.DefaultMaterialTechnique`)],k);function A(e){switch(e){case 1:return 515;case 0:return 513;case 2:return 516;case 3:return 514;case 4:return 513}}function j(e){return e.cullFace!==0||!e.hasSlicePlane&&!e.transparent&&!e.doubleSidedMode}function M(e){let t=s().vec3f(`position`);return e.normalType===1?t.vec2i16(`normalCompressed`,{glNormalized:!0}):t.vec3f(`normal`),e.hasVertexTangents&&t.vec4f(`tangent`),e.hasTextures&&t.vec2f16(`uv0`),e.hasVertexColors&&t.vec4u8(`color`,{glNormalized:!0}),e.hasSymbolColors&&t.vec4u8(`symbolColor`),!e.instanced&&f()&&t.vec4u8(`olidColor`),t}export{O as DefaultMaterialDrawParameters,D as DefaultMaterialPassParameters,k as DefaultMaterialTechnique,M as getLayout,j as isCullingRequired};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import{subclass as t}from"../../../../core/accessorSupport/decorators.js";import{glLayout as n}from"../../support/buffer/glUtil.js";import{newLayout as r}from"../../support/buffer/InterleavedLayout.js";import{isOITColorAlpha as i}from"../core/shaderLibrary/ShaderOutput.js";import{ReloadableShader as a}from"../core/shaderTechnique/ReloadableShader.js";import{ShaderTechnique as o}from"../core/shaderTechnique/ShaderTechnique.js";import{olidEnabled as s}from"../effects/geometry/olidUtils.js";import{blending as c}from"../lib/OrderIndependentTransparency.js";import{polygonOffset as l}from"../materials/PolygonOffset.js";import{H as u}from"../../../../chunks/HUDMaterial.glsl.js";import{PrimitiveType as d}from"../../../webgl/enums.js";import{makePipelineState as f,defaultColorWrite as p,defaultDepthWrite as m}from"../../../webgl/renderState.js";let h=class extends o{constructor(e,t){super(e,t,n(g).concat(n(_(t)))),this.shader=new a(u,()=>import(`./HUDMaterial.glsl.js`)),this.ignoreUnused=!0,this.primitiveType=d.TRIANGLE_STRIP}initializePipeline(e){let{draped:t,output:n,depthTestEnabled:r}=e,a=i(n),o=r&&!t&&!a&&n!==10;return f({blending:c(n,!0),depthTest:r&&!t?{func:515}:null,depthWrite:o?m:null,colorWrite:p,polygonOffset:l(e)})}};h=e([t(`esri.views.3d.webgl-engine.shaders.HUDMaterialTechnique`)],h);const g=r().vec2u8(`uv0`,{glNormalized:!0});function _(e){let t=r().vec3f(`position`).vec3f(`normal`).f32(`groundDistance`);return e.hasVertexCenterOffset&&(t=t.vec3f(`centerOffset`)),e.hasVertexColor&&(t=t.vec4u8(`color`,{glNormalized:!0})),e.hasVertexSize&&(t=t.vec2f(`size`)),e.hasVertexRotation&&(t=t.f32(`rotation`)),(e.hasVVColor||e.hasVVSize)&&(t=t.vec4f(`featureAttribute`)),e.hasVertexUVi&&(t=t.vec4i16(`uvi`)),s()?t.vec4u8(`olidColor`):t}export{h as HUDMaterialTechnique,g as baseLayout,_ as getInstanceLayout};
2
+ import{__decorate as e}from"tslib";import{subclass as t}from"../../../../core/accessorSupport/decorators.js";import{glLayout as n}from"../../support/buffer/glUtil.js";import{isOITColorAlpha as r}from"../core/shaderLibrary/ShaderOutput.js";import{ReloadableShader as i}from"../core/shaderTechnique/ReloadableShader.js";import{ShaderTechnique as a}from"../core/shaderTechnique/ShaderTechnique.js";import{blending as o}from"../lib/OrderIndependentTransparency.js";import{polygonOffset as s}from"../materials/PolygonOffset.js";import{H as c}from"../../../../chunks/HUDMaterial.glsl.js";import{baseLayout as l,getInstanceLayout as u}from"./hudMaterialLayouts.js";import{PrimitiveType as d}from"../../../webgl/enums.js";import{makePipelineState as f,defaultColorWrite as p,defaultDepthWrite as m}from"../../../webgl/renderState.js";let h=class extends a{constructor(e,t){super(e,t,n(l).concat(n(u(t)))),this.shader=new i(c,()=>import(`./HUDMaterial.glsl.js`)),this.ignoreUnused=!0,this.primitiveType=d.TRIANGLE_STRIP}initializePipeline(e){let{draped:t,output:n,depthTestEnabled:i}=e,a=r(n),c=i&&!t&&!a&&n!==10;return f({blending:o(n,!0),depthTest:i&&!t?{func:515}:null,depthWrite:c?m:null,colorWrite:p,polygonOffset:s(e)})}};h=e([t(`esri.views.3d.webgl-engine.shaders.HUDMaterialTechnique`)],h);export{h as HUDMaterialTechnique};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import{subclass as t}from"../../../../core/accessorSupport/decorators.js";import{glLayout as n}from"../../support/buffer/glUtil.js";import{newLayout as r}from"../../support/buffer/InterleavedLayout.js";import{ReloadableShader as i}from"../core/shaderTechnique/ReloadableShader.js";import{ShaderTechnique as a}from"../core/shaderTechnique/ShaderTechnique.js";import{depthWrite as o,depthTest as s,blending as c}from"../lib/OrderIndependentTransparency.js";import{stencilToolMaskBase as l,stencilBaseAllZeros as u,stencilWriteMaskOn as d,stencilToolTransparentOccluder as f,depthCompareAlways as p,stencilToolMaskOccluder as m,stencilWriteMaskOff as h,depthCompareLess as g}from"../lib/StencilUtils.js";import{lineMarkerPolygonOffset as _}from"../materials/PolygonOffset.js";import{L as v}from"../../../../chunks/LineMarker.glsl.js";import{makePipelineState as y,defaultColorWrite as b,unpremultipliedAlphaToPremultipliedAlpha as x}from"../../../webgl/renderState.js";let S=class extends a{constructor(e,t){super(e,t,n(C(t))),this.shader=new i(v,()=>import(`./LineMarker.glsl.js`))}_makePipelineState(e,t){let{output:n,draped:r,hasOccludees:i}=e;return y({blending:c(n,!1,e.emissionDimmingPass),depthTest:r?null:s(n),depthWrite:o(e),colorWrite:b,stencilWrite:i?d:null,stencilTest:i?t?l:u:null,polygonOffset:_})}initializePipeline(e){return e.occluder?(this._occluderPipelineTransparent=y({blending:x,depthTest:p,depthWrite:null,colorWrite:b,stencilWrite:null,stencilTest:f}),this._occluderPipelineOpaque=y({blending:x,depthTest:p,depthWrite:null,colorWrite:b,stencilWrite:h,stencilTest:m}),this._occluderPipelineMaskWrite=y({blending:null,depthTest:g,depthWrite:null,colorWrite:null,stencilWrite:d,stencilTest:l})):this._occluderPipelineTransparent=this._occluderPipelineOpaque=this._occluderPipelineMaskWrite=null,this._occludeePipelineState=this._makePipelineState(e,!0),this._makePipelineState(e,!1)}getPipeline(e,t,n){return n?this._occludeePipelineState:e.occluder===11?this._occluderPipelineTransparent??super.getPipeline(e,t,n):e.occluder===10?this._occluderPipelineOpaque??super.getPipeline(e,t,n):this._occluderPipelineMaskWrite??super.getPipeline(e,t,n)}};S=e([t(`esri.views.3d.webgl-engine.shaders.LineMarkerTechnique`)],S);function C(e){let t=r().vec3f(`position`).vec4f16(`previousDelta`).vec2f16(`uv0`);return e.hasVVColor?t.f32(`colorFeatureAttribute`):t.vec4u8(`color`,{glNormalized:!0}),e.hasVVOpacity&&t.f32(`opacityFeatureAttribute`),e.hasVVSize?t.f32(`sizeFeatureAttribute`):t.f16(`size`),e.worldSpace&&t.vec3f16(`normal`),t.freeze()}export{S as LineMarkerTechnique,C as getLayout};
2
+ import{__decorate as e}from"tslib";import{subclass as t}from"../../../../core/accessorSupport/decorators.js";import{glLayout as n}from"../../support/buffer/glUtil.js";import{ReloadableShader as r}from"../core/shaderTechnique/ReloadableShader.js";import{ShaderTechnique as i}from"../core/shaderTechnique/ShaderTechnique.js";import{depthWrite as a,depthTest as o,blending as s}from"../lib/OrderIndependentTransparency.js";import{stencilToolMaskBase as c,stencilBaseAllZeros as l,stencilWriteMaskOn as u,stencilToolTransparentOccluder as d,depthCompareAlways as f,stencilToolMaskOccluder as p,stencilWriteMaskOff as m,depthCompareLess as h}from"../lib/StencilUtils.js";import{lineMarkerPolygonOffset as g}from"../materials/PolygonOffset.js";import{L as _}from"../../../../chunks/LineMarker.glsl.js";import{getLayout as v}from"./lineMarkerLayouts.js";import{makePipelineState as y,defaultColorWrite as b,unpremultipliedAlphaToPremultipliedAlpha as x}from"../../../webgl/renderState.js";let S=class extends i{constructor(e,t){super(e,t,n(v(t))),this.shader=new r(_,()=>import(`./LineMarker.glsl.js`))}_makePipelineState(e,t){let{output:n,draped:r,hasOccludees:i}=e;return y({blending:s(n,!1,e.emissionDimmingPass),depthTest:r?null:o(n),depthWrite:a(e),colorWrite:b,stencilWrite:i?u:null,stencilTest:i?t?c:l:null,polygonOffset:g})}initializePipeline(e){return e.occluder?(this._occluderPipelineTransparent=y({blending:x,depthTest:f,depthWrite:null,colorWrite:b,stencilWrite:null,stencilTest:d}),this._occluderPipelineOpaque=y({blending:x,depthTest:f,depthWrite:null,colorWrite:b,stencilWrite:m,stencilTest:p}),this._occluderPipelineMaskWrite=y({blending:null,depthTest:h,depthWrite:null,colorWrite:null,stencilWrite:u,stencilTest:c})):this._occluderPipelineTransparent=this._occluderPipelineOpaque=this._occluderPipelineMaskWrite=null,this._occludeePipelineState=this._makePipelineState(e,!0),this._makePipelineState(e,!1)}getPipeline(e,t,n){return n?this._occludeePipelineState:e.occluder===11?this._occluderPipelineTransparent??super.getPipeline(e,t,n):e.occluder===10?this._occluderPipelineOpaque??super.getPipeline(e,t,n):this._occluderPipelineMaskWrite??super.getPipeline(e,t,n)}};S=e([t(`esri.views.3d.webgl-engine.shaders.LineMarkerTechnique`)],S);export{S as LineMarkerTechnique};
@@ -0,0 +1,2 @@
1
+ /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
+ import{newLayout as e}from"../../support/buffer/InterleavedLayout.js";import{olidEnabled as t}from"../effects/geometry/olidUtils.js";const n=e().vec2u8(`uv0`,{glNormalized:!0});function r(n){let r=e().vec3f(`position`).vec3f(`normal`).f32(`groundDistance`);return n.hasVertexCenterOffset&&(r=r.vec3f(`centerOffset`)),n.hasVertexColor&&(r=r.vec4u8(`color`,{glNormalized:!0})),n.hasVertexSize&&(r=r.vec2f(`size`)),n.hasVertexRotation&&(r=r.f32(`rotation`)),(n.hasVVColor||n.hasVVSize)&&(r=r.vec4f(`featureAttribute`)),n.hasVertexUVi&&(r=r.vec4i16(`uvi`)),t()?r.vec4u8(`olidColor`):r}export{n as baseLayout,r as getInstanceLayout};
@@ -0,0 +1,2 @@
1
+ /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
+ import{newLayout as e}from"../../support/buffer/InterleavedLayout.js";function t(t){let n=e().vec3f(`position`).vec4f16(`previousDelta`).vec2f16(`uv0`);return t.hasVVColor?n.f32(`colorFeatureAttribute`):n.vec4u8(`color`,{glNormalized:!0}),t.hasVVOpacity&&n.f32(`opacityFeatureAttribute`),t.hasVVSize?n.f32(`sizeFeatureAttribute`):n.f16(`size`),t.worldSpace&&n.vec3f16(`normal`),n.freeze()}export{t as getLayout};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import t from"../../core/Accessor.js";import{property as n,subclass as r}from"../../core/accessorSupport/decorators.js";import"../../libs/maquette/projection.js";import{h as i}from"../../libs/maquette/h.js";import"../../libs/maquette/projector.js";let a=class extends t{get startPosition(){return[this.startX,this.startY]}set startPosition(e){this._set(`startX`,e[0]),this._set(`startY`,e[1])}get endPosition(){return[this.endX,this.endY]}set endPosition(e){this._set(`endX`,e[0]),this._set(`endY`,e[1])}constructor(e){super(e),this.startX=0,this.startY=0,this.endX=0,this.endY=0,this.width=1,this.color=[0,0,0,.5],this.visible=!0,this.isDecoration=!0}get _strokeStyle(){let e=this.color;return`rgba(${e[0]}, ${e[1]}, ${e[2]}, ${e[3]})`}get _lineCap(){return`round`}render(){let{height:e,left:t,top:n,width:r,x1:a,x2:s,y1:c,y2:l}=this._calculateCoordinates(o),u=`stroke: ${this._strokeStyle}; stroke-width: ${this.width}; stroke-linecap: ${this._lineCap};`;return i(`div`,{classes:{"esri-line-overlay-item":!0},styles:{left:t+`px`,top:n+`px`,width:r+`px`,height:e+`px`,visibility:this.visible?`visible`:`hidden`}},[i(`svg`,{width:r,height:e},[i(`line`,{x1:a,y1:c,x2:s,y2:l,style:u})])])}renderCanvas(e){if(!this.visible)return;e.strokeStyle=this._strokeStyle,e.lineWidth=this.width,e.lineCap=this._lineCap;let t=this._calculateCoordinates(o);e.beginPath(),e.moveTo(t.left+t.x1,t.top+t.y1),e.lineTo(t.left+t.x2,t.top+t.y2),e.stroke()}_calculateCoordinates(e){let t=Math.min(this.startX,this.endX),n=Math.max(this.startX,this.endX),r=Math.min(this.startY,this.endY),i=Math.max(this.startY,this.endY),a=this.width;return e.left=t-a,e.top=r-a,e.width=n-t+2*a,e.height=Math.max(20,i-r+2*a),e.x1=this.startX-t+a,e.y1=this.startY-r+a,e.x2=this.endX-t+a,e.y2=this.endY-r+a,e}};e([n()],a.prototype,`startX`,void 0),e([n()],a.prototype,`startY`,void 0),e([n()],a.prototype,`endX`,void 0),e([n()],a.prototype,`endY`,void 0),e([n()],a.prototype,`startPosition`,null),e([n()],a.prototype,`endPosition`,null),e([n()],a.prototype,`width`,void 0),e([n()],a.prototype,`color`,void 0),e([n()],a.prototype,`visible`,void 0),e([n()],a.prototype,`isDecoration`,void 0),e([n({readOnly:!0})],a.prototype,`_strokeStyle`,null),a=e([r(`esri.views.overlay.LineOverlayItem`)],a);const o={left:0,top:0,width:0,height:0,x1:0,y1:0,x2:0,y2:0},s=a;export{s as default};
2
+ import{__decorate as e}from"tslib";import t from"../../core/Accessor.js";import{property as n,subclass as r}from"../../core/accessorSupport/decorators.js";import"../../chunks/projector.js";import{h as i}from"../../chunks/h.js";let a=class extends t{get startPosition(){return[this.startX,this.startY]}set startPosition(e){this._set(`startX`,e[0]),this._set(`startY`,e[1])}get endPosition(){return[this.endX,this.endY]}set endPosition(e){this._set(`endX`,e[0]),this._set(`endY`,e[1])}constructor(e){super(e),this.startX=0,this.startY=0,this.endX=0,this.endY=0,this.width=1,this.color=[0,0,0,.5],this.visible=!0,this.isDecoration=!0}get _strokeStyle(){let e=this.color;return`rgba(${e[0]}, ${e[1]}, ${e[2]}, ${e[3]})`}get _lineCap(){return`round`}render(){let{height:e,left:t,top:n,width:r,x1:a,x2:s,y1:c,y2:l}=this._calculateCoordinates(o),u=`stroke: ${this._strokeStyle}; stroke-width: ${this.width}; stroke-linecap: ${this._lineCap};`;return i(`div`,{classes:{"esri-line-overlay-item":!0},styles:{left:t+`px`,top:n+`px`,width:r+`px`,height:e+`px`,visibility:this.visible?`visible`:`hidden`}},[i(`svg`,{width:r,height:e},[i(`line`,{x1:a,y1:c,x2:s,y2:l,style:u})])])}renderCanvas(e){if(!this.visible)return;e.strokeStyle=this._strokeStyle,e.lineWidth=this.width,e.lineCap=this._lineCap;let t=this._calculateCoordinates(o);e.beginPath(),e.moveTo(t.left+t.x1,t.top+t.y1),e.lineTo(t.left+t.x2,t.top+t.y2),e.stroke()}_calculateCoordinates(e){let t=Math.min(this.startX,this.endX),n=Math.max(this.startX,this.endX),r=Math.min(this.startY,this.endY),i=Math.max(this.startY,this.endY),a=this.width;return e.left=t-a,e.top=r-a,e.width=n-t+2*a,e.height=Math.max(20,i-r+2*a),e.x1=this.startX-t+a,e.y1=this.startY-r+a,e.x2=this.endX-t+a,e.y2=this.endY-r+a,e}};e([n()],a.prototype,`startX`,void 0),e([n()],a.prototype,`startY`,void 0),e([n()],a.prototype,`endX`,void 0),e([n()],a.prototype,`endY`,void 0),e([n()],a.prototype,`startPosition`,null),e([n()],a.prototype,`endPosition`,null),e([n()],a.prototype,`width`,void 0),e([n()],a.prototype,`color`,void 0),e([n()],a.prototype,`visible`,void 0),e([n()],a.prototype,`isDecoration`,void 0),e([n({readOnly:!0})],a.prototype,`_strokeStyle`,null),a=e([r(`esri.views.overlay.LineOverlayItem`)],a);const o={left:0,top:0,width:0,height:0,x1:0,y1:0,x2:0,y2:0},s=a;export{s as default};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import t from"../../Color.js";import n from"../../core/Accessor.js";import{property as r,subclass as i}from"../../core/accessorSupport/decorators.js";import"../../libs/maquette/projection.js";import{h as a}from"../../libs/maquette/h.js";import"../../libs/maquette/projector.js";const o={bottom:`esri-text-overlay-item-anchor-bottom`,"bottom-right":`esri-text-overlay-item-anchor-bottom-right`,"bottom-left":`esri-text-overlay-item-anchor-bottom-left`,top:`esri-text-overlay-item-anchor-top`,"top-right":`esri-text-overlay-item-anchor-top-right`,"top-left":`esri-text-overlay-item-anchor-top-left`,center:`esri-text-overlay-item-anchor-center`,right:`esri-text-overlay-item-anchor-right`,left:`esri-text-overlay-item-anchor-left`};let s=class extends n{get position(){return[this.x,this.y]}set position(e){this._set(`x`,e[0]),this._set(`y`,e[1])}set visible(e){this._visible=e}get visible(){return this._visible&&!!this.text}get _textShadowColor(){let{textColor:e,backgroundColor:t}=this,n=t.clone();return n.a*=e.a,n}get _textShadow(){let e=this._textShadowColor.toCss(!0);return`0 0 ${this._textShadowSize}px ${e}`}get padding(){return .5*this.fontSize}get borderRadius(){return this.padding}set borderRadius(e){this._overrideIfSome(`borderRadius`,e)}constructor(e){super(e),this.x=0,this.y=0,this.text=`-`,this.fontSize=14,this.anchor=`center`,this._visible=!0,this.isDecoration=!0,this.backgroundColor=new t([0,0,0,.6]),this.textColor=new t([255,255,255]),this._textShadowSize=1}render(){return a(`div`,{classes:this._cssClasses(),styles:{left:Math.floor(this.x)+`px`,top:Math.floor(this.y)+`px`,visibility:this.visible?`visible`:`hidden`,fontSize:this.fontSize+`px`,lineHeight:this.fontSize+`px`,backgroundColor:this.backgroundColor.toCss(!0),color:this.textColor.toCss(!0),padding:this.padding+`px`,borderRadius:this.borderRadius+`px`,textShadow:this._textShadow}},[this.text])}renderCanvas(e){if(!this.visible)return;let t=e.font.replace(/^(.*?)px/,``);e.font=`${this.fontSize}px ${t}`;let{padding:n,borderRadius:r}=this,i=e.measureText(this.text).width,a=this.text===``?0:this.fontSize,o=c[this.anchor];e.textAlign=`center`,e.textBaseline=`middle`;let s=i+2*n,l=a+2*n,u=this.x+o.x*s,d=this.y+o.y*l;this._roundedRect(e,u,d,s,l,r),e.fillStyle=this.backgroundColor.toCss(!0),e.fill();let f=this.x+(o.x+.5)*s,p=this.y+(o.y+.5)*l;this._renderTextShadow(e,this.text,f,p),e.fillStyle=this.textColor.toCss(!0),e.fillText(this.text,f,p)}_renderTextShadow(e,t,n,r){e.lineJoin=`miter`,e.fillStyle=`rgba(${this._textShadowColor.r}, ${this._textShadowColor.g}, ${this._textShadowColor.b}, ${1/l.length})`;let i=this._textShadowSize;for(let[a,o]of l)e.fillText(t,n+i*a,r+i*o)}_roundedRect(e,t,n,r,i,a){a=Math.min(a,i/2,r/2),e.beginPath(),e.moveTo(t,n+a),e.arcTo(t,n,t+a,n,a),e.lineTo(t+r-a,n),e.arcTo(t+r,n,t+r,n+a,a),e.lineTo(t+r,n+i-a),e.arcTo(t+r,n+i,t+r-a,n+i,a),e.lineTo(t+a,n+i),e.arcTo(t,n+i,t,n+i-a,a),e.closePath()}_cssClasses(){let e={"esri-text-overlay-item":!0},t;for(t in o)e[o[t]]=this.anchor===t;return e}};e([r()],s.prototype,`x`,void 0),e([r()],s.prototype,`y`,void 0),e([r()],s.prototype,`position`,null),e([r()],s.prototype,`text`,void 0),e([r()],s.prototype,`fontSize`,void 0),e([r()],s.prototype,`anchor`,void 0),e([r()],s.prototype,`_visible`,void 0),e([r()],s.prototype,`visible`,null),e([r()],s.prototype,`isDecoration`,void 0),e([r()],s.prototype,`backgroundColor`,void 0),e([r()],s.prototype,`textColor`,void 0),e([r()],s.prototype,`_textShadowSize`,void 0),e([r()],s.prototype,`_textShadowColor`,null),e([r()],s.prototype,`_textShadow`,null),e([r()],s.prototype,`padding`,null),e([r()],s.prototype,`borderRadius`,null),s=e([i(`esri.views.overlay.TextOverlayItem`)],s);const c={bottom:{x:-.5,y:-1,textAlign:`center`,textBaseline:`bottom`},"bottom-left":{x:0,y:-1,textAlign:`left`,textBaseline:`bottom`},"bottom-right":{x:-1,y:-1,textAlign:`right`,textBaseline:`bottom`},center:{x:-.5,y:-.5,textAlign:`center`,textBaseline:`middle`},left:{x:0,y:-.5,textAlign:`left`,textBaseline:`middle`},right:{x:-1,y:-.5,textAlign:`right`,textBaseline:`middle`},top:{x:-.5,y:0,textAlign:`center`,textBaseline:`top`},"top-left":{x:0,y:0,textAlign:`left`,textBaseline:`top`},"top-right":{x:-1,y:0,textAlign:`right`,textBaseline:`top`}},l=[];for(let e=0;e<360;e+=360/16)l.push([Math.cos(Math.PI*e/180),Math.sin(Math.PI*e/180)]);export{s as default};
2
+ import{__decorate as e}from"tslib";import t from"../../Color.js";import n from"../../core/Accessor.js";import{property as r,subclass as i}from"../../core/accessorSupport/decorators.js";import"../../chunks/projector.js";import{h as a}from"../../chunks/h.js";const o={bottom:`esri-text-overlay-item-anchor-bottom`,"bottom-right":`esri-text-overlay-item-anchor-bottom-right`,"bottom-left":`esri-text-overlay-item-anchor-bottom-left`,top:`esri-text-overlay-item-anchor-top`,"top-right":`esri-text-overlay-item-anchor-top-right`,"top-left":`esri-text-overlay-item-anchor-top-left`,center:`esri-text-overlay-item-anchor-center`,right:`esri-text-overlay-item-anchor-right`,left:`esri-text-overlay-item-anchor-left`};let s=class extends n{get position(){return[this.x,this.y]}set position(e){this._set(`x`,e[0]),this._set(`y`,e[1])}set visible(e){this._visible=e}get visible(){return this._visible&&!!this.text}get _textShadowColor(){let{textColor:e,backgroundColor:t}=this,n=t.clone();return n.a*=e.a,n}get _textShadow(){let e=this._textShadowColor.toCss(!0);return`0 0 ${this._textShadowSize}px ${e}`}get padding(){return .5*this.fontSize}get borderRadius(){return this.padding}set borderRadius(e){this._overrideIfSome(`borderRadius`,e)}constructor(e){super(e),this.x=0,this.y=0,this.text=`-`,this.fontSize=14,this.anchor=`center`,this._visible=!0,this.isDecoration=!0,this.backgroundColor=new t([0,0,0,.6]),this.textColor=new t([255,255,255]),this._textShadowSize=1}render(){return a(`div`,{classes:this._cssClasses(),styles:{left:Math.floor(this.x)+`px`,top:Math.floor(this.y)+`px`,visibility:this.visible?`visible`:`hidden`,fontSize:this.fontSize+`px`,lineHeight:this.fontSize+`px`,backgroundColor:this.backgroundColor.toCss(!0),color:this.textColor.toCss(!0),padding:this.padding+`px`,borderRadius:this.borderRadius+`px`,textShadow:this._textShadow}},[this.text])}renderCanvas(e){if(!this.visible)return;let t=e.font.replace(/^(.*?)px/,``);e.font=`${this.fontSize}px ${t}`;let{padding:n,borderRadius:r}=this,i=e.measureText(this.text).width,a=this.text===``?0:this.fontSize,o=c[this.anchor];e.textAlign=`center`,e.textBaseline=`middle`;let s=i+2*n,l=a+2*n,u=this.x+o.x*s,d=this.y+o.y*l;this._roundedRect(e,u,d,s,l,r),e.fillStyle=this.backgroundColor.toCss(!0),e.fill();let f=this.x+(o.x+.5)*s,p=this.y+(o.y+.5)*l;this._renderTextShadow(e,this.text,f,p),e.fillStyle=this.textColor.toCss(!0),e.fillText(this.text,f,p)}_renderTextShadow(e,t,n,r){e.lineJoin=`miter`,e.fillStyle=`rgba(${this._textShadowColor.r}, ${this._textShadowColor.g}, ${this._textShadowColor.b}, ${1/l.length})`;let i=this._textShadowSize;for(let[a,o]of l)e.fillText(t,n+i*a,r+i*o)}_roundedRect(e,t,n,r,i,a){a=Math.min(a,i/2,r/2),e.beginPath(),e.moveTo(t,n+a),e.arcTo(t,n,t+a,n,a),e.lineTo(t+r-a,n),e.arcTo(t+r,n,t+r,n+a,a),e.lineTo(t+r,n+i-a),e.arcTo(t+r,n+i,t+r-a,n+i,a),e.lineTo(t+a,n+i),e.arcTo(t,n+i,t,n+i-a,a),e.closePath()}_cssClasses(){let e={"esri-text-overlay-item":!0},t;for(t in o)e[o[t]]=this.anchor===t;return e}};e([r()],s.prototype,`x`,void 0),e([r()],s.prototype,`y`,void 0),e([r()],s.prototype,`position`,null),e([r()],s.prototype,`text`,void 0),e([r()],s.prototype,`fontSize`,void 0),e([r()],s.prototype,`anchor`,void 0),e([r()],s.prototype,`_visible`,void 0),e([r()],s.prototype,`visible`,null),e([r()],s.prototype,`isDecoration`,void 0),e([r()],s.prototype,`backgroundColor`,void 0),e([r()],s.prototype,`textColor`,void 0),e([r()],s.prototype,`_textShadowSize`,void 0),e([r()],s.prototype,`_textShadowColor`,null),e([r()],s.prototype,`_textShadow`,null),e([r()],s.prototype,`padding`,null),e([r()],s.prototype,`borderRadius`,null),s=e([i(`esri.views.overlay.TextOverlayItem`)],s);const c={bottom:{x:-.5,y:-1,textAlign:`center`,textBaseline:`bottom`},"bottom-left":{x:0,y:-1,textAlign:`left`,textBaseline:`bottom`},"bottom-right":{x:-1,y:-1,textAlign:`right`,textBaseline:`bottom`},center:{x:-.5,y:-.5,textAlign:`center`,textBaseline:`middle`},left:{x:0,y:-.5,textAlign:`left`,textBaseline:`middle`},right:{x:-1,y:-.5,textAlign:`right`,textBaseline:`middle`},top:{x:-.5,y:0,textAlign:`center`,textBaseline:`top`},"top-left":{x:0,y:0,textAlign:`left`,textBaseline:`top`},"top-right":{x:-1,y:0,textAlign:`right`,textBaseline:`top`}},l=[];for(let e=0;e<360;e+=360/16)l.push([Math.cos(Math.PI*e/180),Math.sin(Math.PI*e/180)]);export{s as default};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import t from"../../core/Accessor.js";import n from"../../core/Collection.js";import{property as r,subclass as i}from"../../core/accessorSupport/decorators.js";import{UpdatingHandles as a}from"../../core/support/UpdatingHandles.js";import"../../libs/maquette/projection.js";import{createProjector as o}from"../../libs/maquette/projector.js";let s=class extends t{constructor(){super(...arguments),this.items=new n,this._watchUpdatingTracking=new a,this._callbacks=new Map,this._projector=o(),this._hiddenProjector=o()}get needsRender(){return this.items.length>0}get updating(){return this._watchUpdatingTracking?.updating??!1}initialize(){let e=document.createElement(`div`);e.className=`esri-overlay-surface`,this._set(`surface`,e),this._hiddenSurface=document.createElement(`div`),this._hiddenSurface.setAttribute(`style`,`visibility: hidden;`),e.appendChild(this._hiddenSurface),this._watchUpdatingTracking.addOnCollectionChange(()=>this.items,e=>{for(let t of e.added){let e=()=>t.render();this._callbacks.set(t,e),this._projector.append(this.surface,e)}for(let t of e.removed){let e=this._projector.detach(this._callbacks.get(t));this.surface.removeChild(e.domNode),this._callbacks.delete(t)}})}addItem(e){this.items.add(e)}removeItem(e){this.items.remove(e)}destroy(){this.items.removeAll(),this._callbacks.forEach(e=>this._projector.detach(e)),this._callbacks=null,this._projector=null,this._watchUpdatingTracking.destroy()}render(){this._projector.renderNow()}computeBoundingRect(e){let t=this._hiddenSurface,n=this._hiddenProjector,r,i=()=>(r=e.render(),r);n.append(t,i),n.renderNow();let a={left:0,top:0,right:0,bottom:0};if(r?.domNode){let e=r.domNode.getBoundingClientRect();a.left=e.left,a.top=e.top,a.right=e.right,a.bottom=e.bottom}for(n.detach(i);t.firstChild;)t.removeChild(t.firstChild);return a}overlaps(e,t){let n=this.computeBoundingRect(e),r=this.computeBoundingRect(t);return Math.max(n.left,r.left)<=Math.min(n.right,r.right)&&Math.max(n.top,r.top)<=Math.min(n.bottom,r.bottom)}get hasVisibleItems(){return this.items.some(e=>e.visible)}async prepare(){await document.fonts.load(this._fontString()).catch(()=>{})}renderCanvas(e,t){let n=!!t?.disableDecorations;if(!this.items.some(e=>e.visible&&!(n&&e.isDecoration)))return;let r=e.getContext(`2d`);r.save(),r.font=this._fontString(),this.items.forEach(e=>{n&&e.isDecoration||(r.save(),e.renderCanvas(r),r.restore())}),r.restore()}_fontString(){return`10px ${getComputedStyle(this.surface).fontFamily}`}};e([r({readOnly:!0})],s.prototype,`surface`,void 0),e([r({readOnly:!0})],s.prototype,`items`,void 0),e([r({readOnly:!0})],s.prototype,`needsRender`,null),e([r({readOnly:!0})],s.prototype,`_watchUpdatingTracking`,void 0),e([r({readOnly:!0})],s.prototype,`updating`,null),s=e([i(`esri.views.overlay.ViewOverlay`)],s);const c=s;export{c as default};
2
+ import{__decorate as e}from"tslib";import t from"../../core/Accessor.js";import n from"../../core/Collection.js";import{renderingSanitizerOptions as r}from"../../core/sanitizerUtils.js";import{property as i,subclass as a}from"../../core/accessorSupport/decorators.js";import{UpdatingHandles as o}from"../../core/support/UpdatingHandles.js";import{c as s}from"../../chunks/projector.js";let c=class extends t{constructor(){super(...arguments),this.items=new n,this._watchUpdatingTracking=new o,this._callbacks=new Map,this._projector=s(r),this._hiddenProjector=s(r)}get needsRender(){return this.items.length>0}get updating(){return this._watchUpdatingTracking?.updating??!1}initialize(){let e=document.createElement(`div`);e.className=`esri-overlay-surface`,this._set(`surface`,e),this._hiddenSurface=document.createElement(`div`),this._hiddenSurface.setAttribute(`style`,`visibility: hidden;`),e.appendChild(this._hiddenSurface),this._watchUpdatingTracking.addOnCollectionChange(()=>this.items,e=>{for(let t of e.added){let e=()=>t.render();this._callbacks.set(t,e),this._projector.append(this.surface,e)}for(let t of e.removed){let e=this._projector.detach(this._callbacks.get(t));this.surface.removeChild(e.domNode),this._callbacks.delete(t)}})}addItem(e){this.items.add(e)}removeItem(e){this.items.remove(e)}destroy(){this.items.removeAll(),this._callbacks.forEach(e=>this._projector.detach(e)),this._callbacks=null,this._projector=null,this._watchUpdatingTracking.destroy()}render(){this._projector.renderNow()}computeBoundingRect(e){let t=this._hiddenSurface,n=this._hiddenProjector,r,i=()=>(r=e.render(),r);n.append(t,i),n.renderNow();let a={left:0,top:0,right:0,bottom:0};if(r?.domNode){let e=r.domNode.getBoundingClientRect();a.left=e.left,a.top=e.top,a.right=e.right,a.bottom=e.bottom}for(n.detach(i);t.firstChild;)t.removeChild(t.firstChild);return a}overlaps(e,t){let n=this.computeBoundingRect(e),r=this.computeBoundingRect(t);return Math.max(n.left,r.left)<=Math.min(n.right,r.right)&&Math.max(n.top,r.top)<=Math.min(n.bottom,r.bottom)}get hasVisibleItems(){return this.items.some(e=>e.visible)}async prepare(){await document.fonts.load(this._fontString()).catch(()=>{})}renderCanvas(e,t){let n=!!t?.disableDecorations;if(!this.items.some(e=>e.visible&&!(n&&e.isDecoration)))return;let r=e.getContext(`2d`);r.save(),r.font=this._fontString(),this.items.forEach(e=>{n&&e.isDecoration||(r.save(),e.renderCanvas(r),r.restore())}),r.restore()}_fontString(){return`10px ${getComputedStyle(this.surface).fontFamily}`}};e([i({readOnly:!0})],c.prototype,`surface`,void 0),e([i({readOnly:!0})],c.prototype,`items`,void 0),e([i({readOnly:!0})],c.prototype,`needsRender`,null),e([i({readOnly:!0})],c.prototype,`_watchUpdatingTracking`,void 0),e([i({readOnly:!0})],c.prototype,`updating`,null),c=e([a(`esri.views.overlay.ViewOverlay`)],c);const l=c;export{l as default};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import t from"../../core/Logger.js";import{when as n}from"../../core/reactiveUtils.js";import{property as r,subclass as i}from"../../core/accessorSupport/decorators.js";import a from"../../geometry/SpatialReference.js";import{toExtent as o}from"../../geometry/support/aaBoundingRect.js";import{extentContainsXYZ as s}from"../../geometry/support/contains.js";import{GroundViewElevationSampler as c}from"./GroundViewElevationSampler.js";let l=class extends c{initialize(){this.addHandles(n(()=>this.view.groundView,e=>e.on(`elevation-change`,()=>this.emit(`changed`,{}))))}get demResolution(){return this.view.basemapTerrain.demResolution}get extent(){let{groundView:e}=this.view;if(e?.groundExtent==null||e.spatialReference==null)return null;let t=o(e.groundExtent,e.spatialReference);return t.zmin=e.visibleElevationRange.minElevation,t.zmax=e.visibleElevationRange.maxElevation,t}get spatialReference(){return this.view.groundView?.spatialReference??a.WGS84}elevationAt(e,n){if(this.extent==null||!s(this.extent,e,n)){let r=this.extent==null?null:`${this.extent.xmin}, ${this.extent.ymin}, ${this.extent.xmax}, ${this.extent.ymax}`;return t.getLogger(this).warn(`#elevationAt()`,`Point used to sample elevation (${e}, ${n}) is outside of the sampler extent (${r})`),this.noDataValue}return this.view.elevationProvider?.getElevation(e,n,0,this.spatialReference,`ground`)??this.noDataValue}};e([r({readOnly:!0})],l.prototype,`demResolution`,null),e([r({readOnly:!0})],l.prototype,`extent`,null),e([r()],l.prototype,`spatialReference`,null),l=e([i(`esri.views.support.GroundElevationSampler`)],l);export{l as GroundElevationSampler};
2
+ import{__decorate as e}from"tslib";import t from"../../core/Logger.js";import{on as n}from"../../core/reactiveUtils.js";import{property as r,subclass as i}from"../../core/accessorSupport/decorators.js";import a from"../../geometry/SpatialReference.js";import{toExtent as o}from"../../geometry/support/aaBoundingRect.js";import{extentContainsXYZ as s}from"../../geometry/support/contains.js";import{GroundViewElevationSampler as c}from"./GroundViewElevationSampler.js";let l=class extends c{initialize(){this.addHandles(n(()=>this.view.groundView,`elevation-change`,()=>this.emit(`changed`,{})))}get demResolution(){return this.view.basemapTerrain.demResolution}get extent(){let{groundView:e}=this.view;if(e?.groundExtent==null||e.spatialReference==null)return null;let t=o(e.groundExtent,e.spatialReference);return t.zmin=e.visibleElevationRange.minElevation,t.zmax=e.visibleElevationRange.maxElevation,t}get spatialReference(){return this.view.groundView?.spatialReference??a.WGS84}elevationAt(e,n){if(this.extent==null||!s(this.extent,e,n)){let r=this.extent==null?null:`${this.extent.xmin}, ${this.extent.ymin}, ${this.extent.xmax}, ${this.extent.ymax}`;return t.getLogger(this).warn(`#elevationAt()`,`Point used to sample elevation (${e}, ${n}) is outside of the sampler extent (${r})`),this.noDataValue}return this.view.elevationProvider?.getElevation(e,n,0,this.spatialReference,`ground`)??this.noDataValue}};e([r({readOnly:!0})],l.prototype,`demResolution`,null),e([r({readOnly:!0})],l.prototype,`extent`,null),e([r()],l.prototype,`spatialReference`,null),l=e([i(`esri.views.support.GroundElevationSampler`)],l);export{l as GroundElevationSampler};
@@ -1,6 +1,6 @@
1
1
  import type Color from "../../Color.js";
2
- import type Accessor from "../../core/Accessor.js";
3
2
  import type { ColorLike } from "../../Color.js";
3
+ import type { JSONSupport } from "../../core/JSONSupport.js";
4
4
 
5
5
  export interface HighlightOptionsProperties extends Partial<Pick<HighlightOptions, "fillOpacity" | "haloOpacity" | "shadowDifference" | "shadowOpacity">> {
6
6
  /** The color of the highlight fill. */
@@ -111,7 +111,7 @@ export interface HighlightOptionsProperties extends Partial<Pick<HighlightOption
111
111
  * });
112
112
  * });
113
113
  */
114
- export default class HighlightOptions extends Accessor {
114
+ export default class HighlightOptions extends JSONSupport {
115
115
  constructor(properties?: HighlightOptionsProperties);
116
116
  /** The color of the highlight fill. */
117
117
  get color(): Color;