@arcgis/core 6.0.0-next.36 → 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 (389) 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/{0202eb8c2b2865f99981.js → 00311d1b18d5952a014b.js} +1 -1
  10. package/assets/esri/core/workers/chunks/{9503eedfdda55fc5adab.js → 091ec4fe83038f3558f4.js} +1 -1
  11. package/assets/esri/core/workers/chunks/0b21d0e2e5a91c34a108.js +1 -0
  12. package/assets/esri/core/workers/chunks/{322b22a5d54e404bebd5.js → 0c893837f67829757df7.js} +1 -1
  13. package/assets/esri/core/workers/chunks/123541f79be7adff0818.js +1 -0
  14. package/assets/esri/core/workers/chunks/{155861fbd0e5fc2db80c.js → 1a91443970d64a59521d.js} +1 -1
  15. package/assets/esri/core/workers/chunks/1e37337f47f45d6d8005.js +1 -0
  16. package/assets/esri/core/workers/chunks/{4e5405134d079bdf9b7a.js → 1f76f6dcdae9f55389cb.js} +1 -1
  17. package/assets/esri/core/workers/chunks/{f717005e14a7e9141df7.js → 2050c844b5a29b1df28a.js} +1 -1
  18. package/assets/esri/core/workers/chunks/2c3612379111457c3221.js +1 -0
  19. package/assets/esri/core/workers/chunks/2d16b5a44f840147e882.js +1 -0
  20. package/assets/esri/core/workers/chunks/{d9a240a3c6bf85124474.js → 342a97974a78007b25e0.js} +1 -1
  21. package/assets/esri/core/workers/chunks/34467f7d84baffd772a3.js +1 -0
  22. package/assets/esri/core/workers/chunks/396299c22994c502e41c.js +1 -0
  23. package/assets/esri/core/workers/chunks/{03daf6f235c6edef6268.js → 398ec098fffe6abceedd.js} +1 -1
  24. package/assets/esri/core/workers/chunks/3b32a24488b3068f0cb7.js +1 -0
  25. package/assets/esri/core/workers/chunks/3b5e9e0b180dc10491ec.js +1 -0
  26. package/assets/esri/core/workers/chunks/{4d18b48d4a282a0f341c.js → 427d929dc7f89b0a1ea9.js} +1 -1
  27. package/assets/esri/core/workers/chunks/432728c557be5dfa26b5.js +1 -0
  28. package/assets/esri/core/workers/chunks/46969f379623810b2eca.js +1 -0
  29. package/assets/esri/core/workers/chunks/46edd6c9ed6701e6b975.js +1 -0
  30. package/assets/esri/core/workers/chunks/{8b0d5551978ab0aac0d1.js → 520f499d79fa71f262c7.js} +1 -1
  31. package/assets/esri/core/workers/chunks/5473409fee59db80f87d.js +1 -0
  32. package/assets/esri/core/workers/chunks/553a8bf5bc5c56d1bcaf.js +1 -0
  33. package/assets/esri/core/workers/chunks/{2211ff0a1f1ae8100231.js → 585ae43c7bcb86a26762.js} +1 -1
  34. package/assets/esri/core/workers/chunks/58716a3a6106a1b0fb9d.js +1 -0
  35. package/assets/esri/core/workers/chunks/{aa6ee2aa4ff6e6d41efb.js → 5882f349f3771868e67f.js} +1 -1
  36. package/assets/esri/core/workers/chunks/592b5db1459c02cf6a0c.js +1 -0
  37. package/assets/esri/core/workers/chunks/{1b17f5f720f6cf3f6d73.js → 5be386b3af867b19ff39.js} +1 -1
  38. package/assets/esri/core/workers/chunks/{ea81f9d71b0842a4be26.js → 5e48898cebb6dbaf09b5.js} +1 -1
  39. package/assets/esri/core/workers/chunks/6a21dc13a465757ba007.js +1 -0
  40. package/assets/esri/core/workers/chunks/{139e753d95cfc9470e74.js → 6a65fc1a2931230fe994.js} +1 -1
  41. package/assets/esri/core/workers/chunks/{3e406043a374ee17475b.js → 6f2e7e663229b223b4df.js} +1 -1
  42. package/assets/esri/core/workers/chunks/{379db67f78161ebd5468.js → 7023651ed6398dcf8efb.js} +1 -1
  43. package/assets/esri/core/workers/chunks/{90360c0bd053d3e3fd77.js → 7027a0e7bfabb3bb7fc2.js} +1 -1
  44. package/assets/esri/core/workers/chunks/76e80381fa6d1e084796.js +1 -0
  45. package/assets/esri/core/workers/chunks/78818c2a898444f7e890.js +1 -0
  46. package/assets/esri/core/workers/chunks/{40c2674dae73f0942751.js → 7d497df6e13162156342.js} +1 -1
  47. package/assets/esri/core/workers/chunks/{3b380e64566a6cce59e2.js → 7e0ed6e8f7b77e43f628.js} +1 -1
  48. package/assets/esri/core/workers/chunks/8c3779de09291170497f.js +1 -0
  49. package/assets/esri/core/workers/chunks/8e391b5b82429f39791e.js +1 -0
  50. package/assets/esri/core/workers/chunks/947f3a1cad976bba9738.js +1 -0
  51. package/assets/esri/core/workers/chunks/{59a1b637d2c107504a04.js → 966204d6dedc8149c3e9.js} +1 -1
  52. package/assets/esri/core/workers/chunks/9826baa3c15ea2062669.js +1 -0
  53. package/assets/esri/core/workers/chunks/{d3369ffed19f4c264dcd.js → 9ab0735e86cf8932bf9d.js} +1 -1
  54. package/assets/esri/core/workers/chunks/ab0ea4042f4e13874aed.js +1 -0
  55. package/assets/esri/core/workers/chunks/ab98ade3257360015d6c.js +1 -0
  56. package/assets/esri/core/workers/chunks/ac107079342251a984dd.js +1 -0
  57. package/assets/esri/core/workers/chunks/{572aec57593a08b8045b.js → b15a8d4322f3b7819d2f.js} +1 -1
  58. package/assets/esri/core/workers/chunks/{552c36b40e5a5ec117fb.js → b472c0a21ae29e653f7d.js} +1 -1
  59. package/assets/esri/core/workers/chunks/b90271ce38522bcf813b.js +1 -0
  60. package/assets/esri/core/workers/chunks/ba91df9835cdea7698a9.js +1 -0
  61. package/assets/esri/core/workers/chunks/bdd76a0b6c14e7fb6984.js +1 -0
  62. package/assets/esri/core/workers/chunks/bfe13ac9fa1aafb190a1.js +1 -0
  63. package/assets/esri/core/workers/chunks/{f372f4eb5527238c46f5.js → c31830ee897d5a7f2582.js} +1 -1
  64. package/assets/esri/core/workers/chunks/c48d97c38e821be17dc5.js +1 -0
  65. package/assets/esri/core/workers/chunks/{0a508e25ec05363e1f04.js → c7ad62f54d2abe1d17a0.js} +1 -1
  66. package/assets/esri/core/workers/chunks/cb1642ea8b66231cbfb5.js +1 -0
  67. package/assets/esri/core/workers/chunks/ce0274847ccce6a1ac53.js +1 -0
  68. package/assets/esri/core/workers/chunks/cf21b217b13770757cb8.js +1 -0
  69. package/assets/esri/core/workers/chunks/cf2e5f827cea7d7319ce.js +1 -0
  70. package/assets/esri/core/workers/chunks/d42a4f47843e075c56a8.js +1 -0
  71. package/assets/esri/core/workers/chunks/dae2036faa28dade2119.js +1 -0
  72. package/assets/esri/core/workers/chunks/e2430bc3a1edeb5c3266.js +1 -0
  73. package/assets/esri/core/workers/chunks/e9457a67befc61e11095.js +1 -0
  74. package/assets/esri/core/workers/chunks/f06ef153e106b26a6748.js +1 -0
  75. package/assets/esri/core/workers/chunks/faae3c43048b42341536.js +1 -0
  76. package/assets/esri/core/workers/chunks/fc77eb7683e708774168.js +1 -0
  77. package/assets/esri/core/workers/chunks/fd967a9f3cf0e2890dbb.js +1 -0
  78. package/chunks/Clouds.glsl.js +7 -11
  79. package/chunks/h.js +2 -0
  80. package/chunks/projector.js +2 -0
  81. package/config.js +1 -1
  82. package/core/libs/gl-matrix-2/math/vec3.js +1 -1
  83. package/core/sanitizerUtils.js +1 -1
  84. package/form/FormTemplate.js +1 -1
  85. package/form/elements/Element.js +1 -1
  86. package/form/elements/FieldElement.js +1 -1
  87. package/geometry/ellipsoidUtils.js +4 -4
  88. package/geometry/support/frustumPlanes.js +1 -1
  89. package/geometry/support/plane.js +1 -1
  90. package/geometry/support/triangle.js +1 -1
  91. package/kernel.js +1 -1
  92. package/layers/BaseElevationLayer.js +1 -1
  93. package/layers/ElevationLayer.js +1 -1
  94. package/layers/GraphicsLayer.js +1 -1
  95. package/layers/IntegratedMesh3DTilesLayer.js +1 -1
  96. package/layers/IntegratedMeshLayer.d.ts +2 -0
  97. package/layers/IntegratedMeshLayer.js +1 -1
  98. package/layers/Lyr3DWasmPerSceneView.js +1 -1
  99. package/layers/geospatialPDF/geospatialPDFParserUtils.js +1 -1
  100. package/layers/geospatialPDF/support/datumUtils.js +2 -0
  101. package/layers/geospatialPDF/support/ellipsoidUtils.js +2 -0
  102. package/layers/geospatialPDF/support/geographicProjectionUtils.js +2 -0
  103. package/layers/geospatialPDF/support/parameterUtils.js +2 -0
  104. package/layers/geospatialPDF/support/projectedProjectionUtils.js +3 -0
  105. package/layers/geospatialPDF/support/projectionToSpatialReference.js +2 -0
  106. package/layers/geospatialPDF/support/statePlaneUtils.js +2 -0
  107. package/layers/geospatialPDF/support/unitUtils.js +2 -0
  108. package/layers/geospatialPDF/support/validateProjectionUtils.js +2 -0
  109. package/layers/graphics/sources/support/clientSideDefaults.js +2 -2
  110. package/layers/knowledgeGraph/KnowledgeGraphLayerDataManager.js +1 -1
  111. package/layers/knowledgeGraph/KnowledgeGraphSublayer.js +1 -1
  112. package/layers/ogc/ogcFeatureUtils.js +1 -1
  113. package/layers/save/imageryUtils.js +1 -1
  114. package/layers/save/mediaLayerUtils.js +1 -1
  115. package/layers/save/streamLayerUtils.js +1 -1
  116. package/layers/support/ControlPoint.js +1 -1
  117. package/layers/support/ControlPointsGeoreference.js +1 -1
  118. package/layers/support/DimensionalDefinition.js +1 -1
  119. package/layers/support/ElevationQuery.js +1 -1
  120. package/layers/support/LabelClass.js +1 -1
  121. package/layers/support/LabelExpressionInfo.js +1 -1
  122. package/layers/support/MediaElementBase.js +1 -1
  123. package/layers/support/MosaicRule.js +1 -1
  124. package/layers/support/MultidimensionalSubset.js +1 -1
  125. package/layers/support/RasterBandInfo.js +1 -1
  126. package/layers/support/RasterFunction.js +1 -1
  127. package/layers/support/RasterFunctionTemplate.js +1 -1
  128. package/layers/support/RasterInfo.js +1 -1
  129. package/layers/support/RasterSensorInfo.js +1 -1
  130. package/layers/support/RasterStorageInfo.js +1 -1
  131. package/layers/support/VideoElement.js +1 -1
  132. package/layers/support/layersLoader.js +1 -1
  133. package/layers/video/VideoController.js +3 -3
  134. package/layers/video/types.d.ts +12 -0
  135. package/legend/ActiveLayerInfo.d.ts +5 -1
  136. package/legend/ActiveLayerInfo.js +1 -1
  137. package/libs/maquette-advanced-projector/projector.js +1 -1
  138. package/linkChart/LayoutSettings.js +1 -1
  139. package/linkChart/RootedLayoutSettings.js +1 -1
  140. package/package.json +3 -3
  141. package/renderers/FlowRenderer.js +1 -1
  142. package/renderers/RasterColormapRenderer.js +1 -1
  143. package/renderers/RasterShadedReliefRenderer.js +1 -1
  144. package/renderers/RasterStretchRenderer.js +1 -1
  145. package/renderers/VectorFieldRenderer.js +1 -1
  146. package/renderers/support/ColormapInfo.js +1 -1
  147. package/renderers/support/RasterPresetRenderer.js +1 -1
  148. package/renderers/support/rasterRendererHelper.js +1 -1
  149. package/rest/knowledgeGraph/GraphApplyEdits.js +1 -1
  150. package/rest/support/BaseImageMeasureParameters.js +1 -1
  151. package/rest/support/BaseImageMeasureResult.js +1 -1
  152. package/rest/support/FindImagesParameters.js +1 -1
  153. package/rest/support/FindImagesResult.js +1 -1
  154. package/rest/support/ImageAngleParameters.js +1 -1
  155. package/rest/support/ImageAngleResult.js +1 -1
  156. package/rest/support/ImageAreaParameters.js +1 -1
  157. package/rest/support/ImageAreaResult.js +1 -1
  158. package/rest/support/ImageBoundaryParameters.js +1 -1
  159. package/rest/support/ImageBoundaryResult.js +1 -1
  160. package/rest/support/ImageDistanceParameters.js +1 -1
  161. package/rest/support/ImageDistanceResult.js +1 -1
  162. package/rest/support/ImageGPSInfoParameters.js +1 -1
  163. package/rest/support/ImageGPSInfoResult.js +1 -1
  164. package/rest/support/ImageHeightParameters.js +1 -1
  165. package/rest/support/ImageHeightResult.js +1 -1
  166. package/rest/support/ImageHistogramParameters.js +1 -1
  167. package/rest/support/ImageIdentifyParameters.js +1 -1
  168. package/rest/support/ImageIdentifyResult.js +1 -1
  169. package/rest/support/ImagePixelLocationParameters.js +1 -1
  170. package/rest/support/ImagePixelLocationResult.js +1 -1
  171. package/rest/support/ImagePointParameters.js +1 -1
  172. package/rest/support/ImagePointResult.js +1 -1
  173. package/rest/support/ImageSample.js +1 -1
  174. package/rest/support/ImageSampleParameters.js +1 -1
  175. package/rest/support/ImageSampleResult.js +1 -1
  176. package/rest/support/ImageToMapMultirayParameters.js +1 -1
  177. package/rest/support/ImageToMapParameters.js +1 -1
  178. package/rest/support/ImageUrlParameters.js +1 -1
  179. package/rest/support/ImageUrlResult.js +1 -1
  180. package/rest/support/ImageVolumeParameters.js +1 -1
  181. package/rest/support/ImageVolumeResult.js +1 -1
  182. package/rest/support/MapToImageParameters.js +1 -1
  183. package/rest/support/MeasureAreaFromImageResult.js +1 -1
  184. package/rest/support/MeasureFromImageParameters.js +1 -1
  185. package/rest/support/MeasureLengthFromImageResult.js +1 -1
  186. package/symbols/support/cimSymbolUtils.js +1 -1
  187. package/symbols/support/renderUtils.js +1 -1
  188. package/views/2d/ViewState.d.ts +3 -3
  189. package/views/2d/ViewState.js +1 -1
  190. package/views/2d/ViewStateManager.js +1 -1
  191. package/views/2d/engine/Bitmap.js +1 -1
  192. package/views/2d/engine/flow/styles/Imagery.js +1 -1
  193. package/views/2d/engine/vectorTiles/SpriteMosaic.js +1 -1
  194. package/views/2d/engine/vectorTiles/VTLPainter3D.js +1 -1
  195. package/views/2d/engine/vectorTiles/decluttering/CollisionJob.js +1 -1
  196. package/views/2d/engine/vectorTiles/style/geoJSONVectorTileUtils.js +1 -1
  197. package/views/2d/engine/webgl/AttributeStoreView.js +1 -1
  198. package/views/2d/engine/webgl/GlyphMosaic.js +1 -1
  199. package/views/2d/engine/webgl/Overlay.js +1 -1
  200. package/views/2d/engine/webgl/OverlayMultipoint.js +1 -1
  201. package/views/2d/engine/webgl/SpriteMosaic.js +1 -1
  202. package/views/2d/engine/webgl/VideoScreenRenderer.js +1 -1
  203. package/views/2d/engine/webgl/animations/store/AnimationStore.js +1 -1
  204. package/views/2d/engine/webgl/collisions/LabelMetric.js +1 -1
  205. package/views/2d/engine/webgl/collisions/LabelStore.js +1 -1
  206. package/views/2d/engine/webgl/effects/highlight/HighlightGradient.js +1 -1
  207. package/views/2d/engine/webgl/shaderGraph/techniques/TextureStatisticsTechnique.js +1 -1
  208. package/views/2d/engine/webgl/shaderGraph/techniques/animated/AAnimatedShader.js +1 -1
  209. package/views/2d/engine/webgl/shaderGraph/techniques/animated/AnimatedMarkerShader.js +1 -1
  210. package/views/2d/engine/webgl/shaderGraph/techniques/blend/BlendTechnique.js +1 -1
  211. package/views/2d/engine/webgl/shaderGraph/techniques/colorize/ColorizeTechnique.js +1 -1
  212. package/views/2d/engine/webgl/shaderGraph/techniques/dotDensity/DotDensityResources.js +1 -1
  213. package/views/2d/engine/webgl/shaderGraph/techniques/drop-shadow/DropShadowTechnique.js +1 -1
  214. package/views/2d/engine/webgl/shaderGraph/techniques/heatmap/HeatmapResources.js +1 -1
  215. package/views/2d/engine/webgl/shaderGraph/techniques/labels/LabelMeshWriter.js +1 -1
  216. package/views/2d/engine/webgl/shaderGraph/techniques/magnifier/MagnifierTechnique.js +1 -1
  217. package/views/2d/engine/webgl/shaderGraph/techniques/markers/MarkerShader.js +1 -1
  218. package/views/2d/engine/webgl/shaderGraph/techniques/opacity/OpacityTechnique.js +1 -1
  219. package/views/2d/engine/webgl/shaderGraph/techniques/raster/RasterColorizerTechnique.js +1 -1
  220. package/views/2d/engine/webgl/shaderGraph/techniques/raster/RasterHighlightTechnique.js +1 -1
  221. package/views/2d/engine/webgl/shaderGraph/techniques/raster/processor/textureUtils.js +1 -1
  222. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/AFeatureShader.js +1 -1
  223. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/FillShader.js +1 -1
  224. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/LineShader.js +1 -1
  225. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/OutlineFillShader.js +1 -1
  226. package/views/2d/engine/webgl/shaderGraph/techniques/text/TextShader.js +1 -1
  227. package/views/2d/engine/webgl/shaderGraph/techniques/tile/TileDebugInfoTexture.js +1 -1
  228. package/views/2d/engine/webgl/textureUtils.js +1 -1
  229. package/views/2d/engine/webgl/util/IntervalMatcher.js +1 -1
  230. package/views/2d/layers/LayerView2D.js +1 -1
  231. package/views/2d/webglDeps.js +1 -1
  232. package/views/3d/FocusAreasView.js +1 -1
  233. package/views/3d/GroundView3D.js +1 -1
  234. package/views/3d/input/SceneInputManager.js +1 -1
  235. package/views/3d/layers/GaussianSplatLayerView3D.js +1 -1
  236. package/views/3d/layers/graphics/ElevationAligners.js +1 -1
  237. package/views/3d/layers/graphics/Graphics3DLineSymbolLayer.js +1 -1
  238. package/views/3d/layers/graphics/Graphics3DSymbol.js +1 -1
  239. package/views/3d/layers/i3s/I3SBinaryReader.js +1 -1
  240. package/views/3d/layers/i3s/LayerElevationProvider.js +1 -1
  241. package/views/3d/state/ConstraintsManager.js +1 -1
  242. package/views/3d/state/ViewState.js +1 -1
  243. package/views/3d/state/ViewStateManager.js +1 -1
  244. package/views/3d/support/engineContent/line.js +1 -1
  245. package/views/3d/support/engineContent/marker.js +1 -1
  246. package/views/3d/support/flow/StreamlineResources3D.js +1 -1
  247. package/views/3d/support/flow/StreamlineResources3DOverlay.js +1 -1
  248. package/views/3d/support/flow/StreamlineResources3DShape.js +1 -1
  249. package/views/3d/support/flow/geometryUtils.js +1 -1
  250. package/views/3d/support/gaussianSplatting/GaussianSplatFadeHelper.js +1 -1
  251. package/views/3d/support/gaussianSplatting/GaussianSplatIntersectionHandler.js +1 -1
  252. package/views/3d/support/gaussianSplatting/GaussianSplatOrderTexture.js +1 -1
  253. package/views/3d/support/gaussianSplatting/GaussianSplatTextureAtlas.js +1 -1
  254. package/views/3d/support/gaussianSplatting/GaussianTileBuilder.js +2 -0
  255. package/views/3d/support/gaussianSplatting/GaussianTileLifecycle.js +2 -0
  256. package/views/3d/support/gaussianSplatting/formatConstants.js +2 -0
  257. package/views/3d/support/pointsOfInterest/CameraOnSurface.js +1 -1
  258. package/views/3d/support/pointsOfInterest/StableSurfaceCenter.js +1 -1
  259. package/views/3d/terrain/OverlayManager.js +1 -1
  260. package/views/3d/terrain/OverlayRenderer.js +1 -1
  261. package/views/3d/terrain/TerrainRenderer.js +1 -1
  262. package/views/3d/terrain/TerrainSurface.js +1 -1
  263. package/views/3d/terrain/Tile.js +1 -1
  264. package/views/3d/terrain/TileCompositor.js +1 -1
  265. package/views/3d/terrain/TileRenderer.js +1 -1
  266. package/views/3d/terrain/tileUtils.js +1 -1
  267. package/views/3d/webgl/RenderNode.d.ts +1 -1
  268. package/views/3d/webgl-engine/core/FBOCache.js +1 -1
  269. package/views/3d/webgl-engine/core/renderPasses/RenderPassManager.js +1 -1
  270. package/views/3d/webgl-engine/core/shaderLibrary/hud/HUD.glsl.js +1 -1
  271. package/views/3d/webgl-engine/core/shaderLibrary/shading/readShadow.glsl.js +1 -1
  272. package/views/3d/webgl-engine/core/shaderLibrary/util/GaussianSplatUnpacking.glsl.js +15 -11
  273. package/views/3d/webgl-engine/effects/WeatherFader.js +1 -1
  274. package/views/3d/webgl-engine/effects/atmosphere/LocalAtmosphere.js +1 -1
  275. package/views/3d/webgl-engine/effects/atmosphere/MarsAtmosphere.js +1 -1
  276. package/views/3d/webgl-engine/effects/clouds/CloudsRenderer.js +1 -1
  277. package/views/3d/webgl-engine/effects/debug/RenderNodeVisualizerNode.js +19 -9
  278. package/views/3d/webgl-engine/effects/highlight/Highlight.js +1 -1
  279. package/views/3d/webgl-engine/effects/magnifier/Magnifier.js +1 -1
  280. package/views/3d/webgl-engine/effects/smaa/SMAA.js +1 -1
  281. package/views/3d/webgl-engine/effects/ssao/SSAO.js +1 -1
  282. package/views/3d/webgl-engine/effects/stars/Stars.js +1 -1
  283. package/views/3d/webgl-engine/lib/AttributeView.js +1 -1
  284. package/views/3d/webgl-engine/lib/BasisUtil.js +1 -1
  285. package/views/3d/webgl-engine/lib/BindParameters.js +1 -1
  286. package/views/3d/webgl-engine/lib/DDSUtil.js +1 -1
  287. package/views/3d/webgl-engine/lib/DrapedHeatmapRenderer.js +1 -1
  288. package/views/3d/webgl-engine/lib/GPUPointOcclusionQuery.js +1 -1
  289. package/views/3d/webgl-engine/lib/GaussianSplatRenderUtils.js +1 -1
  290. package/views/3d/webgl-engine/lib/GeometryUtil.js +1 -1
  291. package/views/3d/webgl-engine/lib/ManagedTexture.js +1 -1
  292. package/views/3d/webgl-engine/lib/Renderer.js +1 -1
  293. package/views/3d/webgl-engine/lib/TextTextureAtlas.js +1 -1
  294. package/views/3d/webgl-engine/lib/TextureBackedBuffer/TextureBuffer.js +1 -1
  295. package/views/3d/webgl-engine/lib/TextureBackedBuffer/TextureBufferView.js +1 -1
  296. package/views/3d/webgl-engine/lib/VerticesView.js +2 -0
  297. package/views/3d/webgl-engine/lib/attributeViewUtils.js +1 -1
  298. package/views/3d/webgl-engine/lib/edgeRendering/strokes.js +1 -1
  299. package/views/3d/webgl-engine/lib/geometryDataUtils.js +1 -1
  300. package/views/3d/webgl-engine/lib/glUtil3D.js +1 -1
  301. package/views/3d/webgl-engine/lib/screenPolygonOverlapUtils.js +1 -1
  302. package/views/3d/webgl-engine/lib/screenPolygonTriangleIntersections.js +1 -1
  303. package/views/3d/webgl-engine/materials/HUDMaterial.js +1 -1
  304. package/views/3d/webgl-engine/materials/HUDMaterialBaseInstance.js +1 -1
  305. package/views/3d/webgl-engine/materials/LineMarkerMaterial.js +1 -1
  306. package/views/3d/webgl-engine/materials/RibbonLineMaterial.js +1 -1
  307. package/views/3d/webgl-engine/materials/internal/WaterTextureRepository.js +1 -1
  308. package/views/3d/webgl-engine/materials/internal/bufferWriterUtils.js +1 -1
  309. package/views/3d/webgl-engine/materials/internal/lineMarkerBufferUtils.js +2 -0
  310. package/views/3d/webgl-engine/materials/internal/ribbonLineBufferUtils.js +2 -0
  311. package/views/3d/webgl-engine/materials/renderers/VaoRenderer.js +1 -1
  312. package/views/3d/webgl-engine/materials/stippleTextureRepository.js +1 -1
  313. package/views/3d/webgl-engine/shaders/DefaultMaterialTechnique.js +1 -1
  314. package/views/3d/webgl-engine/shaders/HUDMaterialTechnique.js +1 -1
  315. package/views/3d/webgl-engine/shaders/LineMarkerTechnique.js +1 -1
  316. package/views/3d/webgl-engine/shaders/hudMaterialLayouts.js +2 -0
  317. package/views/3d/webgl-engine/shaders/lineMarkerLayouts.js +2 -0
  318. package/views/draw/support/ManagedTooltipField.js +1 -1
  319. package/views/overlay/LineOverlayItem.js +1 -1
  320. package/views/overlay/TextOverlayItem.js +1 -1
  321. package/views/overlay/ViewOverlay.js +1 -1
  322. package/views/support/GroundElevationSampler.js +1 -1
  323. package/views/support/HighlightOptions.d.ts +2 -2
  324. package/views/support/HighlightOptions.js +1 -1
  325. package/views/support/TextureCompressionHelper.js +1 -1
  326. package/views/support/imageReprojection.js +1 -1
  327. package/views/webgl/FramebufferObject.js +1 -1
  328. package/views/webgl/RenderingContext.js +1 -1
  329. package/views/webgl/Texture.js +1 -1
  330. package/views/webgl/Util.js +1 -1
  331. package/views/webgl/rasterUtils.js +1 -1
  332. package/views/webgl/testSVGPremultipliedAlpha.js +1 -1
  333. package/widgets/FeatureTable/Grid/Grid.js +1 -1
  334. package/widgets/Legend/styles/support/univariateUtils.js +1 -1
  335. package/widgets/OrientedImageryViewer/OrientedImageryViewerViewModel.js +1 -1
  336. package/widgets/OrientedImageryViewer.js +1 -1
  337. package/widgets/ScaleRangeSlider/types.d.ts +3 -3
  338. package/assets/esri/core/workers/chunks/01f55004d64309f8538b.js +0 -1
  339. package/assets/esri/core/workers/chunks/039d9bc5b5015012f811.js +0 -1
  340. package/assets/esri/core/workers/chunks/08140725277de5d2e41a.js +0 -1
  341. package/assets/esri/core/workers/chunks/0d99bfb75dcb9fa29080.js +0 -1
  342. package/assets/esri/core/workers/chunks/144bad0c2415c345736a.js +0 -1
  343. package/assets/esri/core/workers/chunks/165ca7a97b611c8f26c4.js +0 -1
  344. package/assets/esri/core/workers/chunks/16cda273927ab0a39544.js +0 -1
  345. package/assets/esri/core/workers/chunks/1989410a618865f02dec.js +0 -1
  346. package/assets/esri/core/workers/chunks/29c610ce1c81ebb84a6b.js +0 -1
  347. package/assets/esri/core/workers/chunks/3223f9fbc76ba9ef8d13.js +0 -1
  348. package/assets/esri/core/workers/chunks/338d800d4efcc91cead1.js +0 -1
  349. package/assets/esri/core/workers/chunks/3415531224f8494d79ca.js +0 -1
  350. package/assets/esri/core/workers/chunks/3fdcc383bbd9cf0d274c.js +0 -1
  351. package/assets/esri/core/workers/chunks/46c290108a90518ef695.js +0 -1
  352. package/assets/esri/core/workers/chunks/48b8b57f559a53c6c513.js +0 -1
  353. package/assets/esri/core/workers/chunks/4a979fce1c971b614a18.js +0 -1
  354. package/assets/esri/core/workers/chunks/59a88dd53f8806bbec06.js +0 -1
  355. package/assets/esri/core/workers/chunks/5aeb5e18514644fe2cf9.js +0 -1
  356. package/assets/esri/core/workers/chunks/5bd1414220e42cb8ebcf.js +0 -1
  357. package/assets/esri/core/workers/chunks/5d781c2c6204cffffd0d.js +0 -1
  358. package/assets/esri/core/workers/chunks/6edc13a426e00bb93a9b.js +0 -1
  359. package/assets/esri/core/workers/chunks/723df53cfa0189837d01.js +0 -1
  360. package/assets/esri/core/workers/chunks/7400b8c454b47ee4fb3c.js +0 -1
  361. package/assets/esri/core/workers/chunks/7862abd24fb5c3b12e6b.js +0 -1
  362. package/assets/esri/core/workers/chunks/796c6195b6bf59dcc9bd.js +0 -1
  363. package/assets/esri/core/workers/chunks/7af4edc6e87d27b9d467.js +0 -1
  364. package/assets/esri/core/workers/chunks/81bcc495e6eaf2cf7474.js +0 -1
  365. package/assets/esri/core/workers/chunks/934e1f2153e6fad6ed23.js +0 -1
  366. package/assets/esri/core/workers/chunks/990e96139b5a1dccb061.js +0 -1
  367. package/assets/esri/core/workers/chunks/a607541959169741a943.js +0 -1
  368. package/assets/esri/core/workers/chunks/aa779896fd9e5c341349.js +0 -1
  369. package/assets/esri/core/workers/chunks/c131e0dd180a4c10e12e.js +0 -1
  370. package/assets/esri/core/workers/chunks/c7adb7b77721c75891f4.js +0 -1
  371. package/assets/esri/core/workers/chunks/cd55cad81accf51d2989.js +0 -1
  372. package/assets/esri/core/workers/chunks/ce324dde6d7daea33638.js +0 -1
  373. package/assets/esri/core/workers/chunks/d3412518a7b518860fbb.js +0 -1
  374. package/assets/esri/core/workers/chunks/dac69c0047488fdf986d.js +0 -1
  375. package/assets/esri/core/workers/chunks/dba5f44c4e4a3f075df2.js +0 -1
  376. package/assets/esri/core/workers/chunks/e67ea2f1714e5abeae44.js +0 -1
  377. package/assets/esri/core/workers/chunks/e8fb2ba7b7a4f0916325.js +0 -1
  378. package/assets/esri/core/workers/chunks/f10c883eb26330e3421c.js +0 -1
  379. package/assets/esri/core/workers/chunks/f3b4159c0722df8ffe13.js +0 -1
  380. package/assets/esri/core/workers/chunks/f75eec2cbc541eec9712.js +0 -1
  381. package/layers/geospatialPDF/projectionToWKTUtils.js +0 -3
  382. package/libs/maquette/cache.js +0 -2
  383. package/libs/maquette/dom.js +0 -2
  384. package/libs/maquette/h.js +0 -2
  385. package/libs/maquette/index.js +0 -2
  386. package/libs/maquette/mapping.js +0 -2
  387. package/libs/maquette/projection.js +0 -2
  388. package/libs/maquette/projector.js +0 -2
  389. 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{fromValues as e}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{newFloatArray as t}from"../../../../geometry/support/FloatArray.js";import{newHalfFloatArray as n}from"../../../../geometry/support/HalfFloatArray.js";import{zValueInAbsoluteHeightMode as r}from"../../../../support/elevationInfoUtils.js";import{convertVisualVariables as i,ConvertOptions as a}from"../../layers/support/FastSymbolUpdates.js";import{animatedLineStripsToParameters as o,createGeometry as s}from"../engineContent/line.js";import{valuesPerFlowVertex as c}from"./loadUtils.js";import{drapedZ as l}from"../../terrain/DrapedZ.js";function u(e,r,{vertices:i,stage:a,hasMagnitude:u},d,p,m){let{spatialReference:h}=r.extent,g=[],_=c(u),v=r.flowExtentInfo.modelSize[0],y=0;for(let t=0;t<i.length;t+=_){if(m&&t>0){let e=i[t]-i[t-_];e>v/2?y-=v:-e>v/2&&(y+=v)}let[n,a]=r.modelToMapSpace(i[t]+y,i[t+1],!1),o=m?[n,a,l]:f(n,a,h,e,d);g.push(o)}let b=Math.floor(i.length/_),x=n(b);for(let e=0;e<b;e++)x[e]=i[e*_+2];let{hasVVColor:S,hasVVOpacity:C,hasVVSize:w}=p.parameters,T=S||C||w,E,D,O;if(u&&T){let e=t(b);for(let t=0;t<b;t++)e[t]=i[t*_+3];S&&(E=[e]),C&&(D=[e]),w&&(O=[e])}let k=o([g],void 0,[{timeStamps:x,stage:a}],E,D,O);return s(p,k[0])}function d(e,t,n){if(e==null)return{};let r=null;if(e.visualVariables){let t=[],n=e.visualVariables,o=new a({supports:{size:!0,color:!0,rotation:!1,opacity:!0}});r=i(n,o,t)}let o=r?.color?[1,1,1,1]:e.color.toUnitRGBA();return o[3]*=t,{color:o,width:e.trailWidth,cap:0,animationSpeed:e.flowSpeed,trailLength:e.trailLength,animation:3,emissiveStrength:n,vvColor:r?.color,vvOpacity:r?.opacity,vvSize:r?.size}}function f(t,n,i,a,o){let{absoluteZ:s}=r(t,n,0,i,a,o),c=e(t,n,s);return a.renderCoordsHelper.toRenderCoords(c,i,c),c}export{u as createStreamlineGeometry,d as materialParametersFromRenderer};
2
+ import{fromValues as e}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{newFloatArray as t}from"../../../../geometry/support/FloatArray.js";import{newHalfFloatArray as n}from"../../../../geometry/support/HalfFloatArray.js";import{zValueInAbsoluteHeightMode as r}from"../../../../support/elevationInfoUtils.js";import{convertVisualVariables as i,ConvertOptions as a}from"../../layers/support/FastSymbolUpdates.js";import{animatedLineStripsToParameters as o,selectLocalOrigin as s,createBufferGeometry as c}from"../engineContent/line.js";import{valuesPerFlowVertex as l}from"./loadUtils.js";import{drapedZ as u}from"../../terrain/DrapedZ.js";function d(e,r,{vertices:i,stage:a,hasMagnitude:d},f,m,h){let{spatialReference:g}=r.extent,_=[],v=l(d),y=r.flowExtentInfo.modelSize[0],b=0;for(let t=0;t<i.length;t+=v){if(h&&t>0){let e=i[t]-i[t-v];e>y/2?b-=y:-e>y/2&&(b+=y)}let[n,a]=r.modelToMapSpace(i[t]+b,i[t+1],!1),o=h?[n,a,u]:p(n,a,g,e,f);_.push(o)}let x=Math.floor(i.length/v),S=n(x);for(let e=0;e<x;e++)S[e]=i[e*v+2];let{hasVVColor:C,hasVVOpacity:w,hasVVSize:T}=m.parameters,E=C||w||T,D,O,k;if(d&&E){let e=t(x);for(let t=0;t<x;t++)e[t]=i[t*v+3];C&&(D=[e]),w&&(O=[e]),T&&(k=[e])}let A=o([_],void 0,[{timeStamps:S,stage:a}],D,O,k),j=h?e.overlayManager.renderer.localOriginFactory:e.stage.localOriginFactory,M=s(A[0].attributeData.position,j);return c(m,A[0],M)}function f(e,t,n){if(e==null)return{};let r=null;if(e.visualVariables){let t=[],n=e.visualVariables,o=new a({supports:{size:!0,color:!0,rotation:!1,opacity:!0}});r=i(n,o,t)}let o=r?.color?[1,1,1,1]:e.color.toUnitRGBA();return o[3]*=t,{color:o,width:e.trailWidth,cap:0,animationSpeed:e.flowSpeed,trailLength:e.trailLength,animation:3,emissiveStrength:n,vvColor:r?.color,vvOpacity:r?.opacity,vvSize:r?.size}}function p(t,n,i,a,o){let{absoluteZ:s}=r(t,n,0,i,a,o),c=e(t,n,s);return a.renderCoordsHelper.toRenderCoords(c,i,c),c}export{d as createStreamlineGeometry,f as materialParametersFromRenderer};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{signal as e}from"../../../../core/signal.js";import{Milliseconds as t}from"../../../../core/time.js";import{getGaussianSplatAlphaCutoffValue as n}from"../../webgl-engine/shaders/GaussianSplatTechniqueConfiguration.js";class r{static{this.fadeInEase=e=>e*(2-e)}static{this.fadeOutEase=e=>e*e}static{this.inverseFadeInEase=e=>1-Math.sqrt(1-e)}static{this.inverseFadeOutEase=e=>Math.sqrt(1-e)}static{this.minimumFadeDuration=t(80)}static{this.resetFadeDurationInterval=t(1e3)}constructor(n){this._view=n,this._numFadingTiles=e(0),this._tmpFullyFadedOutTiles=[],this._visibilityUpdatePending=!1,this._previousNumFadingTiles=0,this._lastStoppedFading=t(0),this._currentFadeDuration=this.baseFadeDuration}get numFadingTiles(){return this._numFadingTiles.value}updateForFrame(e){if(e!==this._lastUpdatedFrameStart){if(this._lastUpdatedFrameStart=e,this.numFadingTiles===0)this._previousFrameStart=null;else{let n=t(this._previousFrameStart==null?0:e-this._previousFrameStart);this.updateAllTileFading(n),this._previousFrameStart=e}this._view.updateFadingTexture()}}fadeTile(e,t,n){let r=this._getTargetOpacity(t);if(e.fadeDirection=t,!this.fadingEnabled){this._instantTileFading(e,r);return}let i=e.opacityModifier;if(i!==r){let r=this._getFadeProgressFromOpacity(i,t);this._startTileFading(e,r,n)}else this._stopTileFading(e)}updateAllTileFading(e){let t=this._tmpFullyFadedOutTiles;t.length=0,this._view.tileHandles.forEach(n=>{this._updateTileFading(n,e)&&t.push(n)}),t.length>0&&(this._view.notifyTileObbsChanged(t),this._visibilityUpdatePending=!0),this._numFadingTiles.value===0&&this._visibilityUpdatePending&&(this._visibilityUpdatePending=!1,this._view.updateActiveTileVisibility()),this._numFadingTiles.value>0&&this._view.view.stage?.renderView.requestRender(2)}onFadeDurationChanged(e){e===0&&this.numFadingTiles>0&&this._instantlyFullyFadeAllTiles()}isTileFadingOut(e){return e.fadeProgress!=null&&e.fadeDirection===1}onTileDiscarded(e){e.fadeProgress!=null&&(this._numFadingTiles.value--,this._numFadingTiles.value===0&&(this._lastStoppedFading=t(performance.now())))}updateFadeDuration(){if(this.numFadingTiles&&this.numFadingTiles>=this._previousNumFadingTiles){let e=this._currentFadeDuration*.95;this._currentFadeDuration=t(Math.max(e,r.minimumFadeDuration))}else this.numFadingTiles===0&&performance.now()-this._lastStoppedFading>r.resetFadeDurationInterval&&(this._currentFadeDuration=this.baseFadeDuration);return this._previousNumFadingTiles=this.numFadingTiles,this._currentFadeDuration}get updating(){return this._numFadingTiles.value>0}get baseFadeDuration(){return this._view.view.qualitySettings.fadeDuration}get fadingEnabled(){return this.baseFadeDuration!==0}_startTileFading(e,t,n){e.fadeProgress??this._numFadingTiles.value++,e.fadeDuration=n,e.fadeProgress=t}_stopTileFading(e){e.fadeProgress!=null&&(e.fadeDirection===1&&this._onTileFullyFadedOut(e),this._numFadingTiles.value--,this._numFadingTiles.value===0&&(this._lastStoppedFading=t(performance.now())),e.fadeDuration=null,e.fadeProgress=null)}_updateTileFading(e,t){let{fadeProgress:n,fadeDirection:i}=e;if(n==null)return!1;let a=this._fadeDirectionToSign(i),o=e.fadeDuration,s=this._getTargetOpacity(i),c=t/Math.abs(o||1),l=Math.min(n+c,1),u=s-a*(1-(i===0?r.fadeInEase:r.fadeOutEase)(l)),d=l===1||this._tileReachedFadeOutCutoff(e,u);if(e.opacityModifier=d?s:u,d){let t=i===1;return this._stopTileFading(e),this._updateOpacityModifier(e),t}return e.fadeProgress=l,this._updateOpacityModifier(e),!1}_updateOpacityModifier(e){for(let t=0;t<e.pageIds.length;t++){let n=e.pageIds[t];this._view.data.fadingTexture.updateBuffer(e.opacityModifier,n)}}_tileReachedFadeOutCutoff(e,t){if(e.fadeDirection!==1)return!1;let r=n(this._view.view.qualitySettings.gaussianSplat.minimumOpacity);return t*e.maxGaussianOpacity<=r}_instantTileFading(e,t){e.fadeDuration=null,e.fadeProgress=null,e.opacityModifier=t,this._updateOpacityModifier(e),e.fadeDirection===1&&this._onTileFullyFadedOut(e)}_instantlyFullyFadeAllTiles(){let e=this._tmpFullyFadedOutTiles;e.length=0,this._view.tileHandles.forEach(t=>{if(t.fadeProgress!=null){let n=t.fadeDirection===1;this._instantTileFading(t,this._getTargetOpacity(t.fadeDirection)),n&&e.push(t)}});let t=e.length>0;t&&(this._visibilityUpdatePending=!0),this._numFadingTiles.value=0,this._visibilityUpdatePending&&(this._visibilityUpdatePending=!1,this._view.updateActiveTileVisibility()),t&&this._view.notifyTileObbsChanged(e)}_onTileFullyFadedOut(e){e.lifecycleState=0,this._view.moveTileToCache(e)}_fadeDirectionToSign(e){return e===0?1:-1}_getTargetOpacity(e){return+(e===0)}_getFadeProgressFromOpacity(e,t){let n=Math.max(0,Math.min(e,1));return t===0?r.inverseFadeInEase(n):r.inverseFadeOutEase(n)}}export{r as GaussianSplatFadeHelper};
2
+ import{signal as e}from"../../../../core/signal.js";import{Milliseconds as t}from"../../../../core/time.js";import{getGaussianSplatAlphaCutoffValue as n}from"../../webgl-engine/shaders/GaussianSplatTechniqueConfiguration.js";class r{static{this.fadeInEase=e=>e*(2-e)}static{this.fadeOutEase=e=>e*e}static{this.inverseFadeInEase=e=>1-Math.sqrt(1-e)}static{this.inverseFadeOutEase=e=>Math.sqrt(1-e)}static{this.minimumFadeDuration=t(80)}static{this.resetFadeDurationInterval=t(1e3)}constructor(n,r){this._view=n,this._onTileFullyFadedOut=r,this._numFadingTiles=e(0),this._tmpFullyFadedOutTiles=[],this._visibilityUpdatePending=!1,this._previousNumFadingTiles=0,this._lastStoppedFading=t(0),this._currentFadeDuration=this.baseFadeDuration}get numFadingTiles(){return this._numFadingTiles.value}updateForFrame(e){if(e!==this._lastUpdatedFrameStart){if(this._lastUpdatedFrameStart=e,this.numFadingTiles===0)this._previousFrameStart=null;else{let n=t(this._previousFrameStart==null?0:e-this._previousFrameStart);this.updateAllTileFading(n),this._previousFrameStart=e}this._view.updateFadingTexture()}}fadeTile(e,t,n){let r=this._getTargetOpacity(t);if(e.fadeDirection=t,!this.fadingEnabled){this._instantTileFading(e,r);return}let i=e.opacityModifier;if(i!==r){let r=this._getFadeProgressFromOpacity(i,t);this._startTileFading(e,r,n)}else this._stopTileFading(e)}updateAllTileFading(e){let t=this._tmpFullyFadedOutTiles;t.length=0,this._view.tileHandles.forEach(n=>{this._updateTileFading(n,e)&&t.push(n)}),t.length>0&&(this._view.notifyTileObbsChanged(t),this._visibilityUpdatePending=!0),this._numFadingTiles.value===0&&this._visibilityUpdatePending&&(this._visibilityUpdatePending=!1,this._view.updateActiveTileVisibility()),this._numFadingTiles.value>0&&this._view.view.stage?.renderView.requestRender(2)}onFadeDurationChanged(e){e===0&&this.numFadingTiles>0&&this._instantlyFullyFadeAllTiles()}isTileFadingOut(e){return e.fadeProgress!=null&&e.fadeDirection===1}onTileDiscarded(e){e.fadeProgress!=null&&(this._numFadingTiles.value--,this._numFadingTiles.value===0&&(this._lastStoppedFading=t(performance.now())))}updateFadeDuration(){if(this.numFadingTiles&&this.numFadingTiles>=this._previousNumFadingTiles){let e=this._currentFadeDuration*.95;this._currentFadeDuration=t(Math.max(e,r.minimumFadeDuration))}else this.numFadingTiles===0&&performance.now()-this._lastStoppedFading>r.resetFadeDurationInterval&&(this._currentFadeDuration=this.baseFadeDuration);return this._previousNumFadingTiles=this.numFadingTiles,this._currentFadeDuration}get updating(){return this._numFadingTiles.value>0}get baseFadeDuration(){return this._view.view.qualitySettings.fadeDuration}get fadingEnabled(){return this.baseFadeDuration!==0}_startTileFading(e,t,n){e.fadeProgress??this._numFadingTiles.value++,e.fadeDuration=n,e.fadeProgress=t}_stopTileFading(e){e.fadeProgress!=null&&(e.fadeDirection===1&&this._onTileFullyFadedOut(e),this._numFadingTiles.value--,this._numFadingTiles.value===0&&(this._lastStoppedFading=t(performance.now())),e.fadeDuration=null,e.fadeProgress=null)}_updateTileFading(e,t){let{fadeProgress:n,fadeDirection:i}=e;if(n==null)return!1;let a=this._fadeDirectionToSign(i),o=e.fadeDuration,s=this._getTargetOpacity(i),c=t/Math.abs(o||1),l=Math.min(n+c,1),u=s-a*(1-(i===0?r.fadeInEase:r.fadeOutEase)(l)),d=l===1||this._tileReachedFadeOutCutoff(e,u);if(e.opacityModifier=d?s:u,d){let t=i===1;return this._stopTileFading(e),this._updateOpacityModifier(e),t}return e.fadeProgress=l,this._updateOpacityModifier(e),!1}_updateOpacityModifier(e){for(let t=0;t<e.pageIds.length;t++){let n=e.pageIds[t];this._view.data.fadingTexture.updateBuffer(e.opacityModifier,n)}}_tileReachedFadeOutCutoff(e,t){if(e.fadeDirection!==1)return!1;let r=n(this._view.view.qualitySettings.gaussianSplat.minimumOpacity);return t*e.maxGaussianOpacity<=r}_instantTileFading(e,t){e.fadeDuration=null,e.fadeProgress=null,e.opacityModifier=t,this._updateOpacityModifier(e),e.fadeDirection===1&&this._onTileFullyFadedOut(e)}_instantlyFullyFadeAllTiles(){let e=this._tmpFullyFadedOutTiles;e.length=0,this._view.tileHandles.forEach(t=>{if(t.fadeProgress!=null){let n=t.fadeDirection===1;this._instantTileFading(t,this._getTargetOpacity(t.fadeDirection)),n&&e.push(t)}});let t=e.length>0;t&&(this._visibilityUpdatePending=!0),this._numFadingTiles.value=0,this._visibilityUpdatePending&&(this._visibilityUpdatePending=!1,this._view.updateActiveTileVisibility()),t&&this._view.notifyTileObbsChanged(e)}_fadeDirectionToSign(e){return e===0?1:-1}_getTargetOpacity(e){return+(e===0)}_getFadeProgressFromOpacity(e,t){let n=Math.max(0,Math.min(e,1));return t===0?r.inverseFadeInEase(n):r.inverseFadeOutEase(n)}}export{r as GaussianSplatFadeHelper};
@@ -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,negate as r,dot as i,transformQuatValues as a}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as o}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{set as s}from"../../../../core/libs/gl-matrix-2/math/vec4.js";import{project as c}from"../../../../geometry/projectionUtils.js";import{intersects as l,contains as u}from"../../../../geometry/support/aaBoundingBox.js";import{fromExtent as d}from"../../../../geometry/support/aaBoundingRect.js";import{create as f}from"../../../../geometry/support/plane.js";import{fromPoints as p}from"../../../../geometry/support/ray.js";import{GaussianSplatTarget as m}from"../../layers/i3s/Intersector.js";import{createTileBVH as h}from"../../layers/support/Tiles3DBVH.js";import{ElevationRange as g}from"../ElevationRange.js";import{IntersectorResultRay as _}from"../../webgl-engine/lib/IntersectorResult.js";class v{constructor(e){this.layerView=e,this.type=0,this.slicePlaneEnabled=!1,this.isGround=!1,this._ellipsoidLocalRayOrigin=o(),this._ellipsoidLocalRayDir=o(),this.intersectionNormal=o(),this.intersectionRayDir=o(),this.intersectionPlane=f(),this.layerViewUid=e.uid;let t=e.view.viewingMode,n=(e.useEsriCrs?e.fullExtentInLocalViewSpatialReference:e.layer.fullExtent?c(e.layer.fullExtent,e.view.renderSpatialReference):void 0)??e.view.extent,r=d(n);this._bvh=h(t,r)}destroy(){this._bvh.destroy()}addTile(e){this._bvh.addTile(e)}removeTile(e){this._bvh.removeTile(e)}get elevationRange(){let e=this._bvh.elevationRange;return e!=null&&!e.isEmpty?new g(e.minElevation,e.maxElevation):null}intersectRay(a,c,d,f,h,g){let{intersectionRayDir:v,intersectionPlane:x,layerViewUid:S,intersectionNormal:C}=this,w=p(d,f);e(v,f,d);let T=1/t(v);n(v,v,T),r(C,v),s(x,v[0],v[1],v[2],-i(v,d));let E=new b,D=new b,O=a.options.store,k=O===0,A=O===2,j=O===1||A,M=A?[]:null,N=(e,t,n,r,i,a,s,c)=>{let l=e.point??=o();l[0]=n,l[1]=r,l[2]=i,e.dist=t,e.normal=C;let u=e.outwardDirection??=o(),d=a*a+s*s+c*c;if(d>0){let e=1/Math.sqrt(d);u[0]=a*e,u[1]=s*e,u[2]=c*e}else u[0]=C[0],u[1]=C[1],u[2]=C[2];return e.layerViewUid=S,e},P=d[0],F=d[1],I=d[2],L=v[0],R=v[1],z=v[2],B=this.layerView.clippingBox,V=e=>{let{relativePositions:t,packedRotations:n,packedOpacityScaledScales:r,gaussianCount:i,obb:a,maxSplatMbsRadiusSquared:o}=e,s=a.centerX,l=a.centerY,u=a.centerZ,p=-1,m=B[0],h=B[1],g=B[2],_=B[3],v=B[4],y=B[5];for(let e=0,a=0;e<i;e++,a+=3){let i=t[a]+s,x=t[a+1]+l,S=t[a+2]+u;if(i<m||x<h||S<g||i>_||x>v||S>y)continue;let C=i-P,w=x-F,O=S-I,B=C*L+w*R+O*z;if(B<0&&B*B>o)continue;let V=B<0?0:B;if(C*C+w*w+O*O-V*V>o||k&&E.dist!=null&&(p<0&&(p=Math.sqrt(o)),Math.max(B-p,0)*T>=E.dist))continue;let H=this._intersectGaussianEllipsoid(C,w,O,L,R,z,n[e],r[e]);if(H<0)continue;let U=H*T;if(c!=null&&!c(d,f,U))continue;let W=E.dist==null||U<E.dist,G=j&&(D.dist==null||U>D.dist);if(!W&&!G&&!A)continue;let K=L*H,q=R*H,ee=z*H,J=P+K,Y=F+q,X=I+ee,Z=K-C,Q=q-w,$=ee-O;if(W&&N(E,U,J,Y,X,Z,Q,$),G&&N(D,U,J,Y,X,Z,Q,$),A){let e=new b;M.push(N(e,U,J,Y,X,Z,Q,$))}}},H=e=>{let{relativePositions:t,packedRotations:n,packedOpacityScaledScales:r,gaussianCount:i,obb:a,maxSplatMbsRadiusSquared:o}=e,s=a.centerX,l=a.centerY,u=a.centerZ,p=-1,m=P-s,h=F-l,g=I-u;for(let e=0,a=0;e<i;e++,a+=3){let i=t[a]-m,s=t[a+1]-h,l=t[a+2]-g,u=i*L+s*R+l*z;if(u<0&&u*u>o)continue;let _=u<0?0:u;if(i*i+s*s+l*l-_*_>o||k&&E.dist!=null&&(p<0&&(p=Math.sqrt(o)),Math.max(u-p,0)*T>=E.dist))continue;let v=this._intersectGaussianEllipsoid(i,s,l,L,R,z,n[e],r[e]);if(v<0)continue;let y=v*T;if(c!=null&&!c(d,f,y))continue;let x=E.dist==null||y<E.dist,S=j&&(D.dist==null||y>D.dist);if(!x&&!S&&!A)continue;let C=L*v,w=R*v,O=z*v,B=P+C,V=F+w,H=I+O,U=C-i,W=w-s,G=O-l;if(x&&N(E,y,B,V,H,U,W,G),S&&N(D,y,B,V,H,U,W,G),A){let e=new b;M.push(N(e,y,B,V,H,U,W,G))}}},U=(e,t)=>{let{min:n,max:r}=e.obb.signedDistanceRangePlane(x);if(r<0)return;let i=n*T;if(!(k&&E.dist!=null&&E.dist<i)){if(E.dist!=null&&D.dist!=null){let e=r*T;if(E.dist<i&&D.dist>e)return}t?V(e):H(e)}};this._bvh.forEachTileIntersectingRay(d,f,B==null?e=>{U(e,!1)}:e=>{let t=e.boundingBox;l(t,B)&&U(e,!u(B,t))},g);let W=(e,t)=>{let{layerViewUid:n}=t,r=new m(t.point,t.outwardDirection,n);e.set(0,r,t.dist,t.dist,t.normal)};if(y(E)){let e=a.results.min;(e.distance==null||E.dist<e.distance)&&W(e,E)}if(y(D)&&j){let e=a.results.max;(e.distance==null||D.dist>e.distance)&&W(e,D)}if(A&&M?.length)for(let e of M){let t=new _(w);W(t,e),a.results.all.push(t)}}_intersectGaussianEllipsoid(e,t,n,r,i,o,s,c){let l=s>>>30,u=s&1023,d=s>>>10&1023,f=s>>>20&1023,p=(u&x)*S*(1-(u>>>9&1)*2),m=(d&x)*S*(1-(d>>>9&1)*2),h=(f&x)*S*(1-(f>>>9&1)*2),g,_,v,y,b=p*p+m*m+h*h,T=Math.sqrt(Math.max(0,1-b));switch(l){case 0:g=T,_=h,v=m,y=p;break;case 1:g=h,_=T,v=m,y=p;break;case 2:g=h,_=m,v=T,y=p;break;default:g=h,_=m,v=p,y=T}let E=this._ellipsoidLocalRayOrigin;E[0]=-e,E[1]=-t,E[2]=-n,a(E,E,-g,-_,-v,y);let D=this._ellipsoidLocalRayDir;D[0]=r,D[1]=i,D[2]=o,a(D,D,-g,-_,-v,y);let O=w[c&255],k=w[c>>>8&255],A=w[c>>>16],j=E[0]*O,M=E[1]*k,N=E[2]*A,P=j*j+M*M+N*N;if(P<=1)return 0;let F=D[0]*O,I=D[1]*k,L=D[2]*A,R=F*F+I*I+L*L,z=j*F+M*I+N*L;if(z>0)return C;let B=z*z-R*(P-1);return B<0?C:(-z-Math.sqrt(B))/R}getElevationRange(e){return this._bvh.getElevationRangeIntersectingSphere(e)??new g(0,0)}}function y(e){return e.dist!=null&&e.point!=null}class b{constructor(){this.point=null,this.dist=null,this.normal=null,this.outwardDirection=null,this.layerViewUid=``}}const x=511,S=Math.SQRT1_2/511,C=-1,w=(()=>{let e=new Float64Array(256);for(let t=0;t<e.length;t++)e[t]=Math.exp(10-t/16)/3;return e})();export{v as GaussianSplatIntersectionHandler};
2
+ import{subtract as e,length as t,scale as n,negate as r,dot as i,transformQuatValues as a}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as o}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{set as s}from"../../../../core/libs/gl-matrix-2/math/vec4.js";import{project as c}from"../../../../geometry/projectionUtils.js";import{intersects as l,contains as u}from"../../../../geometry/support/aaBoundingBox.js";import{fromExtent as d}from"../../../../geometry/support/aaBoundingRect.js";import{create as f}from"../../../../geometry/support/plane.js";import{fromPoints as p}from"../../../../geometry/support/ray.js";import{GaussianSplatTarget as m}from"../../layers/i3s/Intersector.js";import{createTileBVH as h}from"../../layers/support/Tiles3DBVH.js";import{ElevationRange as g}from"../ElevationRange.js";import{gaussianEllipsoidScaleMultiplier as _}from"./formatConstants.js";import{IntersectorResultRay as v}from"../../webgl-engine/lib/IntersectorResult.js";class y{constructor(e){this.layerView=e,this.type=0,this.slicePlaneEnabled=!1,this.isGround=!1,this._ellipsoidLocalRayOrigin=o(),this._ellipsoidLocalRayDir=o(),this.intersectionNormal=o(),this.intersectionRayDir=o(),this.intersectionPlane=f(),this.layerViewUid=e.uid;let t=e.view.viewingMode,n=(e.useEsriCrs?e.fullExtentInLocalViewSpatialReference:e.layer.fullExtent?c(e.layer.fullExtent,e.view.renderSpatialReference):void 0)??e.view.extent,r=d(n);this._bvh=h(t,r)}destroy(){this._bvh.destroy()}addTile(e){this._bvh.addTile(e)}removeTile(e){this._bvh.removeTile(e)}get elevationRange(){let e=this._bvh.elevationRange;return e!=null&&!e.isEmpty?new g(e.minElevation,e.maxElevation):null}intersectRay(a,c,d,f,h,g){let{intersectionRayDir:_,intersectionPlane:y,layerViewUid:S,intersectionNormal:C}=this,w=p(d,f);e(_,f,d);let T=1/t(_);n(_,_,T),r(C,_),s(y,_[0],_[1],_[2],-i(_,d));let E=new x,D=new x,O=a.options.store,k=O===0,A=O===2,j=O===1||A,M=A?[]:null,N=(e,t,n,r,i,a,s,c)=>{let l=e.point??=o();l[0]=n,l[1]=r,l[2]=i,e.dist=t,e.normal=C;let u=e.outwardDirection??=o(),d=a*a+s*s+c*c;if(d>0){let e=1/Math.sqrt(d);u[0]=a*e,u[1]=s*e,u[2]=c*e}else u[0]=C[0],u[1]=C[1],u[2]=C[2];return e.layerViewUid=S,e},P=d[0],F=d[1],I=d[2],L=_[0],R=_[1],z=_[2],B=this.layerView.clippingBox,V=e=>{let{relativePositions:t,packedRotations:n,packedOpacityScaledScales:r,gaussianCount:i,obb:a,maxSplatMbsRadiusSquared:o}=e,s=a.centerX,l=a.centerY,u=a.centerZ,p=-1,m=B[0],h=B[1],g=B[2],_=B[3],v=B[4],y=B[5];for(let e=0,a=0;e<i;e++,a+=3){let i=t[a]+s,b=t[a+1]+l,S=t[a+2]+u;if(i<m||b<h||S<g||i>_||b>v||S>y)continue;let C=i-P,w=b-F,O=S-I,B=C*L+w*R+O*z;if(B<0&&B*B>o)continue;let V=B<0?0:B;if(C*C+w*w+O*O-V*V>o||k&&E.dist!=null&&(p<0&&(p=Math.sqrt(o)),Math.max(B-p,0)*T>=E.dist))continue;let H=this._intersectGaussianEllipsoid(C,w,O,L,R,z,n[e],r[e]);if(H<0)continue;let U=H*T;if(c!=null&&!c(d,f,U))continue;let W=E.dist==null||U<E.dist,G=j&&(D.dist==null||U>D.dist);if(!W&&!G&&!A)continue;let K=L*H,q=R*H,ee=z*H,J=P+K,Y=F+q,X=I+ee,Z=K-C,Q=q-w,$=ee-O;if(W&&N(E,U,J,Y,X,Z,Q,$),G&&N(D,U,J,Y,X,Z,Q,$),A){let e=new x;M.push(N(e,U,J,Y,X,Z,Q,$))}}},H=e=>{let{relativePositions:t,packedRotations:n,packedOpacityScaledScales:r,gaussianCount:i,obb:a,maxSplatMbsRadiusSquared:o}=e,s=a.centerX,l=a.centerY,u=a.centerZ,p=-1,m=P-s,h=F-l,g=I-u;for(let e=0,a=0;e<i;e++,a+=3){let i=t[a]-m,s=t[a+1]-h,l=t[a+2]-g,u=i*L+s*R+l*z;if(u<0&&u*u>o)continue;let _=u<0?0:u;if(i*i+s*s+l*l-_*_>o||k&&E.dist!=null&&(p<0&&(p=Math.sqrt(o)),Math.max(u-p,0)*T>=E.dist))continue;let v=this._intersectGaussianEllipsoid(i,s,l,L,R,z,n[e],r[e]);if(v<0)continue;let y=v*T;if(c!=null&&!c(d,f,y))continue;let b=E.dist==null||y<E.dist,S=j&&(D.dist==null||y>D.dist);if(!b&&!S&&!A)continue;let C=L*v,w=R*v,O=z*v,B=P+C,V=F+w,H=I+O,U=C-i,W=w-s,G=O-l;if(b&&N(E,y,B,V,H,U,W,G),S&&N(D,y,B,V,H,U,W,G),A){let e=new x;M.push(N(e,y,B,V,H,U,W,G))}}},U=(e,t)=>{let{min:n,max:r}=e.obb.signedDistanceRangePlane(y);if(r<0)return;let i=n*T;if(!(k&&E.dist!=null&&E.dist<i)){if(E.dist!=null&&D.dist!=null){let e=r*T;if(E.dist<i&&D.dist>e)return}t?V(e):H(e)}};this._bvh.forEachTileIntersectingRay(d,f,B==null?e=>{U(e,!1)}:e=>{let t=e.boundingBox;l(t,B)&&U(e,!u(B,t))},g);let W=(e,t)=>{let{layerViewUid:n}=t,r=new m(t.point,t.outwardDirection,n);e.set(0,r,t.dist,t.dist,t.normal)};if(b(E)){let e=a.results.min;(e.distance==null||E.dist<e.distance)&&W(e,E)}if(b(D)&&j){let e=a.results.max;(e.distance==null||D.dist>e.distance)&&W(e,D)}if(A&&M?.length)for(let e of M){let t=new v(w);W(t,e),a.results.all.push(t)}}_intersectGaussianEllipsoid(e,t,n,r,i,o,s,c){let l=s>>>30,u=s&1023,d=s>>>10&1023,f=s>>>20&1023,p=(u&S)*C*(1-(u>>>9&1)*2),m=(d&S)*C*(1-(d>>>9&1)*2),h=(f&S)*C*(1-(f>>>9&1)*2),g,_,v,y,b=p*p+m*m+h*h,x=Math.sqrt(Math.max(0,1-b));switch(l){case 0:g=x,_=h,v=m,y=p;break;case 1:g=h,_=x,v=m,y=p;break;case 2:g=h,_=m,v=x,y=p;break;default:g=h,_=m,v=p,y=x}let E=this._ellipsoidLocalRayOrigin;E[0]=-e,E[1]=-t,E[2]=-n,a(E,E,-g,-_,-v,y);let D=this._ellipsoidLocalRayDir;D[0]=r,D[1]=i,D[2]=o,a(D,D,-g,-_,-v,y);let O=T[c&255],k=T[c>>>8&255],A=T[c>>>16],j=E[0]*O,M=E[1]*k,N=E[2]*A,P=j*j+M*M+N*N;if(P<=1)return 0;let F=D[0]*O,I=D[1]*k,L=D[2]*A,R=F*F+I*I+L*L,z=j*F+M*I+N*L;if(z>0)return w;let B=z*z-R*(P-1);return B<0?w:(-z-Math.sqrt(B))/R}getElevationRange(e){return this._bvh.getElevationRangeIntersectingSphere(e)??new g(0,0)}}function b(e){return e.dist!=null&&e.point!=null}class x{constructor(){this.point=null,this.dist=null,this.normal=null,this.outwardDirection=null,this.layerViewUid=``}}const S=511,C=Math.SQRT1_2/511,w=-1,T=(()=>{let e=new Float64Array(256);for(let t=0;t<e.length;t++)e[t]=Math.exp(10-t/16)/_;return e})();export{y as GaussianSplatIntersectionHandler};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{reallocGrowthFactor as e}from"../../../../core/arrayUtils.js";import{minExpectedGaussianCount as t}from"./GaussianSplatAtlasPages.js";import{TextureBackedBufferLayout as n}from"../../webgl-engine/lib/TextureBackedBuffer/TextureBackedBufferLayout.js";import{TextureBuffer as r}from"../../webgl-engine/lib/TextureBackedBuffer/TextureBuffer.js";const i=new n([{name:`gaussianSplatOrder`,type:`u32`}]);class a{constructor(e){this._textureBuffer=null,this._rctx=e}get usedMemory(){return this._textureBuffer?.usedMemory??0}ensureCapacity(n){if(n<=0)return;let a=this._textureBuffer;if(a!=null&&a.itemCount>=n&&a.texture.hasWebGLTextureObject)return;let o=Math.max(Math.ceil(n*e),t);a?.dispose(),this._textureBuffer=new r(this._rctx,i,o)}setData(e,t){this.ensureCapacity(t),this._textureBuffer.setSubData(e.buffer,0,e.byteOffset,t)}clear(){this._textureBuffer?.dispose(),this._textureBuffer=null}destroy(){this.clear()}get texture(){return this._textureBuffer?.texture??null}}export{a as GaussianSplatOrderTexture};
2
+ import{reallocGrowthFactor as e}from"../../../../core/arrayUtils.js";import{minExpectedGaussianCount as t}from"./GaussianSplatAtlasPages.js";import{TextureBackedBufferLayout as n}from"../../webgl-engine/lib/TextureBackedBuffer/TextureBackedBufferLayout.js";import{TextureBuffer as r}from"../../webgl-engine/lib/TextureBackedBuffer/TextureBuffer.js";const i=new n([{name:`gaussianSplatOrder`,type:`u32`}]);class a{constructor(e){this._textureBuffer=null,this._rctx=e}get usedMemory(){return this._textureBuffer?.usedMemory??0}ensureCapacity(n){if(n<=0)return;let a=this._textureBuffer;if(a!=null&&a.itemCount>=n&&a.texture.hasWebGLTextureObject)return;let o=Math.max(Math.ceil(n*e),t);a?.dispose(),this._textureBuffer=new r(this._rctx,i,o)}setData(e,t){this.ensureCapacity(t);let n=this._textureBuffer,{width:r}=n.texture.descriptor,i=r*Math.max(1,Math.floor(1048576/Uint32Array.BYTES_PER_ELEMENT/r));for(let r=0;r<t;r+=i)n.setSubData(e.buffer,r,e.byteOffset+r*Uint32Array.BYTES_PER_ELEMENT,Math.min(i,t-r))}clear(){this._textureBuffer?.dispose(),this._textureBuffer=null}destroy(){this.clear()}get texture(){return this._textureBuffer?.texture??null}}export{a as GaussianSplatOrderTexture};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{reallocGrowthFactor as e}from"../../../../core/arrayUtils.js";import has from"../../../../core/has.js";import{initialSplatAtlasTextureHeight as t,GaussianSplatAtlasPages as n,splatAtlasTextureWidth as r,maximumSplatAtlasTextureHeightMobile as i,maximumSplatAtlasTextureHeight as a,packedGaussianSizeInU32 as o,gaussiansPerPage as s}from"./GaussianSplatAtlasPages.js";import{PixelType as c,SizedPixelFormat as l}from"../../../webgl/enums.js";import{DisposableFramebufferObject as u}from"../../../webgl/FramebufferObject.js";import d from"../../../webgl/Texture.js";import{TextureDescriptor as f}from"../../../webgl/TextureDescriptor.js";class p{constructor(e,r,i,a){this._splatAtlasTextureHeight=t,this.texture=null,this._rctx=e,this._fboCache=i,this._onCachedTextureEvicted=a,this.pageAllocator=new n,this._cache=r.newCache(`gaussian texture cache`,e=>{e.dispose(),this._onCachedTextureEvicted()})}get usedMemory(){return this.texture?.usedMemory??0}get maximumSupportedVisibleGaussians(){let e=has(`esri-mobile`)?r*i:r*a;return Math.floor(e*.6666666666666666)}ensureTextureAtlas(){if(this.texture?.hasWebGLTextureObject)return;this.texture=null;let e=this._cache.pop(`splatTextureAtlas`);if(e){this.texture=e;return}let t=new f;t.height=this._splatAtlasTextureHeight,t.width=r,t.pixelFormat=36249,t.dataType=c.UNSIGNED_INT,t.internalFormat=l.RGBA32UI,t.samplingMode=9728,t.wrapMode=33071,t.isImmutable=!0,this.texture=new d(this._rctx,t),this._updatePageAllocator()}grow(){if(!this.texture)return this.ensureTextureAtlas(),!1;let t=Math.floor(this._splatAtlasTextureHeight*e);if(t>Math.min(has(`esri-mobile`)?i:a,this._rctx.parameters.maxTextureSize))return!1;let n=new u(this._rctx,this.texture),o=this._fboCache.acquire(r,t,`gaussian splat atlas resize`,12);return this._rctx.blitFramebuffer(n,o.fbo,16384,9728,0,0,r,this._splatAtlasTextureHeight,0,0,r,this._splatAtlasTextureHeight),this.texture=o.fbo?.detachColorTexture(),n.dispose(),o.dispose(),this._splatAtlasTextureHeight=t,this._updatePageAllocator(),!0}allocatePage(){let e=this.pageAllocator.findFirstFreePage();return e===null&&this.grow()&&(e=this.pageAllocator.findFirstFreePage()),e!==null&&this.pageAllocator.allocate(e),e}freePage(e){this.pageAllocator.free(e)}freePages(e){for(let t of e)this.freePage(t)}update(e,t,n,i=1){this.ensureTextureAtlas();let a=i*s,c=0;for(;a>0;){let i=Math.min(r-e,a),s=e===0&&i===r?Math.floor(a/r):1;this.texture.updateData(0,e,t,i,s,n.subarray(c));let l=i*s;c+=l*o,a-=l,e=0,t+=s}}_updatePageAllocator(){let e=r*this._splatAtlasTextureHeight/s;this.pageAllocator.pageCount!==e&&this.pageAllocator.resize(e)}clear(){this.texture&&=(this._cache.put(`splatTextureAtlas`,this.texture),null)}destroy(){this._onCachedTextureEvicted=()=>{},this._cache.destroy(),this.texture?.dispose(),this.texture=null}}export{p as GaussianSplatTextureAtlas};
2
+ import{reallocGrowthFactor as e}from"../../../../core/arrayUtils.js";import has from"../../../../core/has.js";import{initialSplatAtlasTextureHeight as t,GaussianSplatAtlasPages as n,splatAtlasTextureWidth as r,maximumSplatAtlasTextureHeightMobile as i,maximumSplatAtlasTextureHeight as a,packedGaussianSizeInU32 as o,gaussiansPerPage as s}from"./GaussianSplatAtlasPages.js";import{PixelType as c,SizedPixelFormat as l}from"../../../webgl/enums.js";import{DisposableFramebufferObject as u}from"../../../webgl/FramebufferObject.js";import{Texture as d}from"../../../webgl/Texture.js";import{TextureDescriptor as f}from"../../../webgl/TextureDescriptor.js";class p{constructor(e,r,i,a){this._splatAtlasTextureHeight=t,this.texture=null,this._rctx=e,this._fboCache=i,this._onCachedTextureEvicted=a,this.pageAllocator=new n,this._cache=r.newCache(`gaussian texture cache`,e=>{e.dispose(),this._onCachedTextureEvicted()})}get usedMemory(){return this.texture?.usedMemory??0}get maximumSupportedVisibleGaussians(){let e=has(`esri-mobile`)?r*i:r*a;return Math.floor(e*.6666666666666666)}ensureTextureAtlas(){if(this.texture?.hasWebGLTextureObject)return;this.texture=null;let e=this._cache.pop(`splatTextureAtlas`);if(e){this.texture=e;return}let t=new f;t.height=this._splatAtlasTextureHeight,t.width=r,t.pixelFormat=36249,t.dataType=c.UNSIGNED_INT,t.internalFormat=l.RGBA32UI,t.samplingMode=9728,t.wrapMode=33071,t.isImmutable=!0,this.texture=new d(this._rctx,t),this._updatePageAllocator()}grow(){if(!this.texture)return this.ensureTextureAtlas(),!1;let t=Math.floor(this._splatAtlasTextureHeight*e);if(t>Math.min(has(`esri-mobile`)?i:a,this._rctx.parameters.maxTextureSize))return!1;let n=new u(this._rctx,this.texture),o=this._fboCache.acquire(r,t,`gaussian splat atlas resize`,12);return this._rctx.blitFramebuffer(n,o.fbo,16384,9728,0,0,r,this._splatAtlasTextureHeight,0,0,r,this._splatAtlasTextureHeight),this.texture=o.fbo?.detachColorTexture(),n.dispose(),o.dispose(),this._splatAtlasTextureHeight=t,this._updatePageAllocator(),!0}allocatePage(){let e=this.pageAllocator.findFirstFreePage();return e===null&&this.grow()&&(e=this.pageAllocator.findFirstFreePage()),e!==null&&this.pageAllocator.allocate(e),e}freePage(e){this.pageAllocator.free(e)}freePages(e){for(let t of e)this.freePage(t)}update(e,t,n,i=1){this.ensureTextureAtlas();let a=i*s,c=0;for(;a>0;){let i=Math.min(r-e,a),s=e===0&&i===r?Math.floor(a/r):1;this.texture.updateData(0,e,t,i,s,n.subarray(c));let l=i*s;c+=l*o,a-=l,e=0,t+=s}}_updatePageAllocator(){let e=r*this._splatAtlasTextureHeight/s;this.pageAllocator.pageCount!==e&&this.pageAllocator.resize(e)}clear(){this.texture&&=(this._cache.put(`splatTextureAtlas`,this.texture),null)}destroy(){this._onCachedTextureEvicted=()=>{},this._cache.destroy(),this.texture?.dispose(),this.texture=null}}export{p as GaussianSplatTextureAtlas};
@@ -0,0 +1,2 @@
1
+ /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
+ import{isUint32Array as e}from"../../../../core/typedArrayUtil.js";import{fromValues as t}from"../../../../core/libs/gl-matrix-2/factories/quatf64.js";import{validateEntity3D as n}from"../../../../layers/support/tiles3DUtils.js";import{ElevationRange as r}from"../ElevationRange.js";import{Obb as i}from"../orientedBoundingBox.js";import{gaussianSplatGridCellSize as a,gaussianEllipsoidScaleMultiplier as o}from"./formatConstants.js";import{splatPageSizeInU32 as s,gaussiansPerPage as c,packedGaussianSizeInU32 as l,splatAtlasTextureWidth as u}from"./GaussianSplatAtlasPages.js";import{GaussianTile as d}from"./GaussianTile.js";class f{static{this.createRenderableBatchSize=64}static{this.uploadBatchPageCount=16}constructor(e,t,n){this._textureAtlas=e,this._headerTexture=t,this._freeInvisibleTiles=n,this._pageBuffer=new Uint32Array(s*f.uploadBatchPageCount),this._conversionBuffer=new ArrayBuffer(4),this._u32View=new Uint32Array(this._conversionBuffer),this._f32View=new Float32Array(this._conversionBuffer)}prepare(r){let{entity3d:o}=r;if(!n(o))throw Error(`entity3D not valid`);let s=o.desc.geometry.prims[o.validPrimitiveIndices[0]];if(s.atrbs.length<1||s.atrbs[0].sem!==`GSplatPacked`)throw Error(`entity3D not valid`);let c=s.atrbs[0],l=o.assets[c.assetId];if(!l)throw Error(`entity3D not valid`);let u=l.count;if(u===0)return null;let d=null;if(l.dataType===`U32`&&e(l.data))d=l.data;else throw Error(`unexpected GaussianSplat Entity3D asset.data format`);let f=this._extractHeader(d),p=f.tileOrigin.x*a,m=f.tileOrigin.y*a,h=f.tileOrigin.z*a,g=o.desc,_=g.obb.quaternion,v=new i(g.obb.center,g.obb.halfSize,t(..._));return{handle:r.handle,bufferView:d,totalGaussians:u,packedHeader:f.packedHeader,tileOrigin:{x:p,y:m,z:h},invPosScale:f.invPosScale,obb:v,origin:{x:v.centerX,y:v.centerY,z:v.centerZ}}}*build(e,t){let{handle:n,bufferView:i,totalGaussians:a,packedHeader:o,tileOrigin:p,invPosScale:g,obb:_,origin:v,isGlobal:y,ellipsoidRadius:b}=e,x=p.x,S=p.y,C=p.z,w=v.x,T=v.y,E=v.z,D=new Float32Array(a*3),O=new Uint32Array(a),k=new Uint32Array(a),A=[],j=Math.ceil(a/c),M=1/0,N=-1/0,P=1/0,F=-1/0,I=0,L=-1,R=0,z=0;for(let e=0;e<a;e++){let n=e*l,r=i[n],a=i[n+1],o=i[n+2],s=i[n+3],c=a&16383,u=a>>>14&16383,d=a>>>28&15|(o&1023)<<4,p=s>>>24,m=h[p],_=(o>>>10&255)+m,v=(o>>>18&255)+m,b=(o>>>26&63|(s&3)<<6)+m,A=_>0?_:0,j=v>0?v:0,B=b>0?b:0,V=A|j<<8|B<<16,H=Math.max(A,j,B),U=c*g+x,W=u*g+S,G=d*g+C;if(D[I]=U-w,D[I+1]=W-T,D[I+2]=G-E,y){let e=U*U+W*W+G*G;P=Math.min(P,e),F=Math.max(F,e)}else M=Math.min(M,G),N=Math.max(N,G);O[e]=r,k[e]=V,H>L&&(L=H),p>R&&(R=p),I+=3,z++,z===f.createRenderableBatchSize&&(z=0,t.madeProgress()&&(t=yield))}z>0&&t.madeProgress()&&(t=yield),y&&(M=Math.sqrt(P)-b,N=Math.sqrt(F)-b);let B=this._extractGaussianSplatMbsRadiusSquared(L),V=new r(M,N),H=this._textureAtlas,U=this._headerTexture;try{for(let e=0;e<j;e+=f.uploadBatchPageCount){let n=Math.min(j,e+f.uploadBatchPageCount);for(let t=e;t<n;t++){let e=H.allocatePage();if(e===null&&(this._freeInvisibleTiles(),e=H.allocatePage()),e===null)throw Error(`ran out of gaussian splat memory`);A.push(e)}for(let t=e;t<n;){let e=A[t],r=t+1;for(;r<n&&A[r]===A[r-1]+1;)r++;let d=r-t,f=a-t*c,p=Math.min(f,d*c),m=t*s,h=p*l;this._pageBuffer.set(i.subarray(m,m+h));let g=e*c,_=g%u,v=Math.floor(g/u);H.update(_,v,this._pageBuffer,d),U.update(e,o,d),t=r}t.madeProgress()&&(t=yield)}}catch(e){throw H.freePages(A),e}return new d({handle:n,obb:_,pageIds:A,relativePositions:D,packedRotations:O,packedOpacityScaledScales:k,gaussianCount:a,maxSplatMbsRadiusSquared:B,maxGaussianOpacity:R/m,elevationRange:V})}_extractGaussianSplatMbsRadiusSquared(e){return Math.exp(e/8-20)*p}_extractHeader(e){let t=e.length-4,n=this._reinterpretU32AsFloat(e[t]),r=this._reinterpretU32AsFloat(e[t+1]),i=this._reinterpretU32AsFloat(e[t+2]),a=1/(1<<(e[t+3]&255));return{packedHeader:e.subarray(t,t+4),tileOrigin:{x:n,y:r,z:i},invPosScale:a}}_reinterpretU32AsFloat(e){return this._u32View[0]=e,this._f32View[0]}}const p=o*o,m=255,h=(()=>{let e=new Int16Array(256);e[0]=-255;for(let t=1;t<e.length;t++)e[t]=Math.round(16*Math.log(t/255));return e})();export{f as GaussianTileBuilder};
@@ -0,0 +1,2 @@
1
+ /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
+ import{Milliseconds as e}from"../../../../core/time.js";class t{constructor(t){this._view=t,this._visibilityChange=0,this._tileFadeInsAwaitingInitialSort=new Set,this._pendingTileFadeOuts=new Map,this._pendingFadeDuration=e(0),this._tmpTilesWithChangedVisibility=[]}get visibilityChange(){return this._visibilityChange}get pendingIncomingTileCount(){return this._tileFadeInsAwaitingInitialSort.size}get pendingOutgoingTileCount(){return this._pendingTileFadeOuts.size}freeTile(e){this._tileFadeInsAwaitingInitialSort.delete(e),this._pendingTileFadeOuts.delete(e);let t=!1,n=this._view.tileHandles.get(e);if(n){let r=!1;for(let t of this._pendingTileFadeOuts.values())t.incomingTileHandles.has(e)&&(t.visibilityChange=this._visibilityChange+1,r=!0);r&&(this._visibilityChange++,t=!0);let i=n.lifecycleState!==0;i&&(t=!0,this._view.fadeHelper.onTileDiscarded(n)),this._view.releaseTile(n,i)}t&&this._view.updateActiveTileVisibility()}setVisibility(e,t,r){let i=this._view.fadeHelper.updateFadeDuration(),a=new n(this._visibilityChange+1),o=new Set;for(let n=0;n<r;n++){let r=this._view.tileHandles.get(e[n]);if(!r)continue;let s=t[n]?this._prepareTileFadeIn(r,i):this._prepareTileFadeOut(r,a);t[n]&&a.incomingTileHandles.add(r.handle),s&&o.add(r.handle)}if(o.size!==0){if(this._visibilityChange++,this._pendingFadeDuration=i,this._updatePendingTileHandoffs(o,a),a.incomingTileHandles.size===0)for(let e of this._tileFadeInsAwaitingInitialSort)a.incomingTileHandles.add(e);this._view.updateActiveTileVisibility()}}onSortComplete(e,t){let n=this._tmpTilesWithChangedVisibility;n.length=0,this._triggerFadeIns(e,n);let r=this._triggerFadeOuts(t,n);n.length>0&&this._view.notifyTileObbsChanged(n),r&&this._view.updateActiveTileVisibility()}onTileFullyFadedOut(e){e.lifecycleState=0,this._view.cacheTile(e)}_updatePendingTileHandoffs(e,t){for(let n of new Set(this._pendingTileFadeOuts.values())){if(n===t)continue;let r=!1;for(let i of e)n.incomingTileHandles.has(i)&&(r=!0,t.incomingTileHandles.size>0&&n.incomingTileHandles.delete(i));if(r){n.visibilityChange=t.visibilityChange;for(let e of t.incomingTileHandles)n.incomingTileHandles.add(e)}}}_prepareTileFadeIn(e,t){let n=this._pendingTileFadeOuts.delete(e.handle);return e.lifecycleState===2?(this._view.fadeHelper.fadeTile(e,0,t),!1):this._tileFadeInsAwaitingInitialSort.has(e.handle)?n:(e.lifecycleState===0&&this._view.activateTile(e),e.lifecycleState=1,this._tileFadeInsAwaitingInitialSort.add(e.handle),!0)}_prepareTileFadeOut(e,t){let n=this._tileFadeInsAwaitingInitialSort.delete(e.handle);return n&&e.lifecycleState===1&&(this._view.cacheTile(e),e.lifecycleState=0),e.lifecycleState===2?this._pendingTileFadeOuts.has(e.handle)?n:(this._pendingTileFadeOuts.set(e.handle,t),!0):n}_triggerFadeIns(e,t){for(let n of e)this._view.tileHandles.get(n.handle)===n&&this._tileFadeInsAwaitingInitialSort.delete(n.handle)&&(n.lifecycleState=2,t.push(n),this._view.fadeHelper.fadeTile(n,0,this._pendingFadeDuration))}_triggerFadeOuts(t,n){let r=!1;for(let e of this._pendingTileFadeOuts.values())if(t>=e.visibilityChange){r=!0;break}if(!r)return!1;let i=this._pendingFadeDuration,a=this._pendingFadeDuration;for(let t of this._view.tileHandles.values()){let{fadeDirection:n,fadeDuration:r,fadeProgress:o}=t;if(n!==0||r==null||o==null)continue;let s=r*(1-o);i=e(Math.max(i,s)),a=e(Math.max(a,r))}let o=!1;for(let[e,r]of this._pendingTileFadeOuts){if(t<r.visibilityChange)continue;this._pendingTileFadeOuts.delete(e);let s=this._view.tileHandles.get(e);if(s){let e=s.lifecycleState===2,t=s.opacityModifier===1?i:a;this._view.fadeHelper.fadeTile(s,1,t),e&&s.lifecycleState===0&&(n.push(s),o=!0)}}return o}}class n{constructor(e){this.visibilityChange=e,this.incomingTileHandles=new Set}}export{t as GaussianTileLifecycle};
@@ -0,0 +1,2 @@
1
+ /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
+ const e=2.048,t=3;export{t as gaussianEllipsoidScaleMultiplier,e as gaussianSplatGridCellSize};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import{createTask as t}from"../../../../core/asyncUtils.js";import{on as n}from"../../../../core/events.js";import{destroyMaybe as r,abortMaybe as i}from"../../../../core/maybe.js";import{throwIfAborted as a,isAbortError as o}from"../../../../core/promiseUtils.js";import{property as s,subclass as c}from"../../../../core/accessorSupport/decorators.js";import{distance as l,exactEquals as u,copy as d}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as f,clone as p}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import m from"../../../../geometry/Point.js";import{distanceToScale as h}from"../cameraScaleUtils.js";import{PointOfInterest as g}from"./PointOfInterest.js";import{PropertiesPool as _}from"../../../support/PropertiesPool.js";import{Yield as v}from"../../../support/Yield.js";let y=class extends g{constructor(e){super(e),this._dirty=!1,this._groundQueryDirty=!0,this._propertiesPool=new _({location:()=>new m,renderLocation:()=>f()},this),this._estimatedSurfaceAltitude=0,this._elevationQueryTask=null,this._lastQueryRenderEye=f(),this.renderLocation=f(),this._tmpPoint=new m}initialize(){this.scheduler&&this.addHandles(this.scheduler.registerTask(this.task,this)),this.surface&&this.addHandles(n(this.surface,`elevation-query-change`,()=>this._invalidateElevationQuery())),this.runTask(),this._updateRenderLocation()}destroy(){this._cancelPendingRequest(),this._propertiesPool=r(this._propertiesPool)}get _camera(){return this.state.contentCamera}get location(){let e=this._propertiesPool.get(`location`);return e.spatialReference=this.state.spatialReference,this.renderCoordsHelper.fromRenderCoords(this.renderLocation,e),e}get scale(){let e=this._camera,t=l(e.eye,this.renderLocation),n={renderCoordsHelper:this.renderCoordsHelper,state:{camera:e}};return h(n,t)}get updating(){return this._dirty||this._elevationQueryTask!=null}updateRenderLocation(){this._setDirty(),this._updateRenderLocation()}_setDirty(){this._dirty||=!0}_cancelPendingRequest(){this._elevationQueryTask=i(this._elevationQueryTask)}get readyToRun(){return!this._elevationQueryTask&&this._dirty&&this._groundQueryReady}runTask(){this._cancelPendingRequest(),this._dirty=!1;let e=p(this._camera.eye);if(this._hasCurrentGroundQuery(e))return v;let n=this.map?.ground;if(!n)return this._updateSurfaceAltitude(0),this._rememberGroundQuery(e),v;if(!this._groundQueryReady)return this._setDirty(),v;let r=this.state.spatialReference;this._tmpPoint.spatialReference=r,this.renderCoordsHelper.fromRenderCoords(this._camera.eye,this._tmpPoint);let i=(this._tmpPoint.z??0)>x&&this.renderCoordsHelper.viewingMode===1&&(r.isWGS84||r.isWebMercator)?S:0,s=null;return s=t(async t=>{try{let r=await n.queryElevation(this._tmpPoint,{signal:t,cache:this.cache,minDemResolution:i});if(a(t),this._elevationQueryTask!==s)return;this._updateSurfaceAltitude(r.geometry.z??0),this._rememberGroundQuery(e)}catch(n){if(this._elevationQueryTask!==s||t.aborted||o(n))return;this._updateSurfaceAltitude(0),this._rememberGroundQuery(e)}finally{this._elevationQueryTask===s&&(this._elevationQueryTask=null)}}),this._elevationQueryTask=s,v}get _groundQueryReady(){return this.surface?.elevationQueryReady??!0}_hasCurrentGroundQuery(e){return!this._groundQueryDirty&&u(this._lastQueryRenderEye,e)}_rememberGroundQuery(e){d(this._lastQueryRenderEye,e),this._groundQueryDirty=!1}_invalidateElevationQuery(){this._cancelPendingRequest(),this.cache?.clear(),this._groundQueryDirty=!0,this._setDirty()}_updateSurfaceAltitude(e){this._estimatedSurfaceAltitude!==e&&(this._estimatedSurfaceAltitude=e,this._updateRenderLocation())}_updateRenderLocation(){this.renderCoordsHelper.setAltitude(b,this._estimatedSurfaceAltitude,this._camera.eye),u(this._get(`renderLocation`),b)||(this._set(`renderLocation`,d(this._propertiesPool.get(`renderLocation`),b)),this.notifyChange(`renderLocation`))}};e([s({constructOnly:!0})],y.prototype,`scheduler`,void 0),e([s({constructOnly:!0})],y.prototype,`surface`,void 0),e([s({constructOnly:!0})],y.prototype,`cache`,void 0),e([s({constructOnly:!0})],y.prototype,`map`,void 0),e([s({constructOnly:!0})],y.prototype,`task`,void 0),e([s()],y.prototype,`_dirty`,void 0),e([s()],y.prototype,`_groundQueryDirty`,void 0),e([s()],y.prototype,`_elevationQueryTask`,void 0),e([s()],y.prototype,`location`,null),e([s()],y.prototype,`renderLocation`,void 0),e([s()],y.prototype,`scale`,null),e([s()],y.prototype,`updating`,null),e([s()],y.prototype,`readyToRun`,null),e([s()],y.prototype,`_groundQueryReady`,null),y=e([c(`esri.views.3d.support.pointsOfInterest.CameraOnSurface`)],y);const b=f(),x=1e5,S=1e6;export{y as CameraOnSurface};
2
+ import{__decorate as e}from"tslib";import{createTask as t}from"../../../../core/asyncUtils.js";import{on as n}from"../../../../core/events.js";import{destroyMaybe as r,abortMaybe as i}from"../../../../core/maybe.js";import{throwIfAborted as a,isAbortError as o}from"../../../../core/promiseUtils.js";import{property as s,subclass as c}from"../../../../core/accessorSupport/decorators.js";import{distance as l,exactEquals as u,copy as d}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as f,clone as p}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import m from"../../../../geometry/Point.js";import{distanceToScale as h}from"../cameraScaleUtils.js";import{PointOfInterest as g}from"./PointOfInterest.js";import{PropertiesPool as _}from"../../../support/PropertiesPool.js";import{Yield as v}from"../../../support/Yield.js";let y=class extends g{constructor(e){super(e),this._dirty=!1,this._groundQueryDirty=!0,this._propertiesPool=new _({location:()=>new m,renderLocation:()=>f()},this),this._estimatedSurfaceAltitude=0,this._elevationQueryTask=null,this._lastQueryRenderEye=f(),this.renderLocation=f(),this._tmpPoint=new m}initialize(){this.scheduler&&this.addHandles(this.scheduler.registerTask(this.task,this)),this.surface&&this.addHandles(n(this.surface,`elevation-query-change`,()=>this._invalidateElevationQuery())),this.runTask(),this._updateRenderLocation()}destroy(){this._cancelPendingRequest(),this._propertiesPool=r(this._propertiesPool)}get _camera(){return this.state.contentCamera}get location(){let e=this._propertiesPool.get(`location`);return e.spatialReference=this.state.spatialReference,this.renderCoordsHelper.fromRenderCoords(this.renderLocation,e),e}get scale(){let e=this._camera,t=l(e.eye,this.renderLocation),n={renderCoordsHelper:this.renderCoordsHelper,state:{camera:e}};return h(n,t)}get updating(){return this._dirty||this._elevationQueryTask!=null}updateRenderLocation(){this._setDirty(),this._updateRenderLocation()}_setDirty(){this._dirty||=!0}_cancelPendingRequest(){this._elevationQueryTask=i(this._elevationQueryTask)}get readyToRun(){return!this._elevationQueryTask&&this._dirty&&this._groundQueryReady}runTask(){this._cancelPendingRequest(),this._dirty=!1;let e=p(this._camera.eye);if(this._hasCurrentGroundQuery(e))return v;let n=this.map?.ground;if(!n)return this._updateSurfaceAltitude(0),this._rememberGroundQuery(e),v;if(!this._groundQueryReady)return this._setDirty(),v;let r=this.state.spatialReference;this._tmpPoint.spatialReference=r,this.renderCoordsHelper.fromRenderCoords(this._camera.eye,this._tmpPoint);let i=(this._tmpPoint.z??0)>x&&this.renderCoordsHelper.viewingMode===1&&(r.isWGS84||r.isWebMercator)?S:0,s=null;return s=t(async t=>{try{let r=await n.queryElevation(this._tmpPoint,{signal:t,cache:this.cache,minDemResolution:i,view:this.state.view});if(a(t),this._elevationQueryTask!==s)return;this._updateSurfaceAltitude(r.geometry.z??0),this._rememberGroundQuery(e)}catch(n){if(this._elevationQueryTask!==s||t.aborted||o(n))return;this._updateSurfaceAltitude(0),this._rememberGroundQuery(e)}finally{this._elevationQueryTask===s&&(this._elevationQueryTask=null)}}),this._elevationQueryTask=s,v}get _groundQueryReady(){return this.surface?.elevationQueryReady??!0}_hasCurrentGroundQuery(e){return!this._groundQueryDirty&&u(this._lastQueryRenderEye,e)}_rememberGroundQuery(e){d(this._lastQueryRenderEye,e),this._groundQueryDirty=!1}_invalidateElevationQuery(){this._cancelPendingRequest(),this.cache?.clear(),this._groundQueryDirty=!0,this._setDirty()}_updateSurfaceAltitude(e){this._estimatedSurfaceAltitude!==e&&(this._estimatedSurfaceAltitude=e,this._updateRenderLocation())}_updateRenderLocation(){this.renderCoordsHelper.setAltitude(b,this._estimatedSurfaceAltitude,this._camera.eye),u(this._get(`renderLocation`),b)||(this._set(`renderLocation`,d(this._propertiesPool.get(`renderLocation`),b)),this.notifyChange(`renderLocation`))}};e([s({constructOnly:!0})],y.prototype,`scheduler`,void 0),e([s({constructOnly:!0})],y.prototype,`surface`,void 0),e([s({constructOnly:!0})],y.prototype,`cache`,void 0),e([s({constructOnly:!0})],y.prototype,`map`,void 0),e([s({constructOnly:!0})],y.prototype,`task`,void 0),e([s()],y.prototype,`_dirty`,void 0),e([s()],y.prototype,`_groundQueryDirty`,void 0),e([s()],y.prototype,`_elevationQueryTask`,void 0),e([s()],y.prototype,`location`,null),e([s()],y.prototype,`renderLocation`,void 0),e([s()],y.prototype,`scale`,null),e([s()],y.prototype,`updating`,null),e([s()],y.prototype,`readyToRun`,null),e([s()],y.prototype,`_groundQueryReady`,null),y=e([c(`esri.views.3d.support.pointsOfInterest.CameraOnSurface`)],y);const b=f(),x=1e5,S=1e6;export{y as CameraOnSurface};
@@ -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{createTask as n}from"../../../../core/asyncUtils.js";import"../../../../core/has.js";import{abortMaybe as r}from"../../../../core/maybe.js";import{throwIfAborted as i,isAbortError as a}from"../../../../core/promiseUtils.js";import{on as o,watch as s}from"../../../../core/reactiveUtils.js";import{property as c,subclass as l}from"../../../../core/accessorSupport/decorators.js";import{create as u}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import d from"../../../../geometry/Point.js";import{center as f}from"../../../../geometry/support/aaBoundingRect.js";import"../../../../core/RandomLCG.js";import"../../../../core/Logger.js";import"../../../../core/units.js";import"../../../../geometry/ellipsoidUtils.js";import"../../../../geometry/Extent.js";import"../../../../geometry/Geometry.js";import"../../../../geometry/Multipoint.js";import"../../../../geometry/Polygon.js";import"../../../../geometry/Polyline.js";import"../../../../geometry/SpatialReference.js";import"../../../../geometry/spatialReferenceEllipsoidUtils.js";import"../../../../geometry/operators/support/GeographicTransformation.js";import"../../../../geometry/projection/projectors.js";import"../../../../geometry/support/spatialReferenceUtils.js";import"../../../../layers/support/ElevationTileData.js";import"../../../../layers/support/TileElevationSampler.js";let p=class extends t{constructor(e){super(e),this._updateTask=null,this.location=null}initialize(){this.view.state.isLocal&&(this.addHandles([o(()=>this._groundView,`elevation-query-change`,()=>{this._invalidateGroundQuery()}),s(()=>[this.view.clippingArea,this._groundView?.spatialReference,this._groundView?.groundExtent],()=>this._update())]),this._update())}destroy(){this._cancelPendingUpdate()}get renderLocation(){if(!this.location)return null;let e=u();return this.view.renderCoordsHelper.toRenderCoords(this.location,e),e}get _ground(){return this.view.map?.ground}get _groundView(){return this.view.groundView}_cancelPendingUpdate(){this._updateTask=r(this._updateTask)}_update(){this._cancelPendingUpdate();let e=this._groundView;if(!e?.elevationQueryReady||e.groundExtent==null||e.spatialReference==null){this._set(`location`,null);return}let t=f(e.groundExtent),r=new d({x:t[0],y:t[1],z:0,spatialReference:e.spatialReference}),o=this._ground;if(o&&o.allLayers.length>0){this._set(`location`,null);let e=null;e=n(async e=>{let t=await o.queryElevation(r,{noDataValue:0,signal:e,cache:this.cache});i(e),this._updateTask=null,this._set(`location`,t.geometry)}),this._updateTask=e,e.promise.catch(t=>{this._updateTask===e&&(this._updateTask=null,a(t))})}else this._set(`location`,r)}_invalidateGroundQuery(){this._cancelPendingUpdate(),this.cache?.clear(),this._set(`location`,null),this._update()}};e([c({constructOnly:!0})],p.prototype,`view`,void 0),e([c({constructOnly:!0})],p.prototype,`cache`,void 0),e([c()],p.prototype,`_updateTask`,void 0),e([c({readOnly:!0})],p.prototype,`location`,void 0),e([c({readOnly:!0})],p.prototype,`renderLocation`,null),e([c()],p.prototype,`_ground`,null),e([c()],p.prototype,`_groundView`,null),p=e([l(`esri.views.3d.support.pointsOfInterest.StableSurfaceCenter`)],p);export{p as StableSurfaceCenter};
2
+ import{__decorate as e}from"tslib";import t from"../../../../core/Accessor.js";import{createTask as n}from"../../../../core/asyncUtils.js";import"../../../../core/has.js";import{abortMaybe as r}from"../../../../core/maybe.js";import{throwIfAborted as i,isAbortError as a}from"../../../../core/promiseUtils.js";import{on as o,watch as s}from"../../../../core/reactiveUtils.js";import{property as c,subclass as l}from"../../../../core/accessorSupport/decorators.js";import{create as u}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import d from"../../../../geometry/Point.js";import{center as f}from"../../../../geometry/support/aaBoundingRect.js";import"../../../../core/RandomLCG.js";import"../../../../core/Logger.js";import"../../../../core/units.js";import"../../../../geometry/ellipsoidUtils.js";import"../../../../geometry/Extent.js";import"../../../../geometry/Geometry.js";import"../../../../geometry/Multipoint.js";import"../../../../geometry/Polygon.js";import"../../../../geometry/Polyline.js";import"../../../../geometry/SpatialReference.js";import"../../../../geometry/spatialReferenceEllipsoidUtils.js";import"../../../../geometry/operators/support/GeographicTransformation.js";import"../../../../geometry/projection/projectors.js";import"../../../../geometry/support/spatialReferenceUtils.js";import"../../../../layers/support/ElevationTileData.js";import"../../../../layers/support/TileElevationSampler.js";let p=class extends t{constructor(e){super(e),this._updateTask=null,this.location=null}initialize(){this.view.state.isLocal&&(this.addHandles([o(()=>this._groundView,`elevation-query-change`,()=>{this._invalidateGroundQuery()}),s(()=>[this.view.clippingArea,this._groundView?.spatialReference,this._groundView?.groundExtent],()=>this._update())]),this._update())}destroy(){this._cancelPendingUpdate()}get renderLocation(){if(!this.location)return null;let e=u();return this.view.renderCoordsHelper.toRenderCoords(this.location,e),e}get _ground(){return this.view.map?.ground}get _groundView(){return this.view.groundView}_cancelPendingUpdate(){this._updateTask=r(this._updateTask)}_update(){this._cancelPendingUpdate();let e=this._groundView;if(!e?.elevationQueryReady||e.groundExtent==null||e.spatialReference==null){this._set(`location`,null);return}let t=f(e.groundExtent),r=new d({x:t[0],y:t[1],z:0,spatialReference:e.spatialReference}),o=this._ground;if(o&&o.allLayers.length>0){this._set(`location`,null);let e=null;e=n(async e=>{let t=await o.queryElevation(r,{noDataValue:0,signal:e,cache:this.cache,view:this.view});i(e),this._updateTask=null,this._set(`location`,t.geometry)}),this._updateTask=e,e.promise.catch(t=>{this._updateTask===e&&(this._updateTask=null,a(t))})}else this._set(`location`,r)}_invalidateGroundQuery(){this._cancelPendingUpdate(),this.cache?.clear(),this._set(`location`,null),this._update()}};e([c({constructOnly:!0})],p.prototype,`view`,void 0),e([c({constructOnly:!0})],p.prototype,`cache`,void 0),e([c()],p.prototype,`_updateTask`,void 0),e([c({readOnly:!0})],p.prototype,`location`,void 0),e([c({readOnly:!0})],p.prototype,`renderLocation`,null),e([c()],p.prototype,`_ground`,null),e([c()],p.prototype,`_groundView`,null),p=e([l(`esri.views.3d.support.pointsOfInterest.StableSurfaceCenter`)],p);export{p as StableSurfaceCenter};
@@ -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{cyclicalPI as n}from"../../../core/Cyclical.js";import"../../../core/has.js";import{clamp as r,deg2rad as i}from"../../../core/mathUtils.js";import{destroyMaybe as a}from"../../../core/maybe.js";import{watch as o,sync as s,when as c}from"../../../core/reactiveUtils.js";import{property as l,subclass as u}from"../../../core/accessorSupport/decorators.js";import{subtract as d}from"../../../core/libs/gl-matrix-2/math/vec2.js";import{add as f,subtract as p,copy as m,distance as h}from"../../../core/libs/gl-matrix-2/math/vec3.js";import{create as g}from"../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{transformMat4 as _,scale as ee,add as te}from"../../../core/libs/gl-matrix-2/math/vec4.js";import{fromValues as v,create as y}from"../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{getReferenceEllipsoid as b}from"../../../geometry/ellipsoidUtils.js";import{projectVectorToVector as x}from"../../../geometry/projection/projectVectorToVector.js";import{create as S,width as C,center as w,copy as T,intersection as E,contains as ne,offset as D}from"../../../geometry/support/aaBoundingRect.js";import{createSpatialReferenceCyclical as O}from"../../../geometry/support/normalizeUtils.js";import{create as k,wrap as A}from"../../../geometry/support/ray.js";import{Sphere as j}from"../../../geometry/support/sphere.js";import{angleAroundAxis as M}from"../../../geometry/support/vector.js";import{y2lat as re}from"../../../geometry/support/webMercatorUtils.js";import{viewAngle as ie}from"../state/utils/viewUtils.js";import{debugFlags as N}from"../support/debugFlags.js";import{DebugPoint as ae}from"../support/debugUtils.js";import{getPlanarDistanceToGroundRatio as P}from"../support/planarDistanceToGroundRatio.js";import{OverlayRenderer as F}from"./OverlayRenderer.js";import{Intersector as I}from"../webgl-engine/lib/Intersector.js";import{fromValues as L}from"../webgl-engine/lib/LocalOriginFactory.js";import{SortedRenderGeometryRenderer as R}from"../webgl-engine/lib/SortedRenderGeometryRenderer.js";import{applyTextureResizeModulo as z,ensureTextureSize as B}from"../webgl-engine/lib/textureUtils.js";import{removeLoadedShaderModules as V}from"../webgl-engine/parts/renderUtils.js";import{TaskPriority as H,noBudget as U}from"../../support/Scheduler.js";import{Yield as W}from"../../support/Yield.js";const G=1.3,K=[[-.1,-2,3.9,2],[-.1,-3.9,3.9,.1],[-2,-3.9,2,.1],[-3.9,-3.9,.1,.1],[-3.9,-2,.1,2],[-3.9,-.1,.1,3.9],[-2,-.1,2,3.9],[-.1,-.1,3.9,3.9]];let q,J=class extends t{constructor(e){super(e),this._renderSR=null,this._overlaySREqualsRenderSR=!0,this._drapeSources=new Set,this._drapeTargets=new Set,this._placementDirty=!1,this._contentUpdated=!1,this._drawTexturesDirty=!1,this._drawTexturesAnimateDirty=!1,this._latestOriginId=0,this.groundView=e.view.groundView}initialize(){let{view:e}=this;this.renderer=new F({parent:this}),e.stage.renderer.plugins.add(this.renderer);let t=()=>this.requestRender();this._groundIntersector=new I(e.state.viewingMode),this._groundIntersector.options.backfacesTerrain=!0,this._groundIntersector.options.invisibleTerrain=!0,this._groundIntersector.options.hud=!1,this.addHandles([o(()=>this.renderer.hasHighlights,t),this.renderer.events.on(`has-water`,()=>e.stage?.renderer.updateHasFlags()),this.renderer.events.on(`content-changed`,t),o(()=>e.state.camera.pixelRatio,t),o(()=>e.state.alignPixelEnabled,t),this.renderer.events.on(`textures-disposed`,()=>this.groundView.requestRender(1)),o(()=>[e.pointsOfInterest?.renderPointOfView,e.pointsOfInterest?.centerOnSurfaceFrequent?.location],()=>this.setPlacementDirty()),o(()=>[e.state?.pixelRatio,e.state?.contentPixelRatio],()=>this.setPlacementDirty(),s),c(()=>e.groundAndIMSurface,e=>e.on(`elevation-change`,()=>this.setPlacementDirty())),e.on(`resize`,()=>this.setPlacementDirty()),e.resourceController.scheduler.registerTask(H.OVERLAY,this)]),e.stage.renderer.overlay=this}destroy(){this.view?.stage&&(this.view.stage.renderer.plugins.remove(this.renderer),this.view.stage.renderer.overlay=null,a(this.renderer)),q&&=(q.hide(),null),this.renderer=null}get spatialReference(){return this._spatialReference}set spatialReference(e){this._spatialReference=e,this.renderer.longitudeCyclical=null;let t=this.view.renderSpatialReference;e!=null&&t!=null?(this._renderSR=t,this._overlaySREqualsRenderSR=e.equals(this._renderSR),this._isSpherical&&(this.renderer.longitudeCyclical=O(e))):this.renderer.disposeOverlays()}get readyToRun(){return this._placementDirty&&(this._drapeSources.size>0||this.view.graphics.length>0||N.OVERLAY_DRAW_DEBUG_TEXTURE)&&!!this._spatialReference&&!(this.terrainSurface.enabled&&this.terrainSurface.freeze)&&this.groundView.ready}get _isSpherical(){return this.view.state.isGlobal}get mapUnitsToPlanarDistanceRatio(){return this._spatialReference!=null&&this._spatialReference.isGeographic&&this._isSpherical?b(this._spatialReference).metersPerDegree:1}getPlanarDistanceToGroundRatio(e){return this._spatialReference==null?1:P(this._spatialReference,this._isSpherical,e)}get _overlayStretch(){return G/this.view.resolutionScale}get longitudeCyclical(){return this.renderer.longitudeCyclical}get updating(){return this.readyToRun||!!this.renderer?.updating||this._contentUpdated}render(e){return this._contentUpdated=!1,this.renderer.time=e,this.renderer.processSyncDrapeSources(),this.renderer.precompileShaders(this.view.state)?this._drawOverlays():null}get hasOverlays(){return this.renderer.hasOverlays}registerDrapeSource(e,t){this._drapeSources.add(e),this.renderer.ensureOverlays(this._drapeTargets,this._drapeSources),this.renderer.registerDrapeSource(e,t),this._updateDrapeSourceExtent(e),this._setContentDirty(),this.notifyChange(`readyToRun`)}registerGeometryDrapeSource(e){let t=new R({stage:this.view.stage,drapeSource:e,rendererContext:this.renderer});return this.registerDrapeSource(e,t),t}_updateDrapeSourceExtent(e){this.renderer.overlays.length===2&&e.setDrapingExtent!=null&&this._spatialReference!=null&&e.setDrapingExtent(this.renderer.overlays,this._spatialReference)}unregisterDrapeSource(e){this._drapeSources.has(e)&&(this._drapeSources.delete(e),this.renderer.removeDrapeSourceRenderer(e),this.renderer.ensureDrapeSources(this._drapeSources),this._setContentDirty(),this.notifyChange(`readyToRun`))}registerDrapeTarget(e){this._drapeTargets.add(e),this.renderer.ensureOverlays(this._drapeTargets,this._drapeSources)}unregisterDrapeTarget(e){this._drapeTargets.delete(e),this.renderer.ensureDrapeTargets(this._drapeTargets)}_setContentDirty(){this.setPlacementDirty(),this.requestRender()}setPlacementDirty(){this._placementDirty=!0}runTask(e){return this.updateOverlays(e,this.view.state.contentCamera,1)}updateOverlays(e,t,n){if(!this._spatialReference||!this.view.pointsOfInterest?.centerOnSurfaceFrequent)return W;let r=this._computeOverlayHeight(t);this._computeOverlayExtents(t,r,Z),this.renderer.ensureOverlays(this._drapeTargets,this._drapeSources),this.renderer.overlayStretch=Z.stretch;let i=this._updateOverlay(0,Z.inner,r,1*Z.pixelRatioAdjustment,Z.mapUnitsPerPixel),a=C(Z.inner)/C(Z.outer),o=this._updateOverlay(1,Z.outer,r,a*Z.pixelRatioAdjustment,Z.mapUnitsPerPixel);(i===1||o===1)&&(this._drapeSources.forEach(e=>this._updateDrapeSourceExtent(e)),this.groundView.updateOverlayParameters(),this.groundView.requestRender(n)),(i!==0||o!==0)&&this.requestRender(),this._placementDirty=!1,e.madeProgress()}_computeOverlayHeight(e){let t=this.view.state.contentPixelRatio*this.view.resolutionScale,n=e.fullWidth/e.pixelRatio*t,r=e.fullHeight/e.pixelRatio*t,i=Math.ceil(Math.max(n,r)*1.5),{maxPreferredTexturePixels:a,maxTextureSize:o}=this.view.stage.renderView.renderingContext.parameters,s=o*.5;return z(B({width:i,height:i},{maxPreferredTexturePixels:a*2,maxTextureSize:s})[1],s)}get overlays(){return this.renderer.overlays}_updateOverlay(e,t,n,r,i){if(this.renderer.overlays.length===0)return 0;let a=this.renderer.overlays[e],o=a.mapUnitsPerPixel;if(a.mapUnitsPerPixel=i,a.pixelRatio=r,oe(t,a.extent)&&n===a.resolution)return o===i?0:2;a.setExtent(t),a.resolution=n;let s=w(a.extent);return a.renderLocalOrigin=L(s[0],s[1],0,`OV_${this._latestOriginId++}`),1}overlayPixelSizeInMapUnits(e,t){if(this.renderer.overlays.length===0)return t();let n=this.renderer.overlays[0],r=this.renderer.overlays[1],i=this._pointIsInExtent(e,n.extent)?n:r;return(i.extent[2]-i.extent[0])/i.resolution}reloadShaders(){V(),this.requestRender(),this.runTask(U)}requestRender(e=1){this.renderer.hasOverlays?(e===1?(this._contentUpdated=!0,this._drawTexturesDirty=!0):this._drawTexturesAnimateDirty=!0,this.view.stage.renderView.requestRender(e)):this.setPlacementDirty()}_intersectGroundFromView(e,t,n,r,i){let a=this.view.sceneIntersectionHelper.getCenterRayWithSubpixelOffset(e,le,t,n);if(a==null)return!1;let o=a.origin,s=f(X,a.origin,a.direction);this._groundIntersector.reset(o,s,e),this._groundIntersector.intersect([]),this.view.groundAndIMSurface.intersect(this._groundIntersector,null,o,s);let c=this._groundIntersector.results.min;return c.getIntersectionPoint(i)&&c.withinDistance(r)}_findHorizonBasedPointOfInterest(e,t){let i=.5,a=.55,o=this.view.renderCoordsHelper.getAltitude(e.eye),s=this.view.pointsOfInterest.centerOnSurfaceFrequent,c=1e-5,l=r(s.estimatedSurfaceAltitude,e.aboveGround?-1/0:o+c,e.aboveGround?o-c:1/0),u=e.aboveGround;if(this.view.viewingMode===`global`){let t=X;$.radius=b(this.view.spatialReference).radius+l,$.closestPointOnSilhouette(A(e.eye,e.viewForward),t),p(t,t,e.eye);let r=n.normalize(M(e.viewForward,t,e.viewRight))/e.fovY+.5,o=r<=0||r>=1?.5:a;i=u?o*r:r+o*(1-r)}else{let t=Math.PI*.5-Math.acos(-e.viewForward[2]),n=v(0,Math.tan(t),1,0),o=_(n,n,e.projectionMatrix)[1],s=r(.5+.5*o,0,1);i=s===1||s===0?.5:u?s*a:1-(1-s)*a}return this._intersectGroundFromView(e,.5,i,s.distance,t)}_computeOverlayExtents(e,t,n){let{view:r}=this,a=r.pointsOfInterest.centerOnSurfaceFrequent.renderLocation,o=g();this._findHorizonBasedPointOfInterest(e,o)||m(o,a);let s=this._renderSR;N.OVERLAY_SHOW_CENTER?(q??=new ae(r.graphics,`red`),q.show(o,s)):q?.hide();let c=Math.max(.1,h(e.eye,o)),l=ie(r.renderCoordsHelper,a,e.eye),u=this._spatialReference;this._overlaySREqualsRenderSR||x(o,s,o,u);let f=this._isSpherical,p=this.groundView.groundExtent,_=!f&&u?.isGeographic,v=_&&u?1/b(u).metersPerDegree:1,y=r.state.contentPixelRatio,S=e.computeScreenPixelSizeAtDistance(c)/y*v;n.mapUnitsPerPixel=_?S:S/this.mapUnitsToPlanarDistanceRatio,n.stretch=this._overlayStretch;let w=t*S/2*n.stretch,D=!1,O=_?90:1/0;f&&p&&u&&(u.isWebMercator?(w/=Math.cos(re(o[1])),O=p[3]):(D=!0,w/=b(u).metersPerDegree,O=90),w>=O&&(w=O,o[1]=0,u.isWebMercator&&(o[0]=0)));let k=1;D&&(k=1/Math.max(.2,Math.cos(Math.abs(i(o[1])))),w*k>180&&(k=180/w),n.mapUnitsPerPixel*=k);let A=Math.log(2)/12;w=Math.exp(Math.round(Math.log(w)/A)*A);let j=w*k,M=.5*t/(32*j),P=.5*t/(32*w);o[0]=Math.round(o[0]*M)/M,o[1]=Math.round(o[1]*P)/P;let F=n.inner;F[0]=o[0]-j,F[1]=o[1]-w,F[2]=o[0]+j,F[3]=o[1]+w,f&&this._shiftExtentToFitBounds(F,1/0,O);let I=n.outer;if(p&&6*j>C(p))T(I,p);else if(Math.PI/2-Math.abs(l-Math.PI/2)<=.25*Math.PI)I[0]=F[0]-j,I[1]=F[1]-w,I[2]=F[2]+j,I[3]=F[3]+w;else{x(e.eye,s,X,u),d(Y,o,X);let t=-Math.atan2(Y[1],Y[0])+Math.PI*.125;t<0&&(t+=2*Math.PI);let n=Math.floor(t/(Math.PI*.25));ee(Y,K[n],w*2),Y[0]*=k,Y[2]*=k,te(I,F,Y)}if(f&&this.longitudeCyclical)I[0]=this.longitudeCyclical.clamp(I[0]),I[2]=this.longitudeCyclical.clamp(I[2]),I[1]=Math.max(I[1],-O),I[3]=Math.min(I[3],O);else{let e=E(F,p,Q),t=E(I,p,ce);ne(e,t)&&(I[2]=I[0],I[3]=I[1])}let L=Math.abs(F[2]-F[0])/t;n.mapUnitsPerPixel=Math.max(n.mapUnitsPerPixel,L),n.pixelRatioAdjustment=n.mapUnitsPerPixel/L}_drawOverlays(e=this.view.state){if(!this._drawTexturesDirty&&!this._drawTexturesAnimateDirty)return this.renderer;let t=!this._drawTexturesDirty&&this._drawTexturesAnimateDirty?0:1;this._drawTexturesDirty=this._drawTexturesAnimateDirty=!1;let n=this.renderer.computeValidity();return this.renderer.releaseRenderTargets(t),this.renderer.drawOverlays(e,t),n!==this.renderer.computeValidity()&&(this.groundView.updateOverlayParameters(),this.groundView.requestRender(1)),this.groundView.requestRender(t),t===1&&this.terrainSurface.requestUpdate(),this.renderer}_pointIsInExtent(e,t){if(this.longitudeCyclical)return this.longitudeCyclical.contains(t[0],t[2],e.x)&&e.y>=t[1]&&e.y<=t[3];let n=e.x,r=e.y;return n>t[0]&&n<t[2]&&r>t[1]&&r<t[3]}_shiftExtentToFitBounds(e,t,n){let r=0,i=0;e[0]<-t?r=e[0]+t:e[2]>t&&(r=t-e[2]),e[1]<-n?i=e[1]+n:e[3]>n&&(i=n-e[3]),D(e,r,i)}get test(){}};e([l()],J.prototype,`_spatialReference`,void 0),e([l({readOnly:!0})],J.prototype,`readyToRun`,null),e([l()],J.prototype,`_placementDirty`,void 0),e([l()],J.prototype,`_contentUpdated`,void 0),e([l()],J.prototype,`_isSpherical`,null),e([l()],J.prototype,`mapUnitsToPlanarDistanceRatio`,null),e([l()],J.prototype,`renderer`,void 0),e([l({constructOnly:!0})],J.prototype,`view`,void 0),e([l({constructOnly:!0})],J.prototype,`groundView`,void 0),e([l({constructOnly:!0})],J.prototype,`terrainSurface`,void 0),e([l()],J.prototype,`updating`,null),J=e([u(`esri.views.3d.terrain.OverlayManager`)],J);function oe(e,t){let n=N.ENABLE_OPTIMIZATIONS?1e-5*Math.max(e[2]-e[0],e[3]-e[1],t[2]-t[0],t[3]-t[1]):0;return Math.abs(t[0]-e[0])<=n&&Math.abs(t[1]-e[1])<=n&&Math.abs(t[2]-e[2])<=n&&Math.abs(t[3]-e[3])<=n}class se{constructor(){this.inner=S(),this.outer=S(),this.mapUnitsPerPixel=0,this.pixelRatioAdjustment=1,this.stretch=G}}const Y=y(),X=g(),Z=new se,Q=S(),ce=S(),le=k(),$=new j;export{J as OverlayManager};
2
+ import{__decorate as e}from"tslib";import t from"../../../core/Accessor.js";import{cyclicalPI as n}from"../../../core/Cyclical.js";import"../../../core/has.js";import{clamp as r,deg2rad as i}from"../../../core/mathUtils.js";import{destroyMaybe as a}from"../../../core/maybe.js";import{watch as o,sync as s,on as c}from"../../../core/reactiveUtils.js";import{property as l,subclass as u}from"../../../core/accessorSupport/decorators.js";import{subtract as d}from"../../../core/libs/gl-matrix-2/math/vec2.js";import{add as f,subtract as p,copy as m,distance as h}from"../../../core/libs/gl-matrix-2/math/vec3.js";import{create as g}from"../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{transformMat4 as _,scale as ee,add as te}from"../../../core/libs/gl-matrix-2/math/vec4.js";import{fromValues as v,create as y}from"../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{getReferenceEllipsoid as b}from"../../../geometry/ellipsoidUtils.js";import{projectVectorToVector as x}from"../../../geometry/projection/projectVectorToVector.js";import{create as S,width as C,center as w,copy as T,intersection as E,contains as ne,offset as D}from"../../../geometry/support/aaBoundingRect.js";import{createSpatialReferenceCyclical as O}from"../../../geometry/support/normalizeUtils.js";import{create as k,wrap as A}from"../../../geometry/support/ray.js";import{Sphere as j}from"../../../geometry/support/sphere.js";import{angleAroundAxis as M}from"../../../geometry/support/vector.js";import{y2lat as re}from"../../../geometry/support/webMercatorUtils.js";import{viewAngle as ie}from"../state/utils/viewUtils.js";import{debugFlags as N}from"../support/debugFlags.js";import{DebugPoint as ae}from"../support/debugUtils.js";import{getPlanarDistanceToGroundRatio as P}from"../support/planarDistanceToGroundRatio.js";import{OverlayRenderer as F}from"./OverlayRenderer.js";import{Intersector as I}from"../webgl-engine/lib/Intersector.js";import{fromValues as L}from"../webgl-engine/lib/LocalOriginFactory.js";import{SortedRenderGeometryRenderer as R}from"../webgl-engine/lib/SortedRenderGeometryRenderer.js";import{applyTextureResizeModulo as z,ensureTextureSize as B}from"../webgl-engine/lib/textureUtils.js";import{removeLoadedShaderModules as V}from"../webgl-engine/parts/renderUtils.js";import{TaskPriority as H,noBudget as U}from"../../support/Scheduler.js";import{Yield as W}from"../../support/Yield.js";const G=1.3,K=[[-.1,-2,3.9,2],[-.1,-3.9,3.9,.1],[-2,-3.9,2,.1],[-3.9,-3.9,.1,.1],[-3.9,-2,.1,2],[-3.9,-.1,.1,3.9],[-2,-.1,2,3.9],[-.1,-.1,3.9,3.9]];let q,J=class extends t{constructor(e){super(e),this._renderSR=null,this._overlaySREqualsRenderSR=!0,this._drapeSources=new Set,this._drapeTargets=new Set,this._placementDirty=!1,this._contentUpdated=!1,this._drawTexturesDirty=!1,this._drawTexturesAnimateDirty=!1,this._latestOriginId=0,this.groundView=e.view.groundView}initialize(){let{view:e}=this;this.renderer=new F({parent:this}),e.stage.renderer.plugins.add(this.renderer);let t=()=>this.requestRender();this._groundIntersector=new I(e.state.viewingMode),this._groundIntersector.options.backfacesTerrain=!0,this._groundIntersector.options.invisibleTerrain=!0,this._groundIntersector.options.hud=!1,this.addHandles([o(()=>this.renderer.hasHighlights,t),this.renderer.events.on(`has-water`,()=>e.stage?.renderer.updateHasFlags()),this.renderer.events.on(`content-changed`,t),o(()=>e.state.camera.pixelRatio,t),o(()=>e.state.alignPixelEnabled,t),this.renderer.events.on(`textures-disposed`,()=>this.groundView.requestRender(1)),o(()=>[e.pointsOfInterest?.renderPointOfView,e.pointsOfInterest?.centerOnSurfaceFrequent?.location],()=>this.setPlacementDirty()),o(()=>[e.state?.pixelRatio,e.state?.contentPixelRatio],()=>this.setPlacementDirty(),s),c(()=>e.groundAndIMSurface,`elevation-change`,()=>this.setPlacementDirty()),e.on(`resize`,()=>this.setPlacementDirty()),e.resourceController.scheduler.registerTask(H.OVERLAY,this)]),e.stage.renderer.overlay=this}destroy(){this.view?.stage&&(this.view.stage.renderer.plugins.remove(this.renderer),this.view.stage.renderer.overlay=null,a(this.renderer)),q&&=(q.hide(),null),this.renderer=null}get spatialReference(){return this._spatialReference}set spatialReference(e){this._spatialReference=e,this.renderer.longitudeCyclical=null;let t=this.view.renderSpatialReference;e!=null&&t!=null?(this._renderSR=t,this._overlaySREqualsRenderSR=e.equals(this._renderSR),this._isSpherical&&(this.renderer.longitudeCyclical=O(e))):this.renderer.disposeOverlays()}get readyToRun(){return this._placementDirty&&(this._drapeSources.size>0||this.view.graphics.length>0||N.OVERLAY_DRAW_DEBUG_TEXTURE)&&!!this._spatialReference&&!(this.terrainSurface.enabled&&this.terrainSurface.freeze)&&this.groundView.ready}get _isSpherical(){return this.view.state.isGlobal}get mapUnitsToPlanarDistanceRatio(){return this._spatialReference!=null&&this._spatialReference.isGeographic&&this._isSpherical?b(this._spatialReference).metersPerDegree:1}getPlanarDistanceToGroundRatio(e){return this._spatialReference==null?1:P(this._spatialReference,this._isSpherical,e)}get _overlayStretch(){return G/this.view.resolutionScale}get longitudeCyclical(){return this.renderer.longitudeCyclical}get updating(){return this.readyToRun||!!this.renderer?.updating||this._contentUpdated}render(e){return this._contentUpdated=!1,this.renderer.time=e,this.renderer.processSyncDrapeSources(),this.renderer.precompileShaders(this.view.state)?this._drawOverlays():null}get hasOverlays(){return this.renderer.hasOverlays}registerDrapeSource(e,t){this._drapeSources.add(e),this.renderer.ensureOverlays(this._drapeTargets,this._drapeSources),this.renderer.registerDrapeSource(e,t),this._updateDrapeSourceExtent(e),this._setContentDirty(),this.notifyChange(`readyToRun`)}registerGeometryDrapeSource(e){let t=new R({stage:this.view.stage,drapeSource:e,rendererContext:this.renderer});return this.registerDrapeSource(e,t),t}_updateDrapeSourceExtent(e){this.renderer.overlays.length===2&&e.setDrapingExtent!=null&&this._spatialReference!=null&&e.setDrapingExtent(this.renderer.overlays,this._spatialReference)}unregisterDrapeSource(e){this._drapeSources.has(e)&&(this._drapeSources.delete(e),this.renderer.removeDrapeSourceRenderer(e),this.renderer.ensureDrapeSources(this._drapeSources),this._setContentDirty(),this.notifyChange(`readyToRun`))}registerDrapeTarget(e){this._drapeTargets.add(e),this.renderer.ensureOverlays(this._drapeTargets,this._drapeSources)}unregisterDrapeTarget(e){this._drapeTargets.delete(e),this.renderer.ensureDrapeTargets(this._drapeTargets)}_setContentDirty(){this.setPlacementDirty(),this.requestRender()}setPlacementDirty(){this._placementDirty=!0}runTask(e){return this.updateOverlays(e,this.view.state.contentCamera,1)}updateOverlays(e,t,n){if(!this._spatialReference||!this.view.pointsOfInterest?.centerOnSurfaceFrequent)return W;let r=this._computeOverlayHeight(t);this._computeOverlayExtents(t,r,Z),this.renderer.ensureOverlays(this._drapeTargets,this._drapeSources),this.renderer.overlayStretch=Z.stretch;let i=this._updateOverlay(0,Z.inner,r,1*Z.pixelRatioAdjustment,Z.mapUnitsPerPixel),a=C(Z.inner)/C(Z.outer),o=this._updateOverlay(1,Z.outer,r,a*Z.pixelRatioAdjustment,Z.mapUnitsPerPixel);(i===1||o===1)&&(this._drapeSources.forEach(e=>this._updateDrapeSourceExtent(e)),this.groundView.updateOverlayParameters(),this.groundView.requestRender(n)),(i!==0||o!==0)&&this.requestRender(),this._placementDirty=!1,e.madeProgress()}_computeOverlayHeight(e){let t=this.view.state.contentPixelRatio*this.view.resolutionScale,n=e.fullWidth/e.pixelRatio*t,r=e.fullHeight/e.pixelRatio*t,i=Math.ceil(Math.max(n,r)*1.5),{maxPreferredTexturePixels:a,maxTextureSize:o}=this.view.stage.renderView.renderingContext.parameters,s=o*.5;return z(B({width:i,height:i},{maxPreferredTexturePixels:a*2,maxTextureSize:s})[1],s)}get overlays(){return this.renderer.overlays}_updateOverlay(e,t,n,r,i){if(this.renderer.overlays.length===0)return 0;let a=this.renderer.overlays[e],o=a.mapUnitsPerPixel;if(a.mapUnitsPerPixel=i,a.pixelRatio=r,oe(t,a.extent)&&n===a.resolution)return o===i?0:2;a.setExtent(t),a.resolution=n;let s=w(a.extent);return a.renderLocalOrigin=L(s[0],s[1],0,`OV_${this._latestOriginId++}`),1}overlayPixelSizeInMapUnits(e,t){if(this.renderer.overlays.length===0)return t();let n=this.renderer.overlays[0],r=this.renderer.overlays[1],i=this._pointIsInExtent(e,n.extent)?n:r;return(i.extent[2]-i.extent[0])/i.resolution}reloadShaders(){V(),this.requestRender(),this.runTask(U)}requestRender(e=1){this.renderer.hasOverlays?(e===1?(this._contentUpdated=!0,this._drawTexturesDirty=!0):this._drawTexturesAnimateDirty=!0,this.view.stage.renderView.requestRender(e)):this.setPlacementDirty()}_intersectGroundFromView(e,t,n,r,i){let a=this.view.sceneIntersectionHelper.getCenterRayWithSubpixelOffset(e,le,t,n);if(a==null)return!1;let o=a.origin,s=f(X,a.origin,a.direction);this._groundIntersector.reset(o,s,e),this._groundIntersector.intersect([]),this.view.groundAndIMSurface.intersect(this._groundIntersector,null,o,s);let c=this._groundIntersector.results.min;return c.getIntersectionPoint(i)&&c.withinDistance(r)}_findHorizonBasedPointOfInterest(e,t){let i=.5,a=.55,o=this.view.renderCoordsHelper.getAltitude(e.eye),s=this.view.pointsOfInterest.centerOnSurfaceFrequent,c=1e-5,l=r(s.estimatedSurfaceAltitude,e.aboveGround?-1/0:o+c,e.aboveGround?o-c:1/0),u=e.aboveGround;if(this.view.viewingMode===`global`){let t=X;$.radius=b(this.view.spatialReference).radius+l,$.closestPointOnSilhouette(A(e.eye,e.viewForward),t),p(t,t,e.eye);let r=n.normalize(M(e.viewForward,t,e.viewRight))/e.fovY+.5,o=r<=0||r>=1?.5:a;i=u?o*r:r+o*(1-r)}else{let t=Math.PI*.5-Math.acos(-e.viewForward[2]),n=v(0,Math.tan(t),1,0),o=_(n,n,e.projectionMatrix)[1],s=r(.5+.5*o,0,1);i=s===1||s===0?.5:u?s*a:1-(1-s)*a}return this._intersectGroundFromView(e,.5,i,s.distance,t)}_computeOverlayExtents(e,t,n){let{view:r}=this,a=r.pointsOfInterest.centerOnSurfaceFrequent.renderLocation,o=g();this._findHorizonBasedPointOfInterest(e,o)||m(o,a);let s=this._renderSR;N.OVERLAY_SHOW_CENTER?(q??=new ae(r.graphics,`red`),q.show(o,s)):q?.hide();let c=Math.max(.1,h(e.eye,o)),l=ie(r.renderCoordsHelper,a,e.eye),u=this._spatialReference;this._overlaySREqualsRenderSR||x(o,s,o,u);let f=this._isSpherical,p=this.groundView.groundExtent,_=!f&&u?.isGeographic,v=_&&u?1/b(u).metersPerDegree:1,y=r.state.contentPixelRatio,S=e.computeScreenPixelSizeAtDistance(c)/y*v;n.mapUnitsPerPixel=_?S:S/this.mapUnitsToPlanarDistanceRatio,n.stretch=this._overlayStretch;let w=t*S/2*n.stretch,D=!1,O=_?90:1/0;f&&p&&u&&(u.isWebMercator?(w/=Math.cos(re(o[1])),O=p[3]):(D=!0,w/=b(u).metersPerDegree,O=90),w>=O&&(w=O,o[1]=0,u.isWebMercator&&(o[0]=0)));let k=1;D&&(k=1/Math.max(.2,Math.cos(Math.abs(i(o[1])))),w*k>180&&(k=180/w),n.mapUnitsPerPixel*=k);let A=Math.log(2)/12;w=Math.exp(Math.round(Math.log(w)/A)*A);let j=w*k,M=.5*t/(32*j),P=.5*t/(32*w);o[0]=Math.round(o[0]*M)/M,o[1]=Math.round(o[1]*P)/P;let F=n.inner;F[0]=o[0]-j,F[1]=o[1]-w,F[2]=o[0]+j,F[3]=o[1]+w,f&&this._shiftExtentToFitBounds(F,1/0,O);let I=n.outer;if(p&&6*j>C(p))T(I,p);else if(Math.PI/2-Math.abs(l-Math.PI/2)<=.25*Math.PI)I[0]=F[0]-j,I[1]=F[1]-w,I[2]=F[2]+j,I[3]=F[3]+w;else{x(e.eye,s,X,u),d(Y,o,X);let t=-Math.atan2(Y[1],Y[0])+Math.PI*.125;t<0&&(t+=2*Math.PI);let n=Math.floor(t/(Math.PI*.25));ee(Y,K[n],w*2),Y[0]*=k,Y[2]*=k,te(I,F,Y)}if(f&&this.longitudeCyclical)I[0]=this.longitudeCyclical.clamp(I[0]),I[2]=this.longitudeCyclical.clamp(I[2]),I[1]=Math.max(I[1],-O),I[3]=Math.min(I[3],O);else{let e=E(F,p,Q),t=E(I,p,ce);ne(e,t)&&(I[2]=I[0],I[3]=I[1])}let L=Math.abs(F[2]-F[0])/t;n.mapUnitsPerPixel=Math.max(n.mapUnitsPerPixel,L),n.pixelRatioAdjustment=n.mapUnitsPerPixel/L}_drawOverlays(e=this.view.state){if(!this._drawTexturesDirty&&!this._drawTexturesAnimateDirty)return this.renderer;let t=!this._drawTexturesDirty&&this._drawTexturesAnimateDirty?0:1;this._drawTexturesDirty=this._drawTexturesAnimateDirty=!1;let n=this.renderer.computeValidity();return this.renderer.releaseRenderTargets(t),this.renderer.drawOverlays(e,t),n!==this.renderer.computeValidity()&&(this.groundView.updateOverlayParameters(),this.groundView.requestRender(1)),this.groundView.requestRender(t),t===1&&this.terrainSurface.requestUpdate(),this.renderer}_pointIsInExtent(e,t){if(this.longitudeCyclical)return this.longitudeCyclical.contains(t[0],t[2],e.x)&&e.y>=t[1]&&e.y<=t[3];let n=e.x,r=e.y;return n>t[0]&&n<t[2]&&r>t[1]&&r<t[3]}_shiftExtentToFitBounds(e,t,n){let r=0,i=0;e[0]<-t?r=e[0]+t:e[2]>t&&(r=t-e[2]),e[1]<-n?i=e[1]+n:e[3]>n&&(i=n-e[3]),D(e,r,i)}get test(){}};e([l()],J.prototype,`_spatialReference`,void 0),e([l({readOnly:!0})],J.prototype,`readyToRun`,null),e([l()],J.prototype,`_placementDirty`,void 0),e([l()],J.prototype,`_contentUpdated`,void 0),e([l()],J.prototype,`_isSpherical`,null),e([l()],J.prototype,`mapUnitsToPlanarDistanceRatio`,null),e([l()],J.prototype,`renderer`,void 0),e([l({constructOnly:!0})],J.prototype,`view`,void 0),e([l({constructOnly:!0})],J.prototype,`groundView`,void 0),e([l({constructOnly:!0})],J.prototype,`terrainSurface`,void 0),e([l()],J.prototype,`updating`,null),J=e([u(`esri.views.3d.terrain.OverlayManager`)],J);function oe(e,t){let n=N.ENABLE_OPTIMIZATIONS?1e-5*Math.max(e[2]-e[0],e[3]-e[1],t[2]-t[0],t[3]-t[1]):0;return Math.abs(t[0]-e[0])<=n&&Math.abs(t[1]-e[1])<=n&&Math.abs(t[2]-e[2])<=n&&Math.abs(t[3]-e[3])<=n}class se{constructor(){this.inner=S(),this.outer=S(),this.mapUnitsPerPixel=0,this.pixelRatioAdjustment=1,this.stretch=G}}const Y=y(),X=g(),Z=new se,Q=S(),ce=S(),le=k(),$=new j;export{J as OverlayManager};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import{unique as t}from"../../../core/arrayUtils.js";import{EventEmitter as n}from"../../../core/Evented.js";import"../../../core/has.js";import{someMap as r,everyMap as i}from"../../../core/MapUtils.js";import{disposeMaybe as a}from"../../../core/maybe.js";import o from"../../../core/PooledArray.js";import{watch as s,syncAndInitial as c,on as l,initial as u}from"../../../core/reactiveUtils.js";import{someSet as d}from"../../../core/SetUtils.js";import{property as f,subclass as p}from"../../../core/accessorSupport/decorators.js";import{ortho as m,fromTranslation as h}from"../../../core/libs/gl-matrix-2/math/mat4.js";import{set as g}from"../../../core/libs/gl-matrix-2/math/vec3.js";import{ones as _}from"../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{debugFlags as v}from"../support/debugFlags.js";import{Overlay as y}from"./Overlay.js";import{OverlayRenderTargets as b}from"./OverlayRenderTargets.js";import x from"../webgl/RenderCamera.js";import{SyncRenderPlugin as S}from"../webgl-engine/effects/RenderPlugin.js";import{trackHighlightOptions as C,renderHighlightBuffer as w}from"../webgl-engine/effects/highlight/Highlight.js";import{GLMaterialRepository as T}from"../webgl-engine/lib/GLMaterialRepository.js";import{GridLocalOriginFactory as E}from"../webgl-engine/lib/GridLocalOriginFactory.js";import{RenderContext as D,defaultRenderOccludedMask as O}from"../webgl-engine/lib/RenderContext.js";import{ShadowMap as k}from"../webgl-engine/lib/ShadowMap.js";import{T as A}from"../../../chunks/Texture.glsl.js";import{TextureTechnique as j}from"../webgl-engine/lib/TextureTechnique.js";import{TextureTechniqueConfiguration as M}from"../webgl-engine/lib/TextureTechniqueConfiguration.js";import{AmbientLight as N}from"../webgl-engine/lighting/Lightsources.js";import{O as P}from"../../../chunks/OverlayCompositing.glsl.js";import{OverlayCompositingTechnique as F}from"../webgl-engine/shaders/OverlayCompositingTechnique.js";import{TaskPriority as I}from"../../support/Scheduler.js";import L from"../../webgl/Texture.js";import{TextureDescriptor as R}from"../../webgl/TextureDescriptor.js";let z=class extends S{constructor(e){super(e),this._overlays=null,this._renderTargets=null,this._overlayParameters=new P,this.hasHighlights=!1,this.renderOccludedFlags=1,this._hasWater=!1,this._renderers=new Map,this._sortedDrapeSourceRenderersDirty=!1,this._sortedRenderers=new o,this._passParameters=new A,this._screenToMapUnitsRatio=1,this._localOriginFactory=null,this.unloadedMemory=0,this.ignoresMemoryFactor=!1,this._camera=new x,this.events=new n,this.longitudeCyclical=null,this.produces=new Map([[18,e=>e!==10||this.hasHighlights],[19,()=>this._hasWater]]),this._hasTargetWithoutRasterImage=!1,this._hasDrapedFeatureSource=!1,this._hasDrapedRasterSource=!1,this._hasDrapedFlowSource=!1;let{state:t,stage:r}=e.parent.view,i=r.renderer.fboCache,a=r.renderView.renderingContext,s=r.renderView.techniques;this._renderContext=new D(a,new k(i,t.viewingMode),s)}initialize(){let e=this._view,t=e.stage.renderView.waterTextures;this.addHandles([s(()=>t.updating,()=>this.events.emit(`content-changed`),c),s(()=>this._spatialReference,e=>this._localOriginFactory=new E(e),c),l(()=>e.allLayerViews,`after-changes`,()=>this._sortedDrapeSourceRenderersDirty=!0),s(()=>C(e.state.highlights),()=>this._sortedDrapeSourceRenderersDirty=!0,u),s(()=>e.state.highlights,e=>{this._bindParameters.highlights=e},u),e.resourceController.scheduler.registerTask(I.OVERLAY_RENDERER,this)]);let n=this._camera;n.near=1,n.far=1e4,n.relativeElevation=null,this._bindParameters.slot=18,this._bindParameters.camera=n,this._bindParameters.updateLighting(new N(_()),0,0,0)}destroy(){this._renderers.forEach(e=>e.destroy()),this._renderers.clear(),this._passParameters.texture=a(this._passParameters.texture),this.disposeOverlays(),this._renderContext.destroy(),this._sortedRenderers.prune()}get _bindParameters(){return this._renderContext.bind}get _rctx(){return this._stage.renderView.renderingContext}get _view(){return this.parent.view}get _stage(){return this.parent.view.stage}get _spatialReference(){return this.parent.spatialReference}get _techniques(){return this._stage.renderView.techniques}get rctx(){return this._rctx}get materials(){return this._pluginContext.materials}get screenToMapUnitsRatio(){return this._screenToMapUnitsRatio}get mapUnitsToGroundRatio(){return this.parent.mapUnitsToPlanarDistanceRatio*this._bindParameters.planarDistanceToGroundRatio}get localOriginFactory(){return this._localOriginFactory}set overlayStretch(e){this._bindParameters.overlayStretch=e}get overlayStretch(){return this._bindParameters.overlayStretch}set time(e){this._renderContext.time=e}get pluginContext(){return this._pluginContext}initializeRenderContext(e){let t=new T(this._view.stage.renderView.textures,this._techniques,()=>{this._onMaterialOrContentChanged(),this.events.emit(`content-changed`),this.notifyChange(`updating`),this.notifyChange(`isEmpty`)},()=>this.events.emit(`content-changed`));this._pluginContext={...e,materials:t},this._techniques.precompile(F)}uninitializeRenderContext(){}acquireTechniques(){return[]}render(){}get updating(){return this._sortedDrapeSourceRenderersDirty||r(this._renderers,e=>e.updating||e.canCompact)}get hasOverlays(){return this._overlays!=null&&this._renderTargets!=null}getMaterialRenderer(e){for(let t of this._renderers.values()){let n=t.getMaterialRenderer(e);if(n)return n}return null}get layers(){return this._sortedDrapeSourceRenderersDirty&&this._updateSortedDrapeSourceRenderers(),t(this._sortedRenderers.map(e=>e.drapeSource.layer).filter(e=>!!e))}registerDrapeSource(e,t){this._renderers.get(e)?.destroy(),this._renderers.set(e,t),this._sortedDrapeSourceRenderersDirty=!0,`fullOpacity`in e&&this.addHandles(s(()=>e.fullOpacity,()=>this.events.emit(`content-changed`)),e)}removeDrapeSourceRenderer(e){if(e==null)return;let t=this._renderers.get(e);t!=null&&(this._sortedDrapeSourceRenderersDirty=!0,this._renderers.delete(e),this.removeHandles(e),t.destroy())}computeValidity(){return this._renderTargets?.computeValidity()??0}releaseRenderTargets(e){this._renderTargets?.dispose(e)}get overlays(){return this._overlays??[]}ensureDrapeTargets(e){this._hasTargetWithoutRasterImage=this._overlays?d(e,e=>e.drapeTargetType===1):!1}ensureDrapeSources(e){this._overlays?(this._hasDrapedFeatureSource=d(e,e=>e.drapeSourceType===1),this._hasDrapedRasterSource=d(e,e=>e.drapeSourceType===0),this._hasDrapedFlowSource=d(e,e=>e.drapeSourceType===2)):this._hasDrapedFeatureSource=this._hasDrapedRasterSource=this._hasDrapedFlowSource=!1}get _needsColorWithoutRasterImage(){return this._hasDrapedRasterSource&&this._hasDrapedFeatureSource&&this._hasTargetWithoutRasterImage}ensureOverlays(e,t){this._overlays??=(this._renderTargets=new b(this._stage.renderer.fboCache),[new y,new y]),this.ensureDrapeTargets(e),this.ensureDrapeSources(t)}disposeOverlays(){this._overlays=null,this._renderTargets?.dispose(1),this._renderTargets=null,this.events.emit(`textures-disposed`)}_useOverlayColorInsteadOfColorNoRasterImage(e){return e===1&&!this._needsColorWithoutRasterImage&&(this._hasDrapedFeatureSource||this._hasDrapedRasterSource)}getTexture(e){let t=this._useOverlayColorInsteadOfColorNoRasterImage(e);return this._renderTargets?.getTexture(t?0:e)}get readyToRun(){return this.updating}runTask(e){this._processDrapeSources(()=>!0,e)}_onMaterialOrContentChanged(){this.renderOccludedFlags=r(this._renderers,e=>e.hasOccluders)?H:1}_processDrapeSources(e,t){let n=!1;for(let[r,i]of this._renderers){if(t?.done)break;(r.destroyed||e(r))&&i.commitChanges()&&(n=!0,t?.madeProgress())}this._sortedDrapeSourceRenderersDirty&&(this._sortedDrapeSourceRenderersDirty=!1,n=!0,this._updateSortedDrapeSourceRenderers(),t?.madeProgress()),t&&this.compact(t),n&&(this._overlays!=null&&this._renderers.size===0&&this.disposeOverlays(),this.notifyChange(`updating`),this.notifyChange(`isEmpty`),this._onMaterialOrContentChanged(),this.hasHighlights=r(this._renderers,e=>e.hasHighlights),this.events.emit(`content-changed`))}compact(e){let t=!1;for(let n of this._renderers.values()){if(e.done)break;t=n.compact(e)||t}return t&&this.notifyChange(`updating`),t}hasHighlight(e){return r(this._renderers,t=>t.hasHighlight(e))}processSyncDrapeSources(){this._processDrapeSources(e=>e.updatePolicy===1)}get isEmpty(){return!v.OVERLAY_DRAW_DEBUG_TEXTURE&&i(this._renderers,e=>e.isEmpty)}get hasWater(){let e=r(this._renderers,({hasWater:e})=>e);return e!==this._hasWater&&(this._hasWater=e,this.events.emit(`has-water`)),this._hasWater}renders(e){if(v.OVERLAY_DRAW_DEBUG_TEXTURE&&e!==4&&e!==2)return!0;if(!this._overlays)return!1;let t=this._overlays[0];for(let e of this._overlays)e.setupGeometryViews(this.longitudeCyclical);if(!t.hasSomeSizedView())return!1;let n=this._setOutput(this._renderTargets?.targets.find(t=>t.content===e)?.output??0),r=this._bindParameters,i=r.highlightMixTexture;r.output===10&&(r.highlightMixTexture=r.highlights.length>1?this._rctx.emptyTexture:null),++this._techniques.precompiling;let a=this._sortedRenderers.some(({renderer:e})=>e.precompile(this._renderContext));return--this._techniques.precompiling,r.highlightMixTexture=i,this._setOutput(n),a}_setOutput(e){let t=this._bindParameters.output;return this._bindParameters.output=e,this._bindParameters.slot=e===4?19:18,t}get mode(){return this.isEmpty?0:this.hasWater&&this.renders(3)?2:+!!this._renderTargets?.getTexture(0)}updateAnimation(e){let t=!1;return this._renderers.forEach(n=>t=n.updateAnimation(e)||t),t&&this.parent.requestRender(0),t}updateDrapeSourceOrder(){this._sortedDrapeSourceRenderersDirty=!0}precompileShaders(e){if(!this._overlays||!this._renderTargets)return!1;let t=this._bindParameters;t.alignPixelEnabled=e.alignPixelEnabled,++this._techniques.precompiling;for(let e of this._renderTargets.targets){if(e.content===1&&!this._needsColorWithoutRasterImage)continue;let{output:n}=e;this._setOutput(n),n===10&&(t.highlightMixTexture=t.highlights.length>1?this._rctx.emptyTexture:null);let r=this._renderContext.renderOccludedMask;e.content===4&&(this._renderContext.renderOccludedMask=H),this._sortedRenderers.forAll(({drapeSource:t,renderer:n})=>{e.content===1&&t.drapeSourceType===0||e.content===4&&n.hasOnlyOccluders||n.precompile(this._renderContext)}),this._renderContext.renderOccludedMask=r,t.highlightMixTexture=null}return--this._techniques.precompiling,!0}drawOverlays(e,t){if(!this._overlays||!this._renderTargets)return;for(let e of this._overlays)e.setupGeometryViews(this.longitudeCyclical);this._bindParameters.alignPixelEnabled=e.alignPixelEnabled;let n=this.allSourcesOccluders;for(let e of this._renderTargets.targets){if(!(e.content===0&&this._hasDrapedFlowSource)&&!e.handleRenderRequest(t)||e.content===1&&!this._needsColorWithoutRasterImage||e.content===4&&n)continue;let r=this._drawTarget(0,e),i=this._drawTarget(1,e);(r||i)&&e.fbo.generateMipMap()}}_drawTarget(e,t){let n=this._overlays[e],r=n.canvasGeometries;if(r.numViews===0)return!1;let i=this._view.state.contentPixelRatio;this._screenToMapUnitsRatio=i*n.mapUnitsPerPixel/this._bindParameters.overlayStretch;let{output:a,content:o}=t;if(this.isEmpty||a===4&&!this.hasWater||!n.hasSomeSizedView())return!1;let{_rctx:s,_camera:c,_renderContext:l,_bindParameters:u}=this;if(c.pixelRatio=n.pixelRatio*i,this._setOutput(a),u.screenToMapUnitsRatio=this._screenToMapUnitsRatio,u.screenToPlanarDistanceRatio=this._screenToMapUnitsRatio*this.parent.mapUnitsToPlanarDistanceRatio,o===4&&(l.renderOccludedMask=H),!this.renders(o))return l.renderOccludedMask=O,!1;let{resolution:d}=n,f=e===0,p=f?0:d;if(s.setViewport(p,0,d,d),this._bindTargetFBO(t),f&&(a===10?s.gl.clearBufferuiv(s.gl.COLOR,0,[0,0,0,0]):(s.setClearColor(0,0,0,0),s.clear(16384))),v.OVERLAY_DRAW_DEBUG_TEXTURE&&o!==4&&o!==2){this._techniques.precompile(j,U);let t=this._techniques.get(j,U);for(let i=0;i<r.numViews;i++)this._setViewParameters(r.extents[i],n),this._ensureDebugPatternResources(n.resolution,V[e]),s.bindTechnique(t,u,this._passParameters),s.screen.draw()}if(a===10){let{fboCache:n}=this._stage.renderer,r=this._resolution;this._bindTargetFBO(t),w(s,n,r,r,u,()=>this._renderAllGeometry(e,t),p)}else this._renderAllGeometry(e,t);return s.bindFramebuffer(null),l.renderOccludedMask=O,!0}get allSourcesOccluders(){return i(this._renderers,e=>e.hasOnlyOccluders)}_renderAllGeometry(e,t){let n=this._overlays[e],r=n.canvasGeometries;this._sortedRenderers.forAll(({drapeSource:i,renderer:a})=>{if(t.content===1&&i.drapeSourceType===0)return;let{fullOpacity:o}=i,s=o!=null&&o<1&&t.output===0&&this._bindTemporaryFBO();for(let e=0;e<r.numViews;e++)this._setViewParameters(r.extents[e],n),a.render(this._renderContext);if(s){this._bindTargetFBO(t),this._overlayParameters.texture=s.getTexture(),this._overlayParameters.opacity=o,this._overlayParameters.overlayIndex=e;let n=this._techniques.get(F);this._rctx.bindTechnique(n,this._bindParameters,this._overlayParameters),this._rctx.screen.draw(),s.release()}})}_bindTargetFBO(e){let t=this._resolution,n=2*t;e.fbo.ensureFramebuffer(n,t),e.fbo.bind(this._rctx)}_bindTemporaryFBO(){let e=this._resolution,t=2*e,n=this._stage.renderer.fboCache,r=n.acquire(t,e,`overlay tmp`);return n.rctx.bindFramebuffer(r.fbo),n.rctx.clear(16384),r}get _resolution(){return this._overlays?.[0].resolution??0}notifyContentChanged(){this.events.emit(`content-changed`)}intersectRay(e,t,n,r){this._sortedDrapeSourceRenderersDirty&&this._updateSortedDrapeSourceRenderers();let i=0;for(let{renderer:a}of this._sortedRenderers)i=a.intersectRay?.(e,t,n,r,i)??i}*intersectScreenPolygon(e,t,n){this._sortedDrapeSourceRenderersDirty&&this._updateSortedDrapeSourceRenderers();let r=0;for(let{renderer:i}of this._sortedRenderers)r=yield*i.intersectScreenPolygon(e,t,n,r)}_updateSortedDrapeSourceRenderers(){if(this._sortedRenderers.clear(),this._renderers.size===0)return;let e=this._view.map.allLayers.map(e=>e.uid),t=e.length;this._renderers.forEach((n,r)=>{let i=e.indexOf(r.layer?.uid),a=i>=0,o=r.renderGroup??+!a,s=r.drapeSourcePriorityOffset??0,c=t*o+(a?i:0)+s;this._sortedRenderers.push(new B(r,n,c))}),this._sortedRenderers.sort((e,t)=>e.index-t.index)}_setViewParameters(e,t){let n=this._camera;n.viewport=[0,0,t.resolution,t.resolution],this._bindParameters.planarDistanceToGroundRatio=this.parent.getPlanarDistanceToGroundRatio((e[1]+e[3])*.5),m(n.projectionMatrix,0,e[2]-e[0],0,e[3]-e[1],n.near,n.far),h(n.viewMatrix,[-e[0],-e[1],0])}_ensureDebugPatternResources(e,t){if(g(this._passParameters.color,t[0],t[1],t[2]),this._passParameters.texture)return;let n=new Uint8Array(e*e*4),r=0;for(let t=0;t<e;t++)for(let i=0;i<e;i++){let a=Math.floor(i/10),o=Math.floor(t/10);a<2||o<2||a*10>e-20||o*10>e-20?(n[r++]=255,n[r++]=255,n[r++]=255,n[r++]=255):(n[r++]=255,n[r++]=255,n[r++]=255,a&1&&o&1?n[r++]=i&1^t&1?0:255:n[r++]=a&1^o&1?0:128)}let i=new R(e);i.samplingMode=9728,this._passParameters.texture=new L(this._rctx,i,n)}get test(){}};e([f()],z.prototype,`hasHighlights`,void 0),e([f()],z.prototype,`renderOccludedFlags`,void 0),e([f()],z.prototype,`_sortedDrapeSourceRenderersDirty`,void 0),e([f({constructOnly:!0})],z.prototype,`parent`,void 0),e([f({readOnly:!0})],z.prototype,`_techniques`,null),e([f({type:Boolean,readOnly:!0})],z.prototype,`updating`,null),e([f()],z.prototype,`isEmpty`,null),z=e([p(`esri.views.3d.terrain.OverlayRenderer`)],z);class B{constructor(e,t,n){this.drapeSource=e,this.renderer=t,this.index=n}}const V=[[1,.5,.5],[.5,.5,1]],H=4,U=new M;U.hasAlpha=!0;export{z as OverlayRenderer,H as overlayRenderOccludedFlag};
2
+ import{__decorate as e}from"tslib";import{unique as t}from"../../../core/arrayUtils.js";import{EventEmitter as n}from"../../../core/Evented.js";import"../../../core/has.js";import{someMap as r,everyMap as i}from"../../../core/MapUtils.js";import{disposeMaybe as a}from"../../../core/maybe.js";import o from"../../../core/PooledArray.js";import{watch as s,syncAndInitial as c,on as l,initial as u}from"../../../core/reactiveUtils.js";import{someSet as d}from"../../../core/SetUtils.js";import{property as f,subclass as p}from"../../../core/accessorSupport/decorators.js";import{ortho as m,fromTranslation as h}from"../../../core/libs/gl-matrix-2/math/mat4.js";import{set as g}from"../../../core/libs/gl-matrix-2/math/vec3.js";import{ones as _}from"../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{debugFlags as v}from"../support/debugFlags.js";import{Overlay as y}from"./Overlay.js";import{OverlayRenderTargets as b}from"./OverlayRenderTargets.js";import x from"../webgl/RenderCamera.js";import{SyncRenderPlugin as S}from"../webgl-engine/effects/RenderPlugin.js";import{renderHighlightBuffer as C}from"../webgl-engine/effects/highlight/Highlight.js";import{GLMaterialRepository as w}from"../webgl-engine/lib/GLMaterialRepository.js";import{GridLocalOriginFactory as T}from"../webgl-engine/lib/GridLocalOriginFactory.js";import{RenderContext as E,defaultRenderOccludedMask as D}from"../webgl-engine/lib/RenderContext.js";import{ShadowMap as O}from"../webgl-engine/lib/ShadowMap.js";import{T as k}from"../../../chunks/Texture.glsl.js";import{TextureTechnique as A}from"../webgl-engine/lib/TextureTechnique.js";import{TextureTechniqueConfiguration as j}from"../webgl-engine/lib/TextureTechniqueConfiguration.js";import{AmbientLight as M}from"../webgl-engine/lighting/Lightsources.js";import{O as N}from"../../../chunks/OverlayCompositing.glsl.js";import{OverlayCompositingTechnique as P}from"../webgl-engine/shaders/OverlayCompositingTechnique.js";import{TaskPriority as F}from"../../support/Scheduler.js";import{Texture as I}from"../../webgl/Texture.js";import{TextureDescriptor as L}from"../../webgl/TextureDescriptor.js";let R=class extends S{constructor(e){super(e),this._overlays=null,this._renderTargets=null,this._overlayParameters=new N,this.hasHighlights=!1,this.renderOccludedFlags=1,this._hasWater=!1,this._renderers=new Map,this._sortedDrapeSourceRenderersDirty=!1,this._sortedRenderers=new o,this._passParameters=new k,this._screenToMapUnitsRatio=1,this._localOriginFactory=null,this.unloadedMemory=0,this.ignoresMemoryFactor=!1,this._camera=new x,this.events=new n,this.longitudeCyclical=null,this.produces=new Map([[18,e=>e!==10||this.hasHighlights],[19,()=>this._hasWater]]),this._hasTargetWithoutRasterImage=!1,this._hasDrapedFeatureSource=!1,this._hasDrapedRasterSource=!1,this._hasDrapedFlowSource=!1;let{state:t,stage:r}=e.parent.view,i=r.renderer.fboCache,a=r.renderView.renderingContext,s=r.renderView.techniques;this._renderContext=new E(a,new O(i,t.viewingMode),s)}initialize(){let e=this._view,t=e.stage.renderView.waterTextures;this.addHandles([s(()=>t.updating,()=>this.events.emit(`content-changed`),c),s(()=>this._spatialReference,e=>this._localOriginFactory=new T(e),c),l(()=>e.allLayerViews,`after-changes`,()=>this._sortedDrapeSourceRenderersDirty=!0),s(()=>this._highlightsString,()=>this._sortedDrapeSourceRenderersDirty=!0,u),s(()=>e.state.highlights,e=>this._bindParameters.highlights=e,u),e.resourceController.scheduler.registerTask(F.OVERLAY_RENDERER,this)]);let n=this._camera;n.near=1,n.far=1e4,n.relativeElevation=null,this._bindParameters.slot=18,this._bindParameters.camera=n,this._bindParameters.updateLighting(new M(_()),0,0,0)}destroy(){this._renderers.forEach(e=>e.destroy()),this._renderers.clear(),this._passParameters.texture=a(this._passParameters.texture),this.disposeOverlays(),this._renderContext.destroy(),this._sortedRenderers.prune()}get _bindParameters(){return this._renderContext.bind}get _rctx(){return this._stage.renderView.renderingContext}get _view(){return this.parent.view}get _stage(){return this.parent.view.stage}get _spatialReference(){return this.parent.spatialReference}get _techniques(){return this._stage.renderView.techniques}get rctx(){return this._rctx}get materials(){return this._pluginContext.materials}get screenToMapUnitsRatio(){return this._screenToMapUnitsRatio}get mapUnitsToGroundRatio(){return this.parent.mapUnitsToPlanarDistanceRatio*this._bindParameters.planarDistanceToGroundRatio}get localOriginFactory(){return this._localOriginFactory}set overlayStretch(e){this._bindParameters.overlayStretch=e}get overlayStretch(){return this._bindParameters.overlayStretch}get _highlightsString(){return JSON.stringify(this._view.state.highlights.reduce((e,t)=>e+`:`+JSON.stringify(t.toJSON()),``))}set time(e){this._renderContext.time=e}get pluginContext(){return this._pluginContext}initializeRenderContext(e){let t=new w(this._view.stage.renderView.textures,this._techniques,()=>{this._onMaterialOrContentChanged(),this.events.emit(`content-changed`),this.notifyChange(`updating`),this.notifyChange(`isEmpty`)},()=>this.events.emit(`content-changed`));this._pluginContext={...e,materials:t},this._techniques.precompile(P)}uninitializeRenderContext(){}acquireTechniques(){return[]}render(){}get updating(){return this._sortedDrapeSourceRenderersDirty||r(this._renderers,e=>e.updating||e.canCompact)}get hasOverlays(){return this._overlays!=null&&this._renderTargets!=null}getMaterialRenderer(e){for(let t of this._renderers.values()){let n=t.getMaterialRenderer(e);if(n)return n}return null}get layers(){return this._sortedDrapeSourceRenderersDirty&&this._updateSortedDrapeSourceRenderers(),t(this._sortedRenderers.map(e=>e.drapeSource.layer).filter(e=>!!e))}registerDrapeSource(e,t){this._renderers.get(e)?.destroy(),this._renderers.set(e,t),this._sortedDrapeSourceRenderersDirty=!0,`fullOpacity`in e&&this.addHandles(s(()=>e.fullOpacity,()=>this.events.emit(`content-changed`)),e)}removeDrapeSourceRenderer(e){if(e==null)return;let t=this._renderers.get(e);t!=null&&(this._sortedDrapeSourceRenderersDirty=!0,this._renderers.delete(e),this.removeHandles(e),t.destroy())}computeValidity(){return this._renderTargets?.computeValidity()??0}releaseRenderTargets(e){this._renderTargets?.dispose(e)}get overlays(){return this._overlays??[]}ensureDrapeTargets(e){this._hasTargetWithoutRasterImage=this._overlays?d(e,e=>e.drapeTargetType===1):!1}ensureDrapeSources(e){this._overlays?(this._hasDrapedFeatureSource=d(e,e=>e.drapeSourceType===1),this._hasDrapedRasterSource=d(e,e=>e.drapeSourceType===0),this._hasDrapedFlowSource=d(e,e=>e.drapeSourceType===2)):this._hasDrapedFeatureSource=this._hasDrapedRasterSource=this._hasDrapedFlowSource=!1}get _needsColorWithoutRasterImage(){return this._hasDrapedRasterSource&&this._hasDrapedFeatureSource&&this._hasTargetWithoutRasterImage}ensureOverlays(e,t){this._overlays??=(this._renderTargets=new b(this._stage.renderer.fboCache),[new y,new y]),this.ensureDrapeTargets(e),this.ensureDrapeSources(t)}disposeOverlays(){this._overlays=null,this._renderTargets?.dispose(1),this._renderTargets=null,this.events.emit(`textures-disposed`)}_useOverlayColorInsteadOfColorNoRasterImage(e){return e===1&&!this._needsColorWithoutRasterImage&&(this._hasDrapedFeatureSource||this._hasDrapedRasterSource)}getTexture(e){let t=this._useOverlayColorInsteadOfColorNoRasterImage(e);return this._renderTargets?.getTexture(t?0:e)}get readyToRun(){return this.updating}runTask(e){this._processDrapeSources(()=>!0,e)}_onMaterialOrContentChanged(){this.renderOccludedFlags=r(this._renderers,e=>e.hasOccluders)?V:1}_processDrapeSources(e,t){let n=!1;for(let[r,i]of this._renderers){if(t?.done)break;(r.destroyed||e(r))&&i.commitChanges()&&(n=!0,t?.madeProgress())}this._sortedDrapeSourceRenderersDirty&&(this._sortedDrapeSourceRenderersDirty=!1,n=!0,this._updateSortedDrapeSourceRenderers(),t?.madeProgress()),t&&this.compact(t),n&&(this._overlays!=null&&this._renderers.size===0&&this.disposeOverlays(),this.notifyChange(`updating`),this.notifyChange(`isEmpty`),this._onMaterialOrContentChanged(),this.hasHighlights=r(this._renderers,e=>e.hasHighlights),this.events.emit(`content-changed`))}compact(e){let t=!1;for(let n of this._renderers.values()){if(e.done)break;t=n.compact(e)||t}return t&&this.notifyChange(`updating`),t}hasHighlight(e){return r(this._renderers,t=>t.hasHighlight(e))}processSyncDrapeSources(){this._processDrapeSources(e=>e.updatePolicy===1)}get isEmpty(){return!v.OVERLAY_DRAW_DEBUG_TEXTURE&&i(this._renderers,e=>e.isEmpty)}get hasWater(){let e=r(this._renderers,({hasWater:e})=>e);return e!==this._hasWater&&(this._hasWater=e,this.events.emit(`has-water`)),this._hasWater}renders(e){if(v.OVERLAY_DRAW_DEBUG_TEXTURE&&e!==4&&e!==2)return!0;if(!this._overlays)return!1;let t=this._overlays[0];for(let e of this._overlays)e.setupGeometryViews(this.longitudeCyclical);if(!t.hasSomeSizedView())return!1;let n=this._setOutput(this._renderTargets?.targets.find(t=>t.content===e)?.output??0),r=this._bindParameters,i=r.highlightMixTexture;r.output===10&&(r.highlightMixTexture=r.highlights.length>1?this._rctx.emptyTexture:null),++this._techniques.precompiling;let a=this._sortedRenderers.some(({renderer:e})=>e.precompile(this._renderContext));return--this._techniques.precompiling,r.highlightMixTexture=i,this._setOutput(n),a}_setOutput(e){let t=this._bindParameters.output;return this._bindParameters.output=e,this._bindParameters.slot=e===4?19:18,t}get mode(){return this.isEmpty?0:this.hasWater&&this.renders(3)?2:+!!this._renderTargets?.getTexture(0)}updateAnimation(e){let t=!1;return this._renderers.forEach(n=>t=n.updateAnimation(e)||t),t&&this.parent.requestRender(0),t}updateDrapeSourceOrder(){this._sortedDrapeSourceRenderersDirty=!0}precompileShaders(e){if(!this._overlays||!this._renderTargets)return!1;let t=this._bindParameters;t.alignPixelEnabled=e.alignPixelEnabled,++this._techniques.precompiling;for(let e of this._renderTargets.targets){if(e.content===1&&!this._needsColorWithoutRasterImage)continue;let{output:n}=e;this._setOutput(n),n===10&&(t.highlightMixTexture=t.highlights.length>1?this._rctx.emptyTexture:null);let r=this._renderContext.renderOccludedMask;e.content===4&&(this._renderContext.renderOccludedMask=V),this._sortedRenderers.forAll(({drapeSource:t,renderer:n})=>{e.content===1&&t.drapeSourceType===0||e.content===4&&n.hasOnlyOccluders||n.precompile(this._renderContext)}),this._renderContext.renderOccludedMask=r,t.highlightMixTexture=null}return--this._techniques.precompiling,!0}drawOverlays(e,t){if(!this._overlays||!this._renderTargets)return;for(let e of this._overlays)e.setupGeometryViews(this.longitudeCyclical);this._bindParameters.alignPixelEnabled=e.alignPixelEnabled;let n=this.allSourcesOccluders;for(let e of this._renderTargets.targets){if(!(e.content===0&&this._hasDrapedFlowSource)&&!e.handleRenderRequest(t)||e.content===1&&!this._needsColorWithoutRasterImage||e.content===4&&n)continue;let r=this._drawTarget(0,e),i=this._drawTarget(1,e);(r||i)&&e.fbo.generateMipMap()}}_drawTarget(e,t){let n=this._overlays[e],r=n.canvasGeometries;if(r.numViews===0)return!1;let i=this._view.state.contentPixelRatio;this._screenToMapUnitsRatio=i*n.mapUnitsPerPixel/this._bindParameters.overlayStretch;let{output:a,content:o}=t;if(this.isEmpty||a===4&&!this.hasWater||!n.hasSomeSizedView())return!1;let{_rctx:s,_camera:c,_renderContext:l,_bindParameters:u}=this;if(c.pixelRatio=n.pixelRatio*i,this._setOutput(a),u.screenToMapUnitsRatio=this._screenToMapUnitsRatio,u.screenToPlanarDistanceRatio=this._screenToMapUnitsRatio*this.parent.mapUnitsToPlanarDistanceRatio,o===4&&(l.renderOccludedMask=V),!this.renders(o))return l.renderOccludedMask=D,!1;let{resolution:d}=n,f=e===0,p=f?0:d;if(s.setViewport(p,0,d,d),this._bindTargetFBO(t),f&&(a===10?s.gl.clearBufferuiv(s.gl.COLOR,0,[0,0,0,0]):(s.setClearColor(0,0,0,0),s.clear(16384))),v.OVERLAY_DRAW_DEBUG_TEXTURE&&o!==4&&o!==2){this._techniques.precompile(A,H);let t=this._techniques.get(A,H);for(let i=0;i<r.numViews;i++)this._setViewParameters(r.extents[i],n),this._ensureDebugPatternResources(n.resolution,B[e]),s.bindTechnique(t,u,this._passParameters),s.screen.draw()}if(a===10){let{fboCache:n}=this._stage.renderer,r=this._resolution;this._bindTargetFBO(t),C(s,n,r,r,u,()=>this._renderAllGeometry(e,t),p)}else this._renderAllGeometry(e,t);return s.bindFramebuffer(null),l.renderOccludedMask=D,!0}get allSourcesOccluders(){return i(this._renderers,e=>e.hasOnlyOccluders)}_renderAllGeometry(e,t){let n=this._overlays[e],r=n.canvasGeometries;this._sortedRenderers.forAll(({drapeSource:i,renderer:a})=>{if(t.content===1&&i.drapeSourceType===0)return;let{fullOpacity:o}=i,s=o!=null&&o<1&&t.output===0&&this._bindTemporaryFBO();for(let e=0;e<r.numViews;e++)this._setViewParameters(r.extents[e],n),a.render(this._renderContext);if(s){this._bindTargetFBO(t),this._overlayParameters.texture=s.getTexture(),this._overlayParameters.opacity=o,this._overlayParameters.overlayIndex=e;let n=this._techniques.get(P);this._rctx.bindTechnique(n,this._bindParameters,this._overlayParameters),this._rctx.screen.draw(),s.release()}})}_bindTargetFBO(e){let t=this._resolution,n=2*t;e.fbo.ensureFramebuffer(n,t),e.fbo.bind(this._rctx)}_bindTemporaryFBO(){let e=this._resolution,t=2*e,n=this._stage.renderer.fboCache,r=n.acquire(t,e,`overlay tmp`);return n.rctx.bindFramebuffer(r.fbo),n.rctx.clear(16384),r}get _resolution(){return this._overlays?.[0].resolution??0}notifyContentChanged(){this.events.emit(`content-changed`)}intersectRay(e,t,n,r){this._sortedDrapeSourceRenderersDirty&&this._updateSortedDrapeSourceRenderers();let i=0;for(let{renderer:a}of this._sortedRenderers)i=a.intersectRay?.(e,t,n,r,i)??i}*intersectScreenPolygon(e,t,n){this._sortedDrapeSourceRenderersDirty&&this._updateSortedDrapeSourceRenderers();let r=0;for(let{renderer:i}of this._sortedRenderers)r=yield*i.intersectScreenPolygon(e,t,n,r)}_updateSortedDrapeSourceRenderers(){if(this._sortedRenderers.clear(),this._renderers.size===0)return;let e=this._view.map.allLayers.map(e=>e.uid),t=e.length;this._renderers.forEach((n,r)=>{let i=e.indexOf(r.layer?.uid),a=i>=0,o=r.renderGroup??+!a,s=r.drapeSourcePriorityOffset??0,c=t*o+(a?i:0)+s;this._sortedRenderers.push(new z(r,n,c))}),this._sortedRenderers.sort((e,t)=>e.index-t.index)}_setViewParameters(e,t){let n=this._camera;n.viewport=[0,0,t.resolution,t.resolution],this._bindParameters.planarDistanceToGroundRatio=this.parent.getPlanarDistanceToGroundRatio((e[1]+e[3])*.5),m(n.projectionMatrix,0,e[2]-e[0],0,e[3]-e[1],n.near,n.far),h(n.viewMatrix,[-e[0],-e[1],0])}_ensureDebugPatternResources(e,t){if(g(this._passParameters.color,t[0],t[1],t[2]),this._passParameters.texture)return;let n=new Uint8Array(e*e*4),r=0;for(let t=0;t<e;t++)for(let i=0;i<e;i++){let a=Math.floor(i/10),o=Math.floor(t/10);a<2||o<2||a*10>e-20||o*10>e-20?(n[r++]=255,n[r++]=255,n[r++]=255,n[r++]=255):(n[r++]=255,n[r++]=255,n[r++]=255,a&1&&o&1?n[r++]=i&1^t&1?0:255:n[r++]=a&1^o&1?0:128)}let i=new L(e);i.samplingMode=9728,this._passParameters.texture=new I(this._rctx,i,n)}get test(){}};e([f()],R.prototype,`hasHighlights`,void 0),e([f()],R.prototype,`renderOccludedFlags`,void 0),e([f()],R.prototype,`_sortedDrapeSourceRenderersDirty`,void 0),e([f({constructOnly:!0})],R.prototype,`parent`,void 0),e([f({readOnly:!0})],R.prototype,`_techniques`,null),e([f()],R.prototype,`_highlightsString`,null),e([f({type:Boolean,readOnly:!0})],R.prototype,`updating`,null),e([f()],R.prototype,`isEmpty`,null),R=e([p(`esri.views.3d.terrain.OverlayRenderer`)],R);class z{constructor(e,t,n){this.drapeSource=e,this.renderer=t,this.index=n}}const B=[[1,.5,.5],[.5,.5,1]],V=4,H=new j;H.hasAlpha=!0;export{R as OverlayRenderer,V as overlayRenderOccludedFlag};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import has from"../../../core/has.js";import{disposeMaybe as t}from"../../../core/maybe.js";import{MemCachePool as n}from"../../../core/MemCachePool.js";import r from"../../../core/ObjectPool.js";import{watch as i,sync as a}from"../../../core/reactiveUtils.js";import{property as o,subclass as s}from"../../../core/accessorSupport/decorators.js";import{subtract as c,set as l,dot as u}from"../../../core/libs/gl-matrix-2/math/vec3.js";import{ZEROS as d,fromValues as f,create as p}from"../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{fromValues as m,ZEROS as h}from"../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{create as g,set as _}from"../../../geometry/support/aaBoundingBox.js";import{BufferViewVec3f as v}from"../../../geometry/support/buffer/BufferView.js";import{overlayRenderOccludedFlag as y}from"./OverlayRenderer.js";import{PatchRenderData as b}from"./PatchRenderData.js";import{TerrainAttributesCache as x}from"./TerrainAttributesCache.js";import{enableTerrainInternalChecks as S}from"./terrainUtils.js";import{TileRenderer as C}from"./TileRenderer.js";import{IteratorPreorder as w,fallsWithinLayerView as T,usesStencil as E,sortTiles as D,compareTiles as O}from"./tileUtils.js";import{getOverlayContentForOutputTerrain as k}from"../webgl-engine/core/shaderLibrary/terrain/Overlay.glsl.js";import{SyncRenderPlugin as A}from"../webgl-engine/effects/RenderPlugin.js";import{Vertices as j}from"../webgl-engine/lib/Attribute.js";import{IntersectorResultRay as M}from"../webgl-engine/lib/IntersectorResult.js";import{intersectAabbInvDirBefore as N,MeshIntersectionOptions as P,intersectTriangles as F}from"../webgl-engine/lib/RayIntersections.js";import{TriangleIntersectionData as I}from"../webgl-engine/lib/TriangleIntersectionData.js";import{terrainId as L,getVerticalOffsetTerrain as R}from"../webgl-engine/lib/verticalOffsetUtils.js";import{DrawParameters as z}from"../webgl-engine/materials/DrawParameters.js";import{hasShadowHighlights as B}from"../webgl-engine/shaders/ReceiveShadowsConfiguration.js";import{T as V}from"../../../chunks/Terrain.glsl.js";import{TerrainTechnique as H}from"../webgl-engine/shaders/TerrainTechnique.js";import{TerrainTechniqueConfiguration as U}from"../webgl-engine/shaders/TerrainTechniqueConfiguration.js";import{PrimitiveType as W}from"../../webgl/enums.js";const G=g();let K=class extends A{get visibleTiles(){return Array.from(this._visiblePatchesByOrigin.values()).flat()}get _isGlobal(){return this._view.stage.viewingMode===1}get _techniques(){return this._context.techniques}get _rctx(){return this._context.renderContext.rctx}get renderOccludedFlags(){return this._overlayRenderer.renderOccludedFlags}constructor(e,t,i,a,o){super({}),this._surface=e,this._overlayRenderer=t,this._allTiles=i,this._compressionTracker=a,this.type=7,this.isGround=!0,this._passParameters=new V,this._drawParameters=new z,this._renderDataPool=new r(()=>new b),this._visiblePatchesByOrigin=new Map,this._allPatchesByOrigin=new Map,this._patchesByOriginDirty=!0,this._patchSortingDirty=!0,this._tileIterator=new w,this._castShadows=!1,this._inViewshed=!1,this._cutFillEnabled=!1,this._tileRenderer=null,this._numTilesRendered=0,this._numTilesCulled=0,this._numOriginsRendered=0,this.produces=new Map([[1,()=>this._desiredSlot===1],[7,()=>this._desiredSlot===7],[9,()=>this._produces()&&this.renderOccludedFlags===y]]),this._tileSize=256,this._configuration=new U(e.isGlobal),this._tileTextureCache=new n((e,t)=>o.newCache(e,t),`TileTexture`),this.tileGeometryCache=new x(o)}normalizeCtorArgs(){return{}}initialize(){this.addHandles(i(()=>this._overlayRenderer.renderOccludedFlags,()=>this.requestRender(),a))}destroy(){this._tileTextureCache.destroy(),this.tileGeometryCache.destroy(),this._allTiles.prune(),this._tileRenderer=null}_produces(){return this.visible&&!!this._rootTiles&&!this.renderingDisabled}set renderingDisabled(e){this._set(`renderingDisabled`,!!e),this.setDirty()}set visible(e){this._set(`visible`,!!e),this.setDirty()}updateHeading(e){this._tileRenderer?.updateHeading(e)}set transparency(e){this._configuration.transparencyMode!==e&&(this._configuration.transparencyMode=e,this.requestRender())}get transparency(){return this._configuration.transparencyMode}get renderPatchBorders(){return this._configuration.tileBorders}set renderPatchBorders(e){this._configuration.tileBorders!==e&&(this._configuration.tileBorders=e,this.requestRender(),this.notifyChange(`renderPatchBorders`))}get layerViewUid(){return L}get slicePlaneEnabled(){return this._configuration.hasSlicePlane}set slicePlaneEnabled(e){this._configuration.hasSlicePlane!==e&&(this._configuration.hasSlicePlane=e,this.requestRender())}set textureFadingEnabled(e){this._configuration.textureFadingEnabled!==e&&(this._configuration.textureFadingEnabled=e,this.requestRender())}set pbrMode(e){this._configuration.pbrMode!==e&&(this._configuration.pbrMode=e,this.requestRender())}setRootTiles(e){this._rootTiles=e,this.setDirty()}setStencilEnabledLayerExtents(e){this._stencilEnabledLayerExtents=e,this._setSortingDirty()}set tileSize(e){this._tileSize=e,this._tileRenderer!=null&&(this._tileRenderer.tileSize=e),this.setDirty()}get tileSize(){return this._tileSize}_ensureRenderData(e){e.renderData||(e.renderData=this._renderDataPool.acquire(),e.renderData.init(e,this._getLocalOriginOfTile(e)))}loadTile(e){this._ensureRenderData(e),this.updateTileGeometryState(e),this.reuseTextureFromParent(e)||this.updateTileTexture(e,32)}reuseTextureFromParent(e){let{parent:t}=e;if(!this._canReuseTextureFromParent(t,e))return!1;let n=m(e.lij[2]&1?.5:0,e.lij[1]&1?0:.5,.5,.5);return t.renderData?.reuseTexture(e.renderData,n)??!1}_canReuseTextureFromParent(e,t){if(!e)return!1;let{layerInfo:n,surface:r}=t;for(let i=0;i<n[1].length;i++){let n=r.layerViewByIndex(i,1);if(T(e,n)!==T(t,n))return!1}return!0}updateTileTexture(e,t){this._tileRenderer!=null&&(this._tileRenderer.updateTileTexture(e,t===32?0:2),this.requestRender(),e.resetPendingUpdate(t))}updateTileGeometryState(e){for(let t of e.layerInfo[0])t.pendingUpdates&=-9;e.resetPendingUpdate(8);let t=e.renderData.updateGeometryState();return this._surface.updateElevationSources(e),t&&this.setDirty(),t}updateGeometryIfNeeded(e){e.loaded&&e.renderData.updateGeometryIfNeeded(this._rctx)}unloadTile(e){let t=e.renderData;t&&(t.releaseGeometry(),this._renderDataPool.release(t),t.clear(),e.renderData=null,e.setMemoryDirty(),this.setDirty())}_getLocalOriginOfTile(e){let t=Math.max(0,Math.floor((e.level-3)/7)*7);if(this._isGlobal&&t===0)return d;for(;e.parent&&e.level>t;)e=e.parent;return e.centerAtSeaLevel}getStats(){return{numTilesRendered:this._numTilesRendered,numTilesCulled:this._numTilesCulled,numOriginsRendered:this._numOriginsRendered}}set wireframe(e){this._get(`wireframe`)!==e&&(this._set(`wireframe`,e),this.requestRender())}setDirty(e=1){this._patchesByOriginDirty=!0,this._context.requestRender(e)}_setSortingDirty(e=1){this._patchSortingDirty=!0,this._context.requestRender(e)}requestRender(e=1){this._context.requestRender(e)}initializeRenderContext(e){this._context=e,this._tileRenderer=new C(this._surface,this._rctx,this._tileSize,this._techniques,this._tileTextureCache,this._compressionTracker),this.updateTileBackground()}uninitializeRenderContext(){this._tileRenderer=t(this._tileRenderer)}intersectRay(e,t,n,r){let i=this._rootTiles;if(!i||e.options.selectOpaqueTerrainOnly&&e.options.selectionMode&&this.transparency!==0)return;let a=q,o=J;c(a,r,n),l(o,1/a[0],1/a[1],1/a[2]);let s=e.results.min,d=e.results.max,f=e.results.ground,p=e.options.store===0,m=!!e.results.ground.target,h=R(e.verticalOffset),g=e.tolerance,y,b=p&&s.distance!=null?s.distance:1/0,x=e.options,S=x.normalRequired||!x.backfacesTerrain,C=new P(g,!1,S),w=i=>{let l=i.renderData;if(!l?.vao)return;let m=l.geometry;_(G,m.boundingBox);let w=l.localOrigin;if(h!=null&&(h.localOrigin=w,h.applyToAabb(G)),Y[0]=n[0]-w[0],Y[1]=n[1]-w[1],Y[2]=n[2]-w[2],!N(G,Y,o,g,b))return;let T=(e,t,n,r)=>{e.set(this.type,i,t,n,r),b=p&&s.renderDistance!=null?s.renderDistance:1/0},E=(i,o,c)=>{(!S||c!=null)&&o>=0&&(x.backfacesTerrain||u(c,a)<0)&&(x.invisibleTerrain||!x.selectionMode||t==null||t(n,r,o))&&((f.renderDistance==null||o<f.renderDistance)&&T(f,i,o,c),x.isFiltered||(x.store===2&&(y==null?(y=new M(e.ray),T(y,i,o,c),e.results.all.push(y)):o<y.renderDistance&&T(y,i,o,c)),(s.renderDistance==null||o<s.renderDistance)&&T(s,i,o,c),x.store!==0&&(d.renderDistance==null||o>d.renderDistance)&&T(d,i,o,c)))},D=X;c(D,r,w);let{indices:O,indexCount:k}=m,A=m.vertexAttributes,P=A.getField(`position`,v),L=new j(P.typedBuffer,3,A.stride/4),R=k/3;!h&&R>200?(l.intersectionData??=new I(O,R,L),l.intersectionData.intersectRay(Y,D,C,E)):F(Y,D,0,R,(e,t)=>P.getVec(O[t],e),h,C,E)},T=this._tileIterator;T.reset(i);let D=e.options.invisibleTerrain;for(let e=T.next();e;e=T.next())(e.visible||D&&e.intersectsClippingArea)&&(h!=null||e.intersectsRay(n,a,g,b))&&(!m||!E(e,this._stencilEnabledLayerExtents))?w(e):T.skipSubtree()}processScaleRangeQueries(e,t){if(!t.done&&e)for(this._updatePatchGroups();e.updating&&!t.done;){e.prepare();for(let t of this._visiblePatchesByOrigin.values())for(let n of t)n.renderData?.textureReference!=null&&e.queriesForTile(n);e.process(),t.madeProgress()}}get _view(){return this._surface.view}get _desiredSlot(){if(!this._produces())return null;switch(this.transparency){case 0:return 1;case 1:case 2:return 7;case 3:case 4:return null}}acquireTechniques(e){let{shadowMap:t,viewshedEnabled:n,cutFillComputationEnabled:r,slot:i,hasEmission:a,useFloatBlend:o}=e.bind,s=!!has(`enable-feature:terrain-shadows`)&&t.enabled;if(s!==this._castShadows&&(this._castShadows=s,this._patchesByOriginDirty=!0),this._inViewshed!==n&&(this._inViewshed=n,this._patchesByOriginDirty=!0),this._cutFillEnabled!==r&&(this._cutFillEnabled=r,this._patchesByOriginDirty=!0),this.transparency===3)return null;if(i===9){if((e.renderOccludedMask&y)===0)return null}else if(i!==this._desiredSlot)return null;let c=this._configuration;switch(c.receiveGlobalIllumination=c.screenSpaceReflections=c.cloudReflections=c.receiveShadows=c.hasShadowHighlights=c.receiveAmbientOcclusion=c.renderOccluded=c.hasHighlightMixTexture=!1,c.hasEmission=a,c.overlayMode=this._overlayRenderer.mode,c.useFloatBlend=o.value,e.output){case 0:case 1:case 2:{let n=e.bind;c.screenSpaceReflections=n.hasScreenSpaceReflections,c.cloudReflections=n.clouds.data!=null;let r=i===9;return c.receiveShadows=t.ready&&!r,c.hasShadowHighlights=B(c,e.bind),c.renderOccluded=r,c.receiveAmbientOcclusion=!r&&n.ssao!=null,c.receiveGlobalIllumination=!r&&n.globalIlluminationEnabled,this._acquireTechnique(e.output)}case 5:case 7:return this._castShadows?this._acquireTechnique(5):null;case 8:return this._inViewshed?this._acquireTechnique(8):null;case 9:return this._cutFillEnabled?this._acquireTechnique(9):null;case 3:case 4:case 11:return this._acquireTechnique(e.output);case 10:return c.hasHighlightMixTexture=e.bind.highlightMixTexture!=null,this._overlayRenderer.hasHighlights?this._acquireTechnique(10):null}return null}render(e,t){switch(this._updatePatchGroups(),this._passParameters.useStencil=!1,this._passParameters.overlayContent=k(e.output,e.bind),e.output){case 0:case 1:case 2:return this._renderMaterialPass(e,t);case 3:case 4:case 11:return this._renderAuxiliaryPass(e,t,this._visiblePatchesByOrigin);case 10:{let n=e.bind.highlight?.name;n&&this._overlayRenderer.hasHighlights&&this._overlayRenderer.renders(2)&&this._overlayRenderer.hasHighlight(n)&&this._renderAuxiliaryPass(e,t,this._visiblePatchesByOrigin);break}case 5:case 7:case 8:case 9:return this._renderAuxiliaryPass(e,t,this._allPatchesByOrigin)}}updateTileBackground(e){if(this._tileRenderer==null)return;let t=this._tileRenderer,n;if(e!=null){let t=e.toUnitRGBA();n=f(t[0]||0,t[1]||0,t[2]||0)}t.setBackground(n),this._allTiles.forAll(e=>t.updateTileTexture(e,0)),this._configuration.tileBlendInput=t.backgroundIsGrid?2:t.backgroundColor==null?0:1,this.requestRender()}_updatePatchGroups(){if(this._patchesByOriginDirty&&(this._rebuildPatchGroups(),this._patchesByOriginDirty=!1,this._patchSortingDirty=!0),this._patchSortingDirty){let e=Array.from(this._visiblePatchesByOrigin.values()),t=this._stencilEnabledLayerExtents;for(let n of e)D(n,t);e.sort((e,t)=>O(e[0],t[0])),this._visiblePatchesByOrigin=new Map(e.map(e=>[e[0].renderData.localOrigin,e])),this.notifyChange(`visibleTiles`),this._patchSortingDirty=!1}}_rebuildPatchGroups(){let e=this._rootTiles;if(e!=null){e[0]?.surface.checkAllTilesWaterproofness(`render-patch-groups`),this._visiblePatchesByOrigin.clear(),this._allPatchesByOrigin.clear();for(let t of e)this._rebuildPatchGroupsForRootTile(t)}}_rebuildPatchGroupsForRootTile(e){let t=this._tileIterator;for(t.resetOne(e);!t.done;){let e=t.next(),n=e.renderData;if(!n){this._numTilesCulled++;continue}let r=n.localOrigin;if(this._castShadows||this._inViewshed||this._cutFillEnabled){let t=this._allPatchesByOrigin.get(r);t||(t=[],this._allPatchesByOrigin.set(r,t)),t.push(e)}if(!e.visible){this._numTilesCulled++,t.skipSubtree();continue}let i=this._visiblePatchesByOrigin.get(r);i||(i=[],this._visiblePatchesByOrigin.set(r,i)),i.push(e),t.skipSubtree()}}_renderAuxiliaryPass(e,t,n){let{rctx:r,bind:i}=e;r.bindTechnique(t,i,this._passParameters);let a=!!this._stencilEnabledLayerExtents?.length;n.forEach(n=>{this._drawParameters.origin=n[0].renderData.localOrigin,t.program.bindDraw(i,this._passParameters,this._drawParameters);for(let r=0;r<n.length;r++)this._renderPatch(e,t,n[r],W.TRIANGLES,a,this._passParameters.overlayContent===null)}),r.bindVAO(null)}_renderMaterialPass(e,t){let{rctx:n,bind:r}=e,i=n.bindTechnique(t,r,this._passParameters);this._numTilesRendered=0,this._numTilesCulled=0,this._numOriginsRendered=0;let a=r.slot===9;a&&(i.bindTexture(`tex`,n.emptyTexture),i.setUniform3fv(`textureOpacities`,d),i.setUniform4fv(`texOffsetAndScale`,h));let o=this._tileRenderer?.backgroundColor==null?d:this._tileRenderer.backgroundColor;this._configuration.tileBlendInput===1&&i.setUniform3fv(`backgroundColor`,o);let s=!!this._stencilEnabledLayerExtents?.length,c=this.wireframe?W.LINES:W.TRIANGLES;this._configuration.textureFadingEnabled&&i.bindTexture(`texNext`,n.emptyTexture);for(let n of this._visiblePatchesByOrigin.values()){this._drawParameters.origin=n[0].renderData.localOrigin,t.program.bindDraw(r,this._passParameters,this._drawParameters),this._numOriginsRendered++;for(let r of n){let n=r.renderData,o=n.textureReference;if(o!=null){if(!a){i.setUniform4fv(`texOffsetAndScale`,o.offsetAndScale),i.bindTexture(`tex`,o.texture.texture);let e=n.textureFadeFactor,t=e<1?n.nextTextureReference:null;this._configuration.textureFadingEnabled&&t&&e<1?(i.setUniform1f(`fadeFactor`,e),i.setUniform4fv(`nextTexOffsetAndScale`,t.offsetAndScale),i.setUniform3fv(`nextTexOpacities`,t.opacities),i.bindTexture(`texNext`,t.texture.texture)):i.setUniform1f(`fadeFactor`,1),n.textureIsFading&&this.requestRender(2),i.setUniform3fv(`textureOpacities`,o.opacities)}this._renderPatch(e,t,r,c,s),r.renderOrder=this._numTilesRendered,this._numTilesRendered++}}}n.bindVAO(null)}_renderPatch(e,t,n,r,i,a=!1){let o=n.renderData,s=o.vao,c=s?.indexBuffer;if(!s||c==null){S&&console.error(`Rendered tile with no indices: `,n.lij,` : `,o);return}let l=t.program;!a&&!this._overlayRenderer.isEmpty&&this._bindOverlayPatchData(l,o.overlay);let{rctx:u,bind:d}=e;i&&(this._passParameters.useStencil=E(n,this._stencilEnabledLayerExtents),u.setPipelineState(t.getPipeline(d,this._passParameters)));let f=o.geometry.indexCount;u.bindVAO(s),l.assertCompatibleVertexAttributeLocations(s),u.drawElements(r,f,c.indexType,0)}_bindOverlayPatchData(e,t){e.setUniform4fv(`overlayTexOffset`,t.offsets),e.setUniform4fv(`overlayTexScale`,t.scales)}_acquireTechnique(e){return this._configuration.output=e,this._techniques.get(H,this._configuration)}get test(){}hasHighlight(e){return this._overlayRenderer.hasHighlight(e)}};e([o({readOnly:!0})],K.prototype,`visibleTiles`,null),e([o({readOnly:!0})],K.prototype,`_isGlobal`,null),e([o()],K.prototype,`renderOccludedFlags`,null),e([o({value:!1})],K.prototype,`renderingDisabled`,null),e([o({value:!0})],K.prototype,`visible`,null),e([o()],K.prototype,`renderPatchBorders`,null),e([o()],K.prototype,`wireframe`,null),K=e([s(`esri.views.3d.terrain.TerrainRenderer`)],K);const q=p(),J=p(),Y=p(),X=p();export{K as TerrainRenderer};
2
+ import{__decorate as e}from"tslib";import has from"../../../core/has.js";import{disposeMaybe as t}from"../../../core/maybe.js";import{MemCachePool as n}from"../../../core/MemCachePool.js";import r from"../../../core/ObjectPool.js";import{watch as i,sync as a}from"../../../core/reactiveUtils.js";import{property as o,subclass as s}from"../../../core/accessorSupport/decorators.js";import{subtract as c,set as l,dot as u}from"../../../core/libs/gl-matrix-2/math/vec3.js";import{ZEROS as d,fromValues as f,create as p}from"../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{fromValues as m,ZEROS as h}from"../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{create as g,set as _}from"../../../geometry/support/aaBoundingBox.js";import{BufferViewVec3f as v}from"../../../geometry/support/buffer/BufferView.js";import{overlayRenderOccludedFlag as y}from"./OverlayRenderer.js";import{PatchRenderData as b}from"./PatchRenderData.js";import{TerrainAttributesCache as x}from"./TerrainAttributesCache.js";import{enableTerrainInternalChecks as S}from"./terrainUtils.js";import{TileRenderer as C}from"./TileRenderer.js";import{IteratorPreorder as w,fallsWithinLayerView as T,usesStencil as E,sortTiles as D,compareTiles as O}from"./tileUtils.js";import{getOverlayContentForOutputTerrain as k}from"../webgl-engine/core/shaderLibrary/terrain/Overlay.glsl.js";import{SyncRenderPlugin as A}from"../webgl-engine/effects/RenderPlugin.js";import{Vertices as j}from"../webgl-engine/lib/Attribute.js";import{IntersectorResultRay as M}from"../webgl-engine/lib/IntersectorResult.js";import{intersectAabbInvDirBefore as N,MeshIntersectionOptions as P,intersectTriangles as F}from"../webgl-engine/lib/RayIntersections.js";import{TriangleIntersectionData as I}from"../webgl-engine/lib/TriangleIntersectionData.js";import{terrainId as L,getVerticalOffsetTerrain as R}from"../webgl-engine/lib/verticalOffsetUtils.js";import{DrawParameters as z}from"../webgl-engine/materials/DrawParameters.js";import{hasShadowHighlights as B}from"../webgl-engine/shaders/ReceiveShadowsConfiguration.js";import{T as V}from"../../../chunks/Terrain.glsl.js";import{TerrainTechnique as H}from"../webgl-engine/shaders/TerrainTechnique.js";import{TerrainTechniqueConfiguration as U}from"../webgl-engine/shaders/TerrainTechniqueConfiguration.js";import{PrimitiveType as W}from"../../webgl/enums.js";const G=g();let K=class extends A{get visibleTiles(){return Array.from(this._visiblePatchesByOrigin.values()).flat()}get _isGlobal(){return this._view.stage.viewingMode===1}get _techniques(){return this._context.techniques}get _rctx(){return this._context.renderContext.rctx}get renderOccludedFlags(){return this._overlayRenderer.renderOccludedFlags}constructor(e,t,i,a,o){super({}),this._surface=e,this._overlayRenderer=t,this._allTiles=i,this._compressionTracker=a,this.type=7,this.isGround=!0,this._passParameters=new V,this._drawParameters=new z,this._renderDataPool=new r(()=>new b),this._visiblePatchesByOrigin=new Map,this._allPatchesByOrigin=new Map,this._patchesByOriginDirty=!0,this._patchSortingDirty=!0,this._tileIterator=new w,this._castShadows=!1,this._inViewshed=!1,this._cutFillEnabled=!1,this._tileRenderer=null,this._numTilesRendered=0,this._numTilesCulled=0,this._numOriginsRendered=0,this.produces=new Map([[1,()=>this._desiredSlot===1],[7,()=>this._desiredSlot===7],[9,()=>this._produces()&&this.renderOccludedFlags===y]]),this._tileSize=256,this._configuration=new U(e.isGlobal),this._tileTextureCache=new n((e,t)=>o.newCache(e,t),`TileTexture`),this.tileGeometryCache=new x(o)}normalizeCtorArgs(){return{}}initialize(){this.addHandles(i(()=>this._overlayRenderer.renderOccludedFlags,()=>this.requestRender(),a))}destroy(){this._tileTextureCache.destroy(),this.tileGeometryCache.destroy(),this._allTiles.prune(),this._tileRenderer=null}_produces(){return this.visible&&!!this._rootTiles&&!this.renderingDisabled}set renderingDisabled(e){this._set(`renderingDisabled`,!!e),this.setDirty()}set visible(e){this._set(`visible`,!!e),this.setDirty()}updateHeading(e){this._tileRenderer?.updateHeading(e)}set transparency(e){this._configuration.transparencyMode!==e&&(this._configuration.transparencyMode=e,this.requestRender())}get transparency(){return this._configuration.transparencyMode}get renderPatchBorders(){return this._configuration.tileBorders}set renderPatchBorders(e){this._configuration.tileBorders!==e&&(this._configuration.tileBorders=e,this.requestRender(),this.notifyChange(`renderPatchBorders`))}get layerViewUid(){return L}get slicePlaneEnabled(){return this._configuration.hasSlicePlane}set slicePlaneEnabled(e){this._configuration.hasSlicePlane!==e&&(this._configuration.hasSlicePlane=e,this.requestRender())}set textureFadingEnabled(e){this._configuration.textureFadingEnabled!==e&&(this._configuration.textureFadingEnabled=e,this.requestRender())}set pbrMode(e){this._configuration.pbrMode!==e&&(this._configuration.pbrMode=e,this.requestRender())}setRootTiles(e){this._rootTiles=e,this.setDirty()}setStencilEnabledLayerExtents(e){this._stencilEnabledLayerExtents=e,this._setSortingDirty()}set tileSize(e){this._tileSize=e,this._tileRenderer!=null&&(this._tileRenderer.tileSize=e),this.setDirty()}get tileSize(){return this._tileSize}_ensureRenderData(e){e.renderData||(e.renderData=this._renderDataPool.acquire(),e.renderData.init(e,this._getLocalOriginOfTile(e)),e.surface.tileElevationRangeChanged(e))}loadTile(e){this._ensureRenderData(e),this.updateTileGeometryState(e),this.reuseTextureFromParent(e)||this.updateTileTexture(e,32)}reuseTextureFromParent(e){let{parent:t}=e;if(!this._canReuseTextureFromParent(t,e))return!1;let n=m(e.lij[2]&1?.5:0,e.lij[1]&1?0:.5,.5,.5);return t.renderData?.reuseTexture(e.renderData,n)??!1}_canReuseTextureFromParent(e,t){if(!e)return!1;let{layerInfo:n,surface:r}=t;for(let i=0;i<n[1].length;i++){let n=r.layerViewByIndex(i,1);if(T(e,n)!==T(t,n))return!1}return!0}updateTileTexture(e,t){if(this._tileRenderer!=null){let n=t===32?0:2;if(!this._tileRenderer.updateTileTexture(e,n))return e.updateRenderData(1,n),!1;this.requestRender(),e.resetPendingUpdate(t)}return!0}updateTileGeometryState(e){for(let t of e.layerInfo[0])t.pendingUpdates&=-9;e.resetPendingUpdate(8);let t=e.renderData.updateGeometryState();return this._surface.updateElevationSources(e),t&&this.setDirty(),t}updateGeometryIfNeeded(e){e.loaded&&e.renderData.updateGeometryIfNeeded(this._rctx)}unloadTile(e){let t=e.renderData;t&&(t.releaseGeometry(),this._renderDataPool.release(t),t.clear(),e.renderData=null,e.surface.tileElevationRangeChanged(e,e.elevationBoundsMin,e.elevationBoundsMax),e.setMemoryDirty(),this.setDirty())}_getLocalOriginOfTile(e){let t=Math.max(0,Math.floor((e.level-3)/7)*7);if(this._isGlobal&&t===0)return d;for(;e.parent&&e.level>t;)e=e.parent;return e.centerAtSeaLevel}getStats(){return{numTilesRendered:this._numTilesRendered,numTilesCulled:this._numTilesCulled,numOriginsRendered:this._numOriginsRendered}}set wireframe(e){this._get(`wireframe`)!==e&&(this._set(`wireframe`,e),this.requestRender())}setDirty(e=1){this._patchesByOriginDirty=!0,this._context.requestRender(e)}_setSortingDirty(e=1){this._patchSortingDirty=!0,this._context.requestRender(e)}requestRender(e=1){this._context.requestRender(e)}initializeRenderContext(e){this._context=e,this._tileRenderer=new C(this._surface,this._rctx,this._tileSize,this._techniques,this._tileTextureCache,this._compressionTracker),this.updateTileBackground()}uninitializeRenderContext(){this._tileRenderer=t(this._tileRenderer)}intersectRay(e,t,n,r){let i=this._rootTiles;if(!i||e.options.selectOpaqueTerrainOnly&&e.options.selectionMode&&this.transparency!==0)return;let a=q,o=J;c(a,r,n),l(o,1/a[0],1/a[1],1/a[2]);let s=e.results.min,d=e.results.max,f=e.results.ground,p=e.options.store===0,m=!!e.results.ground.target,h=R(e.verticalOffset),g=e.tolerance,y,b=p&&s.distance!=null?s.distance:1/0,x=e.options,S=x.normalRequired||!x.backfacesTerrain,C=new P(g,!1,S),w=i=>{let l=i.renderData;if(!l?.vao)return;let m=l.geometry;_(G,m.boundingBox);let w=l.localOrigin;if(h!=null&&(h.localOrigin=w,h.applyToAabb(G)),Y[0]=n[0]-w[0],Y[1]=n[1]-w[1],Y[2]=n[2]-w[2],!N(G,Y,o,g,b))return;let T=(e,t,n,r)=>{e.set(this.type,i,t,n,r),b=p&&s.renderDistance!=null?s.renderDistance:1/0},E=(i,o,c)=>{(!S||c!=null)&&o>=0&&(x.backfacesTerrain||u(c,a)<0)&&(x.invisibleTerrain||!x.selectionMode||t==null||t(n,r,o))&&((f.renderDistance==null||o<f.renderDistance)&&T(f,i,o,c),x.isFiltered||(x.store===2&&(y==null?(y=new M(e.ray),T(y,i,o,c),e.results.all.push(y)):o<y.renderDistance&&T(y,i,o,c)),(s.renderDistance==null||o<s.renderDistance)&&T(s,i,o,c),x.store!==0&&(d.renderDistance==null||o>d.renderDistance)&&T(d,i,o,c)))},D=X;c(D,r,w);let{indices:O,indexCount:k}=m,A=m.vertexAttributes,P=A.getField(`position`,v),L=new j(P.typedBuffer,3,A.stride/4),R=k/3;!h&&R>200?(l.intersectionData??=new I(O,R,L),l.intersectionData.intersectRay(Y,D,C,E)):F(Y,D,0,R,(e,t)=>P.getVec(O[t],e),h,C,E)},T=this._tileIterator;T.reset(i);let D=e.options.invisibleTerrain;for(let e=T.next();e;e=T.next())(e.visible||D&&e.intersectsClippingArea)&&(h!=null||e.intersectsRay(n,a,g,b))&&(!m||!E(e,this._stencilEnabledLayerExtents))?w(e):T.skipSubtree()}processScaleRangeQueries(e,t){if(!t.done&&e)for(this._updatePatchGroups();e.updating&&!t.done;){e.prepare();for(let t of this._visiblePatchesByOrigin.values())for(let n of t)n.renderData?.textureReference!=null&&e.queriesForTile(n);e.process(),t.madeProgress()}}get _view(){return this._surface.view}get _desiredSlot(){if(!this._produces())return null;switch(this.transparency){case 0:return 1;case 1:case 2:return 7;case 3:case 4:return null}}acquireTechniques(e){let{shadowMap:t,viewshedEnabled:n,cutFillComputationEnabled:r,slot:i,hasEmission:a,useFloatBlend:o}=e.bind,s=!!has(`enable-feature:terrain-shadows`)&&t.enabled;if(s!==this._castShadows&&(this._castShadows=s,this._patchesByOriginDirty=!0),this._inViewshed!==n&&(this._inViewshed=n,this._patchesByOriginDirty=!0),this._cutFillEnabled!==r&&(this._cutFillEnabled=r,this._patchesByOriginDirty=!0),this.transparency===3)return null;if(i===9){if((e.renderOccludedMask&y)===0)return null}else if(i!==this._desiredSlot)return null;let c=this._configuration;switch(c.receiveGlobalIllumination=c.screenSpaceReflections=c.cloudReflections=c.receiveShadows=c.hasShadowHighlights=c.receiveAmbientOcclusion=c.renderOccluded=c.hasHighlightMixTexture=!1,c.hasEmission=a,c.overlayMode=this._overlayRenderer.mode,c.useFloatBlend=o.value,e.output){case 0:case 1:case 2:{let n=e.bind;c.screenSpaceReflections=n.hasScreenSpaceReflections,c.cloudReflections=n.clouds.data!=null;let r=i===9;return c.receiveShadows=t.ready&&!r,c.hasShadowHighlights=B(c,e.bind),c.renderOccluded=r,c.receiveAmbientOcclusion=!r&&n.ssao!=null,c.receiveGlobalIllumination=!r&&n.globalIlluminationEnabled,this._acquireTechnique(e.output)}case 5:case 7:return this._castShadows?this._acquireTechnique(5):null;case 8:return this._inViewshed?this._acquireTechnique(8):null;case 9:return this._cutFillEnabled?this._acquireTechnique(9):null;case 3:case 4:case 11:return this._acquireTechnique(e.output);case 10:return c.hasHighlightMixTexture=e.bind.highlightMixTexture!=null,this._overlayRenderer.hasHighlights?this._acquireTechnique(10):null}return null}render(e,t){switch(this._updatePatchGroups(),this._passParameters.useStencil=!1,this._passParameters.overlayContent=k(e.output,e.bind),e.output){case 0:case 1:case 2:return this._renderMaterialPass(e,t);case 3:case 4:case 11:return this._renderAuxiliaryPass(e,t,this._visiblePatchesByOrigin);case 10:{let n=e.bind.highlight?.name;n&&this._overlayRenderer.hasHighlights&&this._overlayRenderer.renders(2)&&this._overlayRenderer.hasHighlight(n)&&this._renderAuxiliaryPass(e,t,this._visiblePatchesByOrigin);break}case 5:case 7:case 8:case 9:return this._renderAuxiliaryPass(e,t,this._allPatchesByOrigin)}}updateTileBackground(e){if(this._tileRenderer==null)return;let t=this._tileRenderer,n;if(e!=null){let t=e.toUnitRGBA();n=f(t[0]||0,t[1]||0,t[2]||0)}t.setBackground(n),this._allTiles.forAll(e=>{t.updateTileTexture(e,0)||e.updateRenderData(1,0)}),this._configuration.tileBlendInput=t.backgroundIsGrid?2:t.backgroundColor==null?0:1,this.requestRender()}_updatePatchGroups(){if(this._patchesByOriginDirty&&(this._rebuildPatchGroups(),this._patchesByOriginDirty=!1,this._patchSortingDirty=!0),this._patchSortingDirty){let e=Array.from(this._visiblePatchesByOrigin.values()),t=this._stencilEnabledLayerExtents;for(let n of e)D(n,t);e.sort((e,t)=>O(e[0],t[0])),this._visiblePatchesByOrigin=new Map(e.map(e=>[e[0].renderData.localOrigin,e])),this.notifyChange(`visibleTiles`),this._patchSortingDirty=!1}}_rebuildPatchGroups(){let e=this._rootTiles;if(e!=null){e[0]?.surface.checkAllTilesWaterproofness(`render-patch-groups`),this._visiblePatchesByOrigin.clear(),this._allPatchesByOrigin.clear();for(let t of e)this._rebuildPatchGroupsForRootTile(t)}}_rebuildPatchGroupsForRootTile(e){let t=this._tileIterator;for(t.resetOne(e);!t.done;){let e=t.next(),n=e.renderData;if(!n){this._numTilesCulled++;continue}let r=n.localOrigin;if(this._castShadows||this._inViewshed||this._cutFillEnabled){let t=this._allPatchesByOrigin.get(r);t||(t=[],this._allPatchesByOrigin.set(r,t)),t.push(e)}if(!e.visible){this._numTilesCulled++,t.skipSubtree();continue}let i=this._visiblePatchesByOrigin.get(r);i||(i=[],this._visiblePatchesByOrigin.set(r,i)),i.push(e),t.skipSubtree()}}_renderAuxiliaryPass(e,t,n){let{rctx:r,bind:i}=e;r.bindTechnique(t,i,this._passParameters);let a=!!this._stencilEnabledLayerExtents?.length;n.forEach(n=>{this._drawParameters.origin=n[0].renderData.localOrigin,t.program.bindDraw(i,this._passParameters,this._drawParameters);for(let r=0;r<n.length;r++)this._renderPatch(e,t,n[r],W.TRIANGLES,a,this._passParameters.overlayContent===null)}),r.bindVAO(null)}_renderMaterialPass(e,t){let{rctx:n,bind:r}=e,i=n.bindTechnique(t,r,this._passParameters);this._numTilesRendered=0,this._numTilesCulled=0,this._numOriginsRendered=0;let a=r.slot===9;a&&(i.bindTexture(`tex`,n.emptyTexture),i.setUniform3fv(`textureOpacities`,d),i.setUniform4fv(`texOffsetAndScale`,h));let o=this._tileRenderer?.backgroundColor==null?d:this._tileRenderer.backgroundColor;this._configuration.tileBlendInput===1&&i.setUniform3fv(`backgroundColor`,o);let s=!!this._stencilEnabledLayerExtents?.length,c=this.wireframe?W.LINES:W.TRIANGLES;this._configuration.textureFadingEnabled&&i.bindTexture(`texNext`,n.emptyTexture);for(let n of this._visiblePatchesByOrigin.values()){this._drawParameters.origin=n[0].renderData.localOrigin,t.program.bindDraw(r,this._passParameters,this._drawParameters),this._numOriginsRendered++;for(let r of n){let n=r.renderData,o=n.textureReference;if(o!=null){if(!a){i.setUniform4fv(`texOffsetAndScale`,o.offsetAndScale),i.bindTexture(`tex`,o.texture.texture);let e=n.textureFadeFactor,t=e<1?n.nextTextureReference:null;this._configuration.textureFadingEnabled&&t&&e<1?(i.setUniform1f(`fadeFactor`,e),i.setUniform4fv(`nextTexOffsetAndScale`,t.offsetAndScale),i.setUniform3fv(`nextTexOpacities`,t.opacities),i.bindTexture(`texNext`,t.texture.texture)):i.setUniform1f(`fadeFactor`,1),n.textureIsFading&&this.requestRender(2),i.setUniform3fv(`textureOpacities`,o.opacities)}this._renderPatch(e,t,r,c,s),r.renderOrder=this._numTilesRendered,this._numTilesRendered++}}}n.bindVAO(null)}_renderPatch(e,t,n,r,i,a=!1){let o=n.renderData,s=o.vao,c=s?.indexBuffer;if(!s||c==null){S&&console.error(`Rendered tile with no indices: `,n.lij,` : `,o);return}let l=t.program;!a&&!this._overlayRenderer.isEmpty&&this._bindOverlayPatchData(l,o.overlay);let{rctx:u,bind:d}=e;i&&(this._passParameters.useStencil=E(n,this._stencilEnabledLayerExtents),u.setPipelineState(t.getPipeline(d,this._passParameters)));let f=o.geometry.indexCount;u.bindVAO(s),l.assertCompatibleVertexAttributeLocations(s),u.drawElements(r,f,c.indexType,0)}_bindOverlayPatchData(e,t){e.setUniform4fv(`overlayTexOffset`,t.offsets),e.setUniform4fv(`overlayTexScale`,t.scales)}_acquireTechnique(e){return this._configuration.output=e,this._techniques.get(H,this._configuration)}get test(){}hasHighlight(e){return this._overlayRenderer.hasHighlight(e)}};e([o({readOnly:!0})],K.prototype,`visibleTiles`,null),e([o({readOnly:!0})],K.prototype,`_isGlobal`,null),e([o()],K.prototype,`renderOccludedFlags`,null),e([o({value:!1})],K.prototype,`renderingDisabled`,null),e([o({value:!0})],K.prototype,`visible`,null),e([o()],K.prototype,`renderPatchBorders`,null),e([o()],K.prototype,`wireframe`,null),K=e([s(`esri.views.3d.terrain.TerrainRenderer`)],K);const q=p(),J=p(),Y=p(),X=p();export{K as TerrainRenderer};