@arcgis/core 4.24.0-next.20220329 → 4.24.0-next.20220401

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 (456) hide show
  1. package/PopupTemplate.js +1 -1
  2. package/WebMap.js +1 -1
  3. package/WebScene.js +1 -1
  4. package/analysis/LineOfSightAnalysisObserver.js +1 -1
  5. package/analysis/LineOfSightAnalysisTarget.js +1 -1
  6. package/arcade/featureset/actions/Adapted.js +1 -1
  7. package/arcade/featureset/sources/FeatureLayerDynamic.js +1 -1
  8. package/arcade/featureset/sources/FeatureLayerMemory.js +1 -1
  9. package/arcade/featureset/sources/FeatureLayerRelated.js +1 -1
  10. package/arcade/featureset/support/FeatureSet.js +1 -1
  11. package/arcade/featureset/support/RecentlyUsedCache.js +1 -1
  12. package/arcade/featureset/support/shared.js +1 -1
  13. package/arcade/functions/convertdirection.js +1 -1
  14. package/arcade/lib/character.js +1 -1
  15. package/arcade/lib/scanner.js +1 -1
  16. package/arcade/lib/tokenizer.js +1 -1
  17. package/arcade/request.js +1 -1
  18. package/arcade/treeAnalysis.js +1 -1
  19. package/assets/esri/core/workers/RemoteClient.js +1 -1
  20. package/assets/esri/core/workers/chunks/0bfedb1dbdff8205e468.js +1 -0
  21. package/assets/esri/core/workers/chunks/{5e472c89a38d6a42b84d.js → 0e29250c24a3a7b1ce13.js} +1 -1
  22. package/assets/esri/core/workers/chunks/0eb9c9477d36cd212f8b.js +1 -0
  23. package/assets/esri/core/workers/chunks/10779a256841c37f2429.js +1 -0
  24. package/assets/esri/core/workers/chunks/10a119889d1ab13402a3.js +1 -0
  25. package/assets/esri/core/workers/chunks/125b14c2ccd96d7c20c2.js +1 -0
  26. package/assets/esri/core/workers/chunks/23ec33a30db201e8b2c3.js +1 -0
  27. package/assets/esri/core/workers/chunks/2530e8ccf6e12787ce76.js +1 -0
  28. package/assets/esri/core/workers/chunks/2d9e97ba5b50aec4dd01.js +1 -0
  29. package/assets/esri/core/workers/chunks/365dc146398420f13f82.js +1 -0
  30. package/assets/esri/core/workers/chunks/3ae2827e8d55d6713d20.js +1 -0
  31. package/assets/esri/core/workers/chunks/3e3eebaa0844742db2f2.js +1 -0
  32. package/assets/esri/core/workers/chunks/3fd5b2d6eccd9098d492.js +1 -0
  33. package/assets/esri/core/workers/chunks/404f1d7bce014c7e6965.js +1 -0
  34. package/assets/esri/core/workers/chunks/411b7777bb5e943c156f.js +1 -0
  35. package/assets/esri/core/workers/chunks/{12ca192a5233bb2875d0.js → 4312902ab6e42fbe119b.js} +1 -1
  36. package/assets/esri/core/workers/chunks/{4ef07f50da39f8607c1c.js → 44e95e87bd9e820aeb53.js} +1 -1
  37. package/assets/esri/core/workers/chunks/{4d4c5e535d8b9ceb865a.js → 4810edf605838d07e5c5.js} +1 -1
  38. package/assets/esri/core/workers/chunks/4bce446391176a9d4588.js +1 -0
  39. package/assets/esri/core/workers/chunks/52a0e387073ea264e194.js +1 -0
  40. package/assets/esri/core/workers/chunks/560234694f3e53802aff.js +1 -0
  41. package/assets/esri/core/workers/chunks/5633710daeb3bbb79bcf.js +1 -0
  42. package/assets/esri/core/workers/chunks/5682039666f874836451.js +1 -0
  43. package/assets/esri/core/workers/chunks/6f01905936396fe87865.js +1 -0
  44. package/assets/esri/core/workers/chunks/6f7917da7166e8c6854b.js +1 -0
  45. package/assets/esri/core/workers/chunks/7388824eac8da01ea03d.js +1 -0
  46. package/assets/esri/core/workers/chunks/7745efef7d5119d0b087.js +1 -0
  47. package/assets/esri/core/workers/chunks/794b47764ebb0257ed41.js +1 -0
  48. package/assets/esri/core/workers/chunks/{da64dedf9270b64f42b2.js → 79bdb26244ec7b4472fe.js} +1 -1
  49. package/assets/esri/core/workers/chunks/79ec28b3e3c57fe026aa.js +1 -0
  50. package/assets/esri/core/workers/chunks/81e9d860a044acec74ce.js +1 -0
  51. package/assets/esri/core/workers/chunks/831dc0187f71e658550c.js +1 -0
  52. package/assets/esri/core/workers/chunks/86ad6b020c01850d9095.js +1 -0
  53. package/assets/esri/core/workers/chunks/{fb7397da8d4ec2ae4587.js → 87458fbf395338511662.js} +1 -1
  54. package/assets/esri/core/workers/chunks/{1a859be598ad96bb4719.js → 8771296b537f366596c4.js} +18 -18
  55. package/assets/esri/core/workers/chunks/8958cd555f4887526e8b.js +1 -0
  56. package/assets/esri/core/workers/chunks/{e57b71ba70f088a3a052.js → 90dcd86cdef90099abfa.js} +1 -1
  57. package/assets/esri/core/workers/chunks/93067e27eea5844edc6c.js +1 -0
  58. package/assets/esri/core/workers/chunks/{9fbee2d9bf50c4c148c6.js → 9a146c9e9b4bf7fba88f.js} +1 -1
  59. package/assets/esri/core/workers/chunks/9b9821772b6cbe189fe0.js +1 -0
  60. package/assets/esri/core/workers/chunks/{6c4ce530b493c6f7c430.js → 9df2f9f7c28b31866be8.js} +1 -1
  61. package/assets/esri/core/workers/chunks/{d0620ce99b620621d8bc.js → a0552044e123a3c51ddf.js} +1 -1
  62. package/assets/esri/core/workers/chunks/acc1a4acd57f5657e782.js +1 -0
  63. package/assets/esri/core/workers/chunks/b055ae7c54796751b64c.js +1 -0
  64. package/assets/esri/core/workers/chunks/{acc2cfb116fee7f82ae9.js → b26bd8fde2fc65bb67fb.js} +1 -1
  65. package/assets/esri/core/workers/chunks/{9b45b94c4dbdc8d2c5fd.js → b34ba22c7a5adce8a7a2.js} +1 -1
  66. package/assets/esri/core/workers/chunks/b75665d0bf417c6ef24a.js +1 -0
  67. package/assets/esri/core/workers/chunks/bd50ec30688463b821d1.js +1 -0
  68. package/assets/esri/core/workers/chunks/c28f7ae4756ad1ba94bd.js +1 -0
  69. package/assets/esri/core/workers/chunks/c4f713959d4115b87c6c.js +1 -0
  70. package/assets/esri/core/workers/chunks/c58aa209492bd94b7aad.js +1 -0
  71. package/assets/esri/core/workers/chunks/{9b117097b7be0efd21d4.js → c59b0b58e24e6a60cf3e.js} +1 -1
  72. package/assets/esri/core/workers/chunks/c7bd5a4d318299388645.js +1 -0
  73. package/assets/esri/core/workers/chunks/c7cee13a962396b23a5e.js +1 -0
  74. package/assets/esri/core/workers/chunks/{3bbff5ea1ea0e955c592.js → cd3679fa86129ebabfdf.js} +1 -1
  75. package/assets/esri/core/workers/chunks/{1a36dc0daffd536ea44d.js → cee7ce362860717713bf.js} +1 -1
  76. package/assets/esri/core/workers/chunks/cf463d6309f14df2f2fa.js +1 -0
  77. package/assets/esri/core/workers/chunks/{224c0e64160bdc170051.js → d076627bb7dadea89e89.js} +1 -1
  78. package/assets/esri/core/workers/chunks/{fff4200bc61b82dd6193.js → d1d1c45243af614f2e74.js} +1 -1
  79. package/assets/esri/core/workers/chunks/{1e0498dc9836658d9aba.js → d5fd12ea541c1a6b7fce.js} +1 -1
  80. package/assets/esri/core/workers/chunks/{10322d990cda5aedf2f0.js → d6e32ca237ad9309c76a.js} +1 -1
  81. package/assets/esri/core/workers/chunks/e06ad3a3d71154fed654.js +1 -0
  82. package/assets/esri/core/workers/chunks/{7a77d4cd27c30f1a5cae.js → ee3387a43dfbb3df23e1.js} +1 -1
  83. package/assets/esri/core/workers/chunks/{5d5fa2b1fc48a17eb9ab.js → f4fc165420d449e442b8.js} +1 -1
  84. package/assets/esri/core/workers/chunks/{3d6d9906a534ddd8fa37.js → f5ee03f3fca7a75192de.js} +1 -1
  85. package/assets/esri/themes/base/widgets/_Daylight.scss +1 -1
  86. package/assets/esri/themes/base/widgets/_ElevationProfile.scss +1 -1
  87. package/assets/esri/themes/base/widgets/_Weather.scss +1 -1
  88. package/assets/esri/themes/base/widgets/_Widget.scss +12 -0
  89. package/assets/esri/themes/dark/main.css +1 -1
  90. package/assets/esri/themes/dark-blue/main.css +1 -1
  91. package/assets/esri/themes/dark-green/main.css +1 -1
  92. package/assets/esri/themes/dark-purple/main.css +1 -1
  93. package/assets/esri/themes/dark-red/main.css +1 -1
  94. package/assets/esri/themes/light/main.css +1 -1
  95. package/assets/esri/themes/light/view.css +1 -1
  96. package/assets/esri/themes/light-blue/main.css +1 -1
  97. package/assets/esri/themes/light-green/main.css +1 -1
  98. package/assets/esri/themes/light-purple/main.css +1 -1
  99. package/assets/esri/themes/light-red/main.css +1 -1
  100. package/chunks/ComponentShader.glsl.js +25 -25
  101. package/chunks/HighlightApply.glsl.js +36 -0
  102. package/chunks/HighlightBlur.glsl.js +26 -0
  103. package/chunks/HighlightDownsample.glsl.js +12 -0
  104. package/chunks/ImageMaterial.glsl.js +8 -8
  105. package/chunks/LineCallout.glsl.js +1 -1
  106. package/chunks/Pattern.glsl.js +2 -2
  107. package/chunks/SimpleAtmosphere.glsl.js +7 -7
  108. package/chunks/Stars.glsl.js +1 -1
  109. package/chunks/arcade.js +1 -1
  110. package/chunks/color.js +1 -1
  111. package/chunks/languageUtils.js +1 -1
  112. package/chunks/mat3.js +1 -1
  113. package/copyright.txt +2 -2
  114. package/core/AsyncUpdate.js +1 -1
  115. package/core/Evented.js +1 -1
  116. package/core/PooledArray.js +1 -1
  117. package/core/accessorSupport/diffUtils.js +1 -1
  118. package/core/accessorSupport/get.js +1 -1
  119. package/core/accessorSupport/read.js +1 -1
  120. package/core/accessorSupport/set.js +1 -1
  121. package/core/accessorSupport/tracking.js +1 -1
  122. package/core/accessorSupport/utils.js +1 -1
  123. package/core/arrayUtils.js +1 -1
  124. package/core/libs/gl-matrix-2/mat3.js +1 -1
  125. package/core/libs/gl-matrix-2/math/mat3.js +1 -1
  126. package/core/number.js +1 -1
  127. package/core/object.js +1 -1
  128. package/core/string.js +1 -1
  129. package/core/unitUtils.js +1 -1
  130. package/core/watchUtils.js +1 -1
  131. package/core/workers/RemoteClient.js +1 -1
  132. package/exports/csv.js +1 -1
  133. package/geometry/support/heightModelInfoUtils.js +1 -1
  134. package/geometry/support/meshUtils/exporters/gltf/geometry.js +1 -1
  135. package/geometry/support/normalizeUtils.js +1 -1
  136. package/identity/IdentityManagerBase.js +1 -1
  137. package/interfaces.d.ts +155 -20
  138. package/layers/ImageryLayer.js +1 -1
  139. package/layers/MapImageLayer.js +1 -1
  140. package/layers/RouteLayer.js +1 -1
  141. package/layers/SceneLayer.js +1 -1
  142. package/layers/SubtypeGroupLayer.js +1 -1
  143. package/layers/TileLayer.js +1 -1
  144. package/layers/VectorTileLayer.js +1 -1
  145. package/layers/WMSLayer.js +1 -1
  146. package/layers/WMTSLayer.js +1 -1
  147. package/layers/WebTileLayer.js +1 -1
  148. package/layers/graphics/data/AttributesBuilder.js +1 -1
  149. package/layers/graphics/data/QueryEngine.js +1 -1
  150. package/layers/graphics/editingSupport.js +1 -1
  151. package/layers/graphics/sources/connections/GeoEventConnection.js +1 -1
  152. package/layers/graphics/sources/support/MemorySourceWorker.js +1 -1
  153. package/layers/graphics/sources/support/inferenceUtils.js +1 -1
  154. package/layers/mixins/ArcGISCachedService.js +1 -1
  155. package/layers/mixins/ArcGISImageService.js +1 -1
  156. package/layers/ogc/ogcFeatureUtils.js +1 -1
  157. package/layers/support/ExportImageServiceParameters.js +1 -1
  158. package/layers/support/PixelBlock.js +1 -1
  159. package/layers/support/RasterJobHandler.js +1 -1
  160. package/layers/support/SpriteSource.js +1 -1
  161. package/layers/support/Sublayer.js +1 -1
  162. package/layers/support/TilemapCache.js +1 -1
  163. package/layers/support/WMTSSublayer.js +1 -1
  164. package/layers/support/arcgisLayerUrl.js +1 -1
  165. package/layers/support/fieldUtils.js +1 -1
  166. package/layers/support/kmlUtils.js +1 -1
  167. package/layers/support/layerUtils.js +1 -1
  168. package/layers/support/rasterDatasets/ImageAuxRaster.js +1 -1
  169. package/layers/support/rasterDatasets/ImageServerRaster.js +1 -1
  170. package/layers/support/rasterDatasets/RasterFactory.js +1 -1
  171. package/layers/support/rasterDatasets/WCSRaster.js +1 -1
  172. package/layers/support/rasterDatasets/multipartParser.js +1 -1
  173. package/layers/support/rasterDatasets/wcsCoverageParser.js +1 -1
  174. package/layers/support/rasterDatasets/xmlUtilities.js +1 -1
  175. package/layers/support/rasterFormats/RasterCodec.js +1 -1
  176. package/layers/support/rasterFormats/TiffDecoder.js +1 -1
  177. package/layers/support/rasterFunctions/pixelUtils.js +1 -1
  178. package/layers/support/vectorTileLayerLoader.js +1 -1
  179. package/layers/support/wmsUtils.js +1 -1
  180. package/layers/support/wmtsUtils.js +1 -1
  181. package/libs/i3s/I3SModule.js +1 -1
  182. package/libs/vxl/VxlModule.js +1 -1
  183. package/package.json +1 -1
  184. package/portal/Portal.js +1 -1
  185. package/portal/PortalItem.js +1 -1
  186. package/portal/schemas/definitions.js +1 -1
  187. package/portal/support/layersLoader.js +1 -1
  188. package/portal/support/portalItemUtils.js +1 -1
  189. package/portal/support/portalLayers.js +1 -1
  190. package/renderers/support/AuthoringInfoVisualVariable.js +1 -1
  191. package/renderers/support/DictionaryLoader.js +1 -1
  192. package/renderers/support/RasterSymbolizer.js +1 -1
  193. package/renderers/support/numberUtils.js +1 -1
  194. package/renderers/support/rasterRendererHelper.js +1 -1
  195. package/renderers/support/utils.js +1 -1
  196. package/request.js +1 -1
  197. package/rest/imageService.js +1 -1
  198. package/rest/operations/find.js +1 -1
  199. package/rest/query/operations/query.js +1 -1
  200. package/rest/query/operations/queryRelatedRecords.js +1 -1
  201. package/rest/query/operations/queryTopFeatures.js +1 -1
  202. package/rest/support/DirectionLine.js +1 -1
  203. package/rest/support/DirectionPoint.js +1 -1
  204. package/rest/support/PointBarrier.js +1 -1
  205. package/rest/support/PolygonBarrier.js +1 -1
  206. package/rest/support/PolylineBarrier.js +1 -1
  207. package/rest/support/RouteInfo.js +1 -1
  208. package/rest/support/Stop.js +1 -1
  209. package/smartMapping/labels/clusters.js +1 -1
  210. package/smartMapping/popup/dotDensity.js +1 -1
  211. package/smartMapping/popup/support/clusterUtils.js +1 -1
  212. package/smartMapping/popup/support/utils.js +1 -1
  213. package/smartMapping/raster/support/utils.js +1 -1
  214. package/smartMapping/renderers/color.js +1 -1
  215. package/smartMapping/renderers/location.js +1 -1
  216. package/smartMapping/renderers/predominance.js +1 -1
  217. package/smartMapping/renderers/relationship.js +1 -1
  218. package/smartMapping/renderers/size.js +1 -1
  219. package/smartMapping/renderers/support/utils.js +1 -1
  220. package/smartMapping/renderers/type.js +1 -1
  221. package/smartMapping/renderers/univariateColorSize.js +1 -1
  222. package/smartMapping/statistics/summaryStatisticsForAge.js +1 -1
  223. package/smartMapping/statistics/support/ageUtils.js +1 -1
  224. package/smartMapping/statistics/support/utils.js +1 -1
  225. package/smartMapping/support/adapters/SceneLayerAdapter.js +1 -1
  226. package/smartMapping/support/adapters/support/utils.js +1 -1
  227. package/smartMapping/support/utils.js +1 -1
  228. package/smartMapping/symbology/support/Theme.js +1 -1
  229. package/smartMapping/symbology/support/colorRamps.js +1 -1
  230. package/smartMapping/symbology/support/symbologyUtils.js +1 -1
  231. package/smartMapping/symbology/support/utils.js +1 -1
  232. package/statistics/utils.js +1 -1
  233. package/support/basemapDefinitions.js +1 -1
  234. package/support/basemapUtils.js +1 -1
  235. package/support/elevationInfoUtils.js +1 -1
  236. package/support/popupUtils.js +1 -1
  237. package/support/revision.js +1 -1
  238. package/symbols/cim/CIMSymbolRasterizer.js +1 -1
  239. package/symbols/cim/cimAnalyzer.js +1 -1
  240. package/symbols/cim/utils.js +1 -1
  241. package/symbols/support/previewSymbol3D.js +1 -1
  242. package/symbols/support/renderUtils.js +1 -1
  243. package/symbols/support/symbolLayerUtils.js +1 -1
  244. package/views/2d/engine/Bitmap.js +1 -1
  245. package/views/2d/engine/flow/FlowDisplayObject.js +1 -1
  246. package/views/2d/engine/imagery/RasterBitmap.js +1 -1
  247. package/views/2d/engine/imagery/RasterVFDisplayObject.js +1 -1
  248. package/views/2d/engine/vectorTiles/TextShaping.js +1 -1
  249. package/views/2d/engine/vectorTiles/TileParser.js +1 -1
  250. package/views/2d/engine/vectorTiles/buckets/SymbolBucket.js +1 -1
  251. package/views/2d/engine/vectorTiles/expression/expression.js +1 -1
  252. package/views/2d/engine/vectorTiles/shaders/VTLMaterial.js +1 -1
  253. package/views/2d/engine/webgl/Profiler.js +1 -1
  254. package/views/2d/engine/webgl/Utils.js +1 -1
  255. package/views/2d/engine/webgl/brushes/WGLGeometryBrush.js +1 -1
  256. package/views/2d/engine/webgl/definitions.js +1 -1
  257. package/views/2d/engine/webgl/effects/HittestEffect.js +1 -1
  258. package/views/2d/engine/webgl/effects/HittestEffectVTL.js +1 -1
  259. package/views/2d/engine/webgl/mesh/templates/WGLTemplateStore.js +1 -1
  260. package/views/2d/engine/webgl/shaders/sources/shaderRepository.js +1 -1
  261. package/views/2d/engine/webgl/util/Lock.js +1 -1
  262. package/views/2d/layers/RouteLayerView2D.js +1 -1
  263. package/views/2d/layers/features/schemaUtils.js +1 -1
  264. package/views/2d/layers/features/sources/SnapshotFeatureSource.js +1 -1
  265. package/views/2d/layers/features/support/AttributeStore.js +1 -1
  266. package/views/2d/layers/features/support/FeatureSetReaderPBF.js +1 -1
  267. package/views/2d/layers/features/tileRenderers/SymbolTileRenderer.js +1 -1
  268. package/views/2d/layers/support/webStyleUtils.js +1 -1
  269. package/views/2d/support/Timeline.js +1 -1
  270. package/views/3d/analysis/LineOfSight/LineOfSightController.js +1 -1
  271. package/views/3d/analysis/LineOfSight/LineOfSightIntersectionResult.js +1 -1
  272. package/views/3d/analysis/LineOfSight/LineOfSightRayIntersector.js +1 -1
  273. package/views/3d/analysis/Slice/SliceController.js +1 -1
  274. package/views/3d/environment/PanoramicAtmosphere.js +1 -1
  275. package/views/3d/environment/SceneViewAtmosphere.js +1 -1
  276. package/views/3d/environment/StarsTechnique.js +1 -1
  277. package/views/3d/externalRenderers/ExternalRendererStore.js +1 -1
  278. package/views/3d/glTF/loader.js +1 -1
  279. package/views/3d/interactive/analysisTools/lineOfSight/LineOfSightTool.js +1 -1
  280. package/views/3d/interactive/analysisTools/slice/SliceTool.js +1 -1
  281. package/views/3d/layers/BuildingComponentSublayerView3D.js +1 -1
  282. package/views/3d/layers/FeatureLikeLayerView3D.js +1 -1
  283. package/views/3d/layers/I3SMeshView3D.js +1 -1
  284. package/views/3d/layers/ImageryLayerView3D.js +1 -1
  285. package/views/3d/layers/LayerView3D.js +1 -1
  286. package/views/3d/layers/PointCloudLayerView3D.js +1 -1
  287. package/views/3d/layers/RouteLayerView3D.js +1 -1
  288. package/views/3d/layers/SceneLayerGraphicsView3D.js +1 -1
  289. package/views/3d/layers/VectorTileLayerView3D.js +1 -1
  290. package/views/3d/layers/graphics/objectResourceUtils.js +1 -1
  291. package/views/3d/layers/i3s/I3SIndex.js +1 -1
  292. package/views/3d/layers/i3s/I3SMeshViewFilter.js +1 -1
  293. package/views/3d/layers/i3s/I3SNodeLoader.js +1 -1
  294. package/views/3d/layers/i3s/I3SUtil.js +1 -1
  295. package/views/3d/layers/i3s/IDBMockCache.js +5 -0
  296. package/views/3d/layers/i3s/PointCloudWorkerUtil.js +1 -1
  297. package/views/3d/layers/support/PopupSceneLayerView.js +1 -1
  298. package/views/3d/state/ViewStateManager.js +1 -1
  299. package/views/3d/state/controllers/RotateController.js +1 -1
  300. package/views/3d/state/controllers/global/PinchAndPanController.js +1 -1
  301. package/views/3d/state/controllers/global/ZoomController.js +1 -1
  302. package/views/3d/state/controllers/global/ZoomStepController.js +1 -1
  303. package/views/3d/state/controllers/local/PinchAndPanController.js +1 -1
  304. package/views/3d/state/controllers/local/ZoomController.js +1 -1
  305. package/views/3d/support/HighlightOptions.js +1 -1
  306. package/views/3d/support/buffer/InterleavedLayout.js +1 -1
  307. package/views/3d/support/debugFlags.js +1 -1
  308. package/views/3d/support/orientedBoundingBox.js +1 -1
  309. package/views/3d/terrain/TerrainSurface.js +1 -1
  310. package/views/3d/webgl-engine/Stage.js +1 -1
  311. package/views/3d/webgl-engine/collections/Component/ComponentObjectCollection.js +1 -1
  312. package/views/3d/webgl-engine/collections/Component/DepthRange.js +1 -1
  313. package/views/3d/webgl-engine/core/shaderLibrary/ForwardLinearDepth.glsl.js +3 -3
  314. package/views/3d/webgl-engine/core/shaderLibrary/attributes/VertexPosition.glsl.js +5 -5
  315. package/views/3d/webgl-engine/core/shaderModules/ShaderBuilder.js +1 -1
  316. package/views/3d/webgl-engine/lib/HighlightHelper.js +1 -1
  317. package/views/3d/webgl-engine/lib/Object3D.js +1 -1
  318. package/views/3d/webgl-engine/lib/Renderer.js +1 -1
  319. package/views/3d/webgl-engine/lib/edgeRendering/EdgeRenderer.js +1 -1
  320. package/views/3d/webgl-engine/lib/edgeRendering/EdgeShaderParameters.js +1 -1
  321. package/views/3d/webgl-engine/lib/edgeRendering/EdgeView.js +1 -1
  322. package/views/3d/webgl-engine/lib/lodRendering/InstanceData.js +1 -1
  323. package/views/3d/webgl-engine/materials/DefaultMaterial.js +1 -1
  324. package/views/3d/webgl-engine/materials/PathTechnique.js +1 -1
  325. package/views/3d/webgl-engine/materials/WaterTechnique.js +1 -1
  326. package/views/3d/webgl-engine/parts/ScreenshotManager.js +1 -1
  327. package/views/3d/webgl-engine/shaders/HighlightApply.glsl.js +5 -0
  328. package/views/3d/webgl-engine/shaders/HighlightApplyTechnique.js +5 -0
  329. package/views/3d/webgl-engine/shaders/HighlightBlur.glsl.js +5 -0
  330. package/views/3d/webgl-engine/shaders/HighlightBlurTechnique.js +5 -0
  331. package/views/3d/webgl-engine/shaders/HighlightDownsample.glsl.js +5 -0
  332. package/views/3d/webgl-engine/shaders/HighlightDownsampleTechnique.js +5 -0
  333. package/views/3d/webgl-engine/shaders/HighlightOptions.js +4 -0
  334. package/views/3d/webgl-engine/shaders/HighlightPassParameters.js +5 -0
  335. package/views/3d/webgl-engine/shaders/ImageMaterial.glsl.js +1 -1
  336. package/views/3d/webgl-engine/shaders/ImageMaterialTechnique.js +1 -1
  337. package/views/3d/webgl-engine/shaders/NativeLineTechnique.js +1 -1
  338. package/views/3d/webgl-engine/shaders/PatternTechnique.js +1 -1
  339. package/views/3d/webgl-engine/shaders/sources/edgeRenderer/AdjustProjectedPosition.glsl.js +5 -7
  340. package/views/3d/webgl-engine/shaders/sources/edgeRenderer/EdgeUtil.glsl.js +14 -14
  341. package/views/SceneView.js +1 -1
  342. package/views/draw/support/GraphicMover.js +1 -1
  343. package/views/input/InputHandler.js +1 -1
  344. package/views/input/InputManager.js +1 -1
  345. package/views/layers/ImageryTileLayerView.js +1 -1
  346. package/views/layers/MapImageLayerView.js +1 -1
  347. package/views/layers/TileLayerView.js +1 -1
  348. package/views/layers/support/popupUtils.js +1 -1
  349. package/views/support/DefaultsFromMap.js +1 -1
  350. package/views/support/Scheduler.js +1 -1
  351. package/views/support/screenshotUtils.js +1 -1
  352. package/views/ui/DefaultUI.js +1 -1
  353. package/views/webgl/ShaderTranspiler.js +1 -1
  354. package/webscene/Slide.js +1 -1
  355. package/webscene/spec-certification/spec.js +1 -1
  356. package/widgets/AreaMeasurement3D/AreaMeasurement3DViewModel.js +1 -1
  357. package/widgets/Attachments/support/attachmentUtils.js +1 -1
  358. package/widgets/Attachments.js +1 -1
  359. package/widgets/Attribution.js +1 -1
  360. package/widgets/BasemapLayerList.js +1 -1
  361. package/widgets/Bookmarks/BookmarksViewModel.js +1 -1
  362. package/widgets/Bookmarks.js +1 -1
  363. package/widgets/BuildingExplorer/support/filterUtils.js +1 -1
  364. package/widgets/CoordinateConversion/CoordinateConversionViewModel.js +1 -1
  365. package/widgets/CoordinateConversion/support/coordinateConversionUtils.js +1 -1
  366. package/widgets/CoordinateConversion/support/formatUtils.js +1 -1
  367. package/widgets/DirectLineMeasurement3D/DirectLineMeasurement3DViewModel.js +1 -1
  368. package/widgets/Directions/DirectionsViewModel.js +1 -1
  369. package/widgets/Directions.js +1 -1
  370. package/widgets/Editor/EditorViewModel.js +1 -1
  371. package/widgets/Editor/workflowUtils.js +1 -1
  372. package/widgets/Editor.js +1 -1
  373. package/widgets/ElevationProfile/ElevationProfileViewModel.js +1 -1
  374. package/widgets/Feature/FeatureMedia.js +1 -1
  375. package/widgets/Feature/support/featureUtils.js +1 -1
  376. package/widgets/FeatureForm/FeatureFormViewModel.js +1 -1
  377. package/widgets/FeatureForm/InputField.js +1 -1
  378. package/widgets/FeatureForm.js +1 -1
  379. package/widgets/FeatureTable/FeatureTableViewModel.js +1 -1
  380. package/widgets/FeatureTable/Grid/Grid.js +1 -1
  381. package/widgets/FeatureTable/support/FeatureStore.js +1 -1
  382. package/widgets/FeatureTemplates.js +1 -1
  383. package/widgets/FloorFilter/FloorFilterViewModel.js +1 -1
  384. package/widgets/LayerList/ListItemPanel.js +1 -1
  385. package/widgets/LayerList.js +1 -1
  386. package/widgets/Legend/LegendViewModel.js +1 -1
  387. package/widgets/Legend/styles/Card.js +1 -1
  388. package/widgets/Legend/styles/Classic.js +1 -1
  389. package/widgets/Legend/support/ActiveLayerInfo.js +1 -1
  390. package/widgets/Legend/support/colorRampUtils.js +1 -1
  391. package/widgets/Legend/support/relationshipRampUtils.js +1 -1
  392. package/widgets/Legend/support/sizeRampUtils.js +1 -1
  393. package/widgets/Popup/PopupViewModel.js +1 -1
  394. package/widgets/Popup/actionUtils.js +1 -1
  395. package/widgets/Print/PrintViewModel.js +1 -1
  396. package/widgets/Print.js +1 -1
  397. package/widgets/ScaleBar/ScaleBarViewModel.js +1 -1
  398. package/widgets/Search/SearchViewModel.js +1 -1
  399. package/widgets/Search/support/layerSearchUtils.js +1 -1
  400. package/widgets/Slider.js +1 -1
  401. package/widgets/Swipe.js +1 -1
  402. package/widgets/TableList.js +1 -1
  403. package/widgets/TimeSlider/TimeSliderViewModel.js +1 -1
  404. package/widgets/TimeSlider.js +1 -1
  405. package/widgets/UtilityNetworkTrace/UtilityNetworkTraceViewModel.js +1 -1
  406. package/widgets/support/DatePicker.js +1 -1
  407. package/widgets/support/Popover.js +1 -1
  408. package/widgets/support/SnappingControls.js +1 -1
  409. package/widgets/support/TimePicker.js +1 -1
  410. package/widgets/support/timeWidgetUtils.js +1 -1
  411. package/assets/esri/core/workers/chunks/083a5d10f8e243641cb9.js +0 -1
  412. package/assets/esri/core/workers/chunks/0872812ce4d0ec8faf8f.js +0 -1
  413. package/assets/esri/core/workers/chunks/0bc26899780c33637746.js +0 -1
  414. package/assets/esri/core/workers/chunks/113362697da1b69deaed.js +0 -1
  415. package/assets/esri/core/workers/chunks/11a2f9708938eac98815.js +0 -1
  416. package/assets/esri/core/workers/chunks/11a45709b703be84caaf.js +0 -1
  417. package/assets/esri/core/workers/chunks/1c1294ff1ebbd8f774f7.js +0 -1
  418. package/assets/esri/core/workers/chunks/1c915cc9a9d5729b6f17.js +0 -1
  419. package/assets/esri/core/workers/chunks/31786756b3d44540f8c0.js +0 -1
  420. package/assets/esri/core/workers/chunks/36a6f34fe40785beff5d.js +0 -1
  421. package/assets/esri/core/workers/chunks/373c16f8b8093d001064.js +0 -1
  422. package/assets/esri/core/workers/chunks/382a331a592abb61267f.js +0 -1
  423. package/assets/esri/core/workers/chunks/3bf106fe34e3992032c4.js +0 -1
  424. package/assets/esri/core/workers/chunks/3dcec610f1c1497d87bc.js +0 -1
  425. package/assets/esri/core/workers/chunks/46495e726d8739260d44.js +0 -1
  426. package/assets/esri/core/workers/chunks/4a82a6a473b3d540d0be.js +0 -1
  427. package/assets/esri/core/workers/chunks/4b6719377a95ac10fa43.js +0 -1
  428. package/assets/esri/core/workers/chunks/4d2ef57ff3a5cfc1313f.js +0 -1
  429. package/assets/esri/core/workers/chunks/4fd2b8153d62592210a2.js +0 -1
  430. package/assets/esri/core/workers/chunks/56e6a1079269e2964b02.js +0 -1
  431. package/assets/esri/core/workers/chunks/5b4d9786c010d265346c.js +0 -1
  432. package/assets/esri/core/workers/chunks/604637e1c3937b376a0d.js +0 -1
  433. package/assets/esri/core/workers/chunks/60f83257e361f87fa6fd.js +0 -1
  434. package/assets/esri/core/workers/chunks/6d3f80be6fceb2c18b5d.js +0 -1
  435. package/assets/esri/core/workers/chunks/6f827a32646bab0a8777.js +0 -1
  436. package/assets/esri/core/workers/chunks/70bd2ab42e3801ef5974.js +0 -1
  437. package/assets/esri/core/workers/chunks/746222184b361b50d6ba.js +0 -1
  438. package/assets/esri/core/workers/chunks/7fb72b2d11e8d840f982.js +0 -1
  439. package/assets/esri/core/workers/chunks/85bb6a1a7704fcdcbec2.js +0 -1
  440. package/assets/esri/core/workers/chunks/8b4c76cebb100e6c06f8.js +0 -1
  441. package/assets/esri/core/workers/chunks/9586a6b320edb1922926.js +0 -1
  442. package/assets/esri/core/workers/chunks/99638697ffda9022ce92.js +0 -1
  443. package/assets/esri/core/workers/chunks/a9da1cb118ca62a9581d.js +0 -1
  444. package/assets/esri/core/workers/chunks/aaa41a5013eef713c032.js +0 -1
  445. package/assets/esri/core/workers/chunks/ac321f939dd488ff6ce4.js +0 -1
  446. package/assets/esri/core/workers/chunks/add6027a96398ecf69de.js +0 -1
  447. package/assets/esri/core/workers/chunks/b75206b46ba81606087c.js +0 -1
  448. package/assets/esri/core/workers/chunks/bf8456828e38a768eba3.js +0 -1
  449. package/assets/esri/core/workers/chunks/c0720d0d8adcba6738d4.js +0 -1
  450. package/assets/esri/core/workers/chunks/c5bb712d5cf8c05a4e13.js +0 -1
  451. package/assets/esri/core/workers/chunks/d343f05a3366f95e0494.js +0 -1
  452. package/assets/esri/core/workers/chunks/d8b1f00075983d769985.js +0 -1
  453. package/chunks/Highlight.glsl.js +0 -88
  454. package/views/3d/webgl-engine/shaders/Highlight.glsl.js +0 -5
  455. package/views/3d/webgl-engine/shaders/HighlightTechnique.js +0 -5
  456. package/views/3d/webgl-engine/shaders/HighlightTechniqueConfiguration.js +0 -5
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.24/esri/copyright.txt for details.
4
4
  */
5
- import{_ as e}from"../../../../chunks/tslib.es6.js";import r from"../../../../core/Accessor.js";import{update as t}from"../../../../core/arrayUtils.js";import s from"../../../../core/Handles.js";import{someMap as i}from"../../../../core/MapUtils.js";import{destroyMaybe as n,disposeMaybe as a,isSome as h,isNone as d,unwrap as o}from"../../../../core/maybe.js";import{watch as l,syncAndInitial as _,initial as p}from"../../../../core/reactiveUtils.js";import{Milliseconds as c}from"../../../../core/time.js";import{property as m}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/has.js";import"../../../../core/accessorSupport/ensureType.js";import{subclass as g}from"../../../../core/accessorSupport/decorators/subclass.js";import{v as u,a as f,m as T}from"../../../../chunks/mat4.js";import{I as R,c as A}from"../../../../chunks/mat4f64.js";import{c as E}from"../../../../chunks/boundedPlane.js";import{MAXIMUM_ANIMATION_LOAD as b,MINIMUM_IDLE_ANIMATION_MS as P}from"../../support/animationUtils.js";import S from"../../support/debugFlags.js";import{RenderPassManager as H}from"../core/renderPasses/RenderPassManager.js";import{HUDTransparentRenderStyle as w}from"../core/shaderLibrary/hud/HUDUniforms.js";import{AntiAliasingMode as x,TransparencyPassType as M,Decorations as I,RenderRequestType as C,StencilBits as L}from"./basicInterfaces.js";import{BoundingInfo as O}from"./BoundingInfo.js";import{ZERO as D,union as y}from"./depthRange.js";import{depthRangeFromScene as N}from"./depthRangeUtils.js";import{createEmptyDepthTexture as v}from"./glUtil3D.js";import U from"./HighlightHelper.js";import{RenderOccludedFlag as q}from"./Material.js";import{OffscreenRendering as F}from"./OffscreenRendering.js";import{RenderContext as j}from"./RenderContext.js";import{splitRenderGeometryChangeSetByMaterial as G}from"./rendererUtils.js";import{RenderPass as V}from"./RenderPass.js";import{RenderPluginManager as B}from"./RenderPluginManager.js";import{RenderSlot as k}from"./RenderSlot.js";import{ShadowAccumulator as W}from"./ShadowAccumulator.js";import{ShadowHighlightHelper as Q}from"./ShadowHighlightHelper.js";import z from"./ShadowMap.js";import X from"./SliceHelper.js";import{SmaaRenderPass as Y}from"./SmaaRenderPass.js";import{SSAOHelper as K}from"./SSAOHelper.js";import{EdgeView as J}from"./edgeRendering/EdgeView.js";import{Transparency as Z}from"./edgeRendering/interfaces.js";import{MergedRenderer as $}from"../materials/renderers/MergedRenderer.js";import{AlphaMode as ee}from"../shaders/CompositingTechniqueConfiguration.js";import{HighlightShadowMapSlot as re,DefaultSnapshotSlot as te}from"../shaders/ShadowHighlightTechnique.js";import{RendererPerformanceInfo as se,Statistics as ie}from"../statistics/RendererPerformanceInfo.js";import{ClearBufferBit as ne,PixelFormat as ae,PixelType as he}from"../../../webgl/enums.js";import{startMeasurement as de}from"../../../webgl/Measurement.js";const oe=.9;let le=class extends r{constructor(e,r,t,i,n,a,h,d,o){super({}),this._materialRepository=e,this._shaderTechniqueRepository=t,this._rctx=i,this._compositingHelper=n,this._magnifierHelper=a,this._requestRender=h,this._stage=o,this._materialRenderers=new Map,this._needsTransparentPass=!1,this._hasHUDElements=!1,this._hasHighlights=!1,this._hasWater=!1,this._hasOverlayWater=!1,this._content=new Map,this._isRendering=!1,this._fallbackDepthStencilTexture=null,this.performanceInfo=new se,this._antialiasing=x.SMAA,this._oitEnabled=!1,this._multipassTerrain=!0,this._opaqueTerrain=!0,this._hasAnimations=!1,this._animationTimestep=c(0),this._handles=new s,this._renderHiddenTransparentEdges=()=>{},this._oitUsed=!1,this._smaaPass=new Y(this._rctx,t),this._oitEnabled=this._hasOITSupport,this._requestRender(),this._offscreenRendering=new F(this._rctx,this._compositingHelper),this._sliceHelper=new X,this._shadowMap=new z(this._rctx,o.viewingMode,2),this._ssaoHelper=new K(t,this._rctx,(()=>this._requestRender())),this._highlightHelper=new U(t,this._rctx),this._shadowHighlightHelper=new Q(this._rctx,o.viewingMode),this._shadowAccumulator=new W(this._rctx,t,o,((e,r)=>{const t=this.hasShadowsEnabled;return this._shadowMap.enabled=!0,this._renderPlugins.prepareRender(e,r),this._shadowMap.enabled=t,this._bindParameters}),((e,r,t,s)=>{e.start(t,r,s),this._renderShadowCascades(V.MATERIAL_DEPTH_SHADOWMAP_ALL,e),t.setGLViewport(this._rctx),this._ensureCameraBindParameters(t)}),(()=>this._requestRender())),this._renderContext=new j(this._rctx,this._offscreenRendering,this._shadowMap,this._ssaoHelper,this._sliceHelper),this._renderPlugins=new B({renderContext:this._renderContext,shaderTechniqueRepository:t,textureRep:r,materialRep:this._materialRepository,requestRender:this._requestRender,schedule:d}),this.renderPassManager=new H(this._rctx,this._shaderTechniqueRepository),this._renderPlugins.add(this.renderPassManager.slots(),this.renderPassManager),this._handles.add([l((()=>this._stage.state.camera),(()=>this._requestRender()),_),l((()=>S.EDGES_SHOW_HIDDEN_TRANSPARENT_EDGES),(e=>{this._renderHiddenTransparentEdges=e?()=>this._renderEdges(Z.TRANSPARENT):()=>{},this._requestRender()}),p)])}get _bindParameters(){return this._renderContext.bindParameters}get hasWater(){return this._hasWater||this._hasOverlayWater}get hasWaterReflection(){return this.hasWater&&this._waterReflectionEnabled}normalizeCtorArgs(){return{}}dispose(){this._handles.destroy(),this._smaaPass.dispose(),this._materialRenderers.forEach((e=>e.dispose())),this._materialRenderers.clear(),this._edgeView=n(this._edgeView),this._offscreenRendering.dispose(),this._fallbackDepthStencilTexture=a(this._fallbackDepthStencilTexture),this._shadowMap.enabled=!1,this._shadowMap.dispose(),this._ssaoHelper.enabled=!1,this._ssaoHelper.dispose(),this._highlightHelper.dispose(),this._shadowHighlightHelper.dispose(),this._shadowAccumulator.dispose(),O.prune(),this._content.clear()}disposeOffscreenBuffers(){this._offscreenRendering.dispose(),this._shadowMap.dispose(),this._smaaPass.disable(),this._ssaoHelper.disposeOffscreenBuffers()}get updating(){return this._antialiasing===x.SMAA&&this._smaaPass.updating||h(this._edgeView)&&this._edgeView.updating||this._shadowAccumulator.running||!this.isCameraFinal}ensureEdgeView(){return d(this._edgeView)&&(this._edgeView=new J({rctx:this._rctx,renderSR:this._stage.renderSR,techniqueRepository:this._shaderTechniqueRepository,setNeedsRender:()=>this._requestRender(),schedule:e=>this._stage.resourceController.schedule(e)}),this._handles.add(this._edgeView.watch("updating",(()=>this._requestRender()),!0)),this._requestRender()),this._edgeView}get edgeView(){return this._edgeView}get isCameraFinal(){return u(this._bindParameters.ssr.reprojectionMatrix,R)}set _reprojectionMatrix(e){t(this._bindParameters.ssr.reprojectionMatrix,e)&&this.notifyChange("isCameraFinal")}get hasShadowsEnabled(){var e;return!(null==(e=this._shadowMap)||!e.enabled)}setRenderParameters(e){const{_shadowMap:r,_ssaoHelper:t,_bindParameters:s}=this;void 0!==e.screenSpaceReflectionsEnabled&&s.ssr.enabled!==e.screenSpaceReflectionsEnabled&&(s.ssr.enabled=e.screenSpaceReflectionsEnabled,this._requestRender()),void 0!==e.enableFillLights&&s.enableFillLights!==e.enableFillLights&&(s.enableFillLights=e.enableFillLights,this._requestRender()),void 0!==e.shadowMap&&r.enabled!==e.shadowMap&&(r.enabled=e.shadowMap,this._requestRender()),void 0!==e.shadowMapMaxCascades&&r.maxCascades!==e.shadowMapMaxCascades&&(r.maxCascades=e.shadowMapMaxCascades,this._requestRender()),void 0!==e.ssao&&t.enabled!==e.ssao&&(t.enabled=e.ssao,this._requestRender()),e.background&&this._offscreenRendering.background!==e.background&&(this._offscreenRendering.background=e.background,this._requestRender());const i=e.antialiasingEnabled?x.SMAA:x.NONE;void 0!==e.antialiasingEnabled&&this._antialiasing!==i&&(this._antialiasing=i,this._requestRender()),void 0!==e.highQualityTransparency&&this._multipassTerrain!==e.highQualityTransparency&&(this._multipassTerrain=e.highQualityTransparency,this._oitEnabled=e.highQualityTransparency&&this._hasOITSupport,this._requestRender()),void 0!==e.defaultHighlightOptions&&(this._highlightHelper.setDefaultOptions(e.defaultHighlightOptions),this._shadowHighlightHelper.setDefaultOptions(e.defaultHighlightOptions),this._requestRender()),void 0!==e.slicePlane&&this._sliceHelper.plane!==e.slicePlane&&(this._sliceHelper.plane=o(e.slicePlane),this._requestRender()),void 0!==e.waterReflectionEnabled&&this._waterReflectionEnabled!==e.waterReflectionEnabled&&(this._waterReflectionEnabled=e.waterReflectionEnabled,this._requestRender()),void 0!==e.enableFillLights&&s.enableFillLights!==e.enableFillLights&&(s.enableFillLights=e.enableFillLights,this._requestRender()),void 0!==e.opaqueTerrain&&this._opaqueTerrain!==e.opaqueTerrain&&(this._opaqueTerrain=e.opaqueTerrain,this._requestRender()),void 0!==e.hasOverlayWater&&this._hasOverlayWater!==e.hasOverlayWater&&(this._hasOverlayWater=e.hasOverlayWater,this._requestRender()),void 0!==e.shadowCastOptions&&this._shadowAccumulator.setOptions(e.shadowCastOptions)}get hasSlicePlane(){return!!this._sliceHelper.plane}get renderPlugins(){return this._renderPlugins}get _hasOITSupport(){return this._rctx.driverTest.floatBufferBlendWorking}modify(e){this._isRendering&&console.warn("Renderer.modify called while rendering");const{adds:r,removes:t,updates:s}=e;if(0===r.length&&0===t.length&&0===s.length)return;t.forAll((({id:e})=>this._content.delete(e))),r.forAll((e=>this._content.set(e.id,e)));const n=G(e);let a=!1;n.forEach(((e,r)=>{let t=this._materialRenderers.get(r);if(!t){if(!(e.adds.length>0))return;t=new $(this._rctx,this._materialRepository,r),this._materialRenderers.set(r,t)}t.modify(e),t.isEmpty&&(a=!0)})),a&&this._materialRenderers.forEach(((e,r)=>{e.isEmpty&&(this._materialRenderers.delete(r),e.dispose())})),this._hasHighlights=i(this._materialRenderers,(e=>e.hasHighlights)),this._bindParameters.hasOccludees=i(this._materialRenderers,(e=>e.hasOccludees)),this._hasWater=i(this._materialRenderers,(e=>e.hasWater)),this._needsTransparentPass=i(this._materialRenderers,(e=>e.requiresSlot(k.TRANSPARENT_MATERIAL,V.MATERIAL))),this._hasHUDElements=i(this._materialRenderers,(e=>e.requiresSlot(k.LINE_CALLOUTS_HUD_DEPTH,V.MATERIAL)||e.requiresSlot(k.HUD_MATERIAL,V.MATERIAL)||e.requiresSlot(k.LABEL_MATERIAL,V.MATERIAL))),this._requestRender()}updateAnimation(e){return this._hasAnimations=!1,this._materialRenderers.forEach((r=>this._hasAnimations=r.updateAnimation(e)||this._hasAnimations)),this._hasAnimations=this._renderPlugins.updateAnimation(e)||this._hasAnimations,this._hasAnimations}get animationTimestep(){return this._animationTimestep}updateLightSources(e,r,t){this._bindParameters.lighting.groundLightingFactor=r,this._bindParameters.lighting.globalFactor=t,this._bindParameters.lighting.set(e)}render(e,r,t,s){this._isRendering=!0,this.performanceInfo.prerender(this._rctx),this._bindParameters.transparencyPassType=M.NONE;const i=this._offscreenRendering;i.needLastFrameColorTexture=this.hasWaterReflection,i.advanceCurrentRenderTarget();const n=E(this._sliceHelper.plane);s===I.OFF&&(this._sliceHelper.plane=null),this._rctx.bindFramebuffer(e),r.setGLViewport(this._rctx),this._renderPlugins.prepareRender(r,t),this.performanceInfo.advance(ie.Prepare);const a=this._computeDepthRange(r);this._renderShadowMap(e,r,this._bindParameters.lighting.lightingMainDirection,a),this.performanceInfo.advance(ie.Shadowmap),i.initializeFrame(r),this._ensureBindParameters(r),this._renderLinearDepth(),this.performanceInfo.advance(ie.Lineardepth),this._accumulateShadows(a,r,t),this._renderNormal(),this.performanceInfo.advance(ie.Normals),this._ensureBindParametersSSR(),this._ssaoHelper.computeSSAO(this._bindParameters,i.linearDepthTexture,i.normalTexture),this.performanceInfo.advance(ie.SSAO),this._renderContext.pass=V.MATERIAL,i.bindFramebuffer(),this._renderOpaqueGeometry(),this.performanceInfo.advance(ie.Opaque);const o=this._multipassTerrain&&!this._opaqueTerrain;this._renderTerrainLinearDepth(o),this._setMultipassEnabled(o),this._setTerrainCulling(o),this._renderEdges(Z.OPAQUE),this.performanceInfo.advance(ie.OpaqueEdges),this._renderHiddenTransparentEdges();const l=this._needsTransparentPass||this._renderPlugins.needsTransparentPass;l&&(this._oitEnabled?this._renderOrderIndependentTransparency((()=>this._renderTransparentGeometry()),!1):this._renderTransparentGeometry()),this.performanceInfo.advance(ie.Transparent),this._renderGeometryLinearDepth(o);const _=this._renderHUDVisibility();o||this._renderInternalSlot(k.LINE_CALLOUTS),this.performanceInfo.advance(ie.Hudvisibility),this._renderEdges(Z.TRANSPARENT,o),this.performanceInfo.advance(ie.TransparentEdges),this._renderSlot(k.VOXEL),this._renderTransparentTerrain(),!this._opaqueTerrain&&_&&(o?this._renderLineCallouts(w.Occluded):i.compositeTransparentTerrainOntoHUDVisibility(),this._renderHUD(w.Occluded,i.framebuffer),this.performanceInfo.advance(ie.HudOccluded)),this.performanceInfo.advance(ie.TransparentTerrain),this._setTerrainCulling(!1),this._opaqueTerrain||(i.compositeTransparentTerrainOntoMain(),o&&(this._renderEdges(Z.OPAQUE),this.performanceInfo.advance(ie.OpaqueEdges),l&&(this._oitEnabled?this._renderOrderIndependentTransparency((()=>this._renderTransparentGeometry()),!1):this._renderTransparentGeometry()),this.performanceInfo.advance(ie.Transparent),this._renderEdges(Z.TRANSPARENT),this.performanceInfo.advance(ie.TransparentEdges))),o&&this._renderLineCallouts(w.NotOccluded),this._setMultipassEnabled(!1),this._shadowAccumulator.render(this._bindParameters),i.renderToTargets((()=>{this._renderInternalSlot(k.TRANSPARENT_DEPTH_WRITE_DISABLED_MATERIAL),this._renderSlot(k.POSTPROCESSING_ENVIRONMENT_TRANSPARENT),this._renderSlot(k.LASERLINES)}),i.currentColorTarget,i.mainDepth),this.performanceInfo.advance(ie.Atmosphere),this._renderPlugins.needsLaserlineWithContrastControl&&i.renderTmpAndCompositeToMain((()=>this._renderSlot(k.LASERLINES_CONTRAST_CONTROL)),ee.PremultipliedAlpha),this.performanceInfo.advance(ie.Laserline),this._renderOccluded(),this.performanceInfo.advance(ie.Occluded);const p=s===I.ON&&this._magnifierHelper.enabled,c=p&&d(e)?this._offscreenRendering.getFramebuffer(this._offscreenRendering.tmpColor,this._offscreenRendering.tmpDepth):e;this._rctx.bindFramebuffer(c);const m=this._offscreenRendering.colorTexture;!this._renderAntiAliasing(this._antialiasing,m)&&h(m)&&this._compositingHelper.composite(m,ee.None),this.performanceInfo.advance(ie.Antialiasing),this._renderHUD(w.NotOccluded,c),this.performanceInfo.advance(ie.HudNotoccluded),this._renderHighlights(c,this._bindParameters),this.performanceInfo.advance(ie.Highlights),p&&this._magnifierHelper.render(this._rctx,this._bindParameters),c!==e&&(this._rctx.bindFramebuffer(e),this._compositingHelper.composite(this._offscreenRendering.tmpColorTexture,ee.None)),this._disposeOITBuffers(),this._renderContext.lastFrameCamera.copyFrom(this._bindParameters.camera),this._sliceHelper.plane=n,this._isRendering=!1,this.onPostRender&&this.onPostRender(),this.performanceInfo.postrender()}finish(e){if(this._hasAnimations||(this._animationTimestep=c(0)),e===C.BACKGROUND){this._rctx.gl.getError();const e=this.performanceInfo.elapsedTime/b;this._animationTimestep=c(Math.max(this._animationTimestep*oe+e*(1-oe),P))}}readDepthPixels(e,r,t,s,i,n){const a=this._offscreenRendering.bindTarget(this._offscreenRendering.linearDepth,this._offscreenRendering.tmpDepth);if(!this._needsLinearDepth){this._ensureBindParameters(e),this._bindParameters.camera.setGLViewport(this._rctx),this._rctx.setClearColor(0,0,0,0);const r=ne.COLOR_BUFFER_BIT|ne.DEPTH_BUFFER_BIT|ne.STENCIL_BUFFER_BIT;this._rctx.clearSafe(r),this._renderGeometryAndTransparentTerrainPass(V.MATERIAL_DEPTH)}a.readPixels(r,t,s,i,ae.RGBA,he.UNSIGNED_BYTE,n)}readHUDVisibility(e,r,t,s,i){this._offscreenRendering.bindTarget(this._offscreenRendering.hudVisibility).readPixels(e,r,t,s,ae.RGBA,he.UNSIGNED_BYTE,i)}readAccumulatedShadow(e,r){return this._shadowAccumulator.readAccumulatedShadow(e,r)}_setMultipassEnabled(e){this._bindParameters.multipassTerrain.enabled=this._bindParameters.multipassGeometry.enabled=e}_setTerrainCulling(e){this._bindParameters.multipassTerrain.cullAboveGround=e}_renderSlot(e){this._bindParameters.slot=e,this._renderPlugins.render()}_renderEdges(e,r=!1){const t=this._edgeView;h(t)&&t.shouldRender()&&this._offscreenRendering.renderTmpAndCompositeToMain((()=>t.render(this._bindParameters,e)),ee.Alpha,r)}_renderShadowMap(e,r,t,s){const i=this._shadowMap;i.enabled&&(i.start(r,t,s),this._shadowHighlightHelper.updateParameters(r,t),this.needsShadowHighlight?(this._renderShadowCascades(V.MATERIAL_DEPTH_SHADOWMAP_HIGHLIGHT,this._shadowMap,(e=>i.takeCascadeSnapshotTo(e,re))),i.clear(),this._renderShadowCascades(V.MATERIAL_DEPTH_SHADOWMAP_DEFAULT,this._shadowMap,(e=>{i.takeCascadeSnapshotTo(e,te),this._renderGeometryAndTransparentTerrainPass(V.MATERIAL_DEPTH_SHADOWMAP_HIGHLIGHT)}))):this._renderShadowCascades(V.MATERIAL_DEPTH_SHADOWMAP_ALL),i.finish(e),r.setGLViewport(this._rctx))}_renderShadowCascades(e,r=this._shadowMap,t=(e=>{})){for(const s of r.getCascades())s.camera.setGLViewport(this._rctx),this._ensureCameraBindParameters(s.camera),this._renderGeometryAndTransparentTerrainPass(e),t(s)}get _needsLinearDepth(){return this._ssaoHelper.enabled||this._renderPlugins.needsLinearDepth||this._hasWater&&this._waterReflectionEnabled||this.needsShadowHighlight||this.needsShadowCast}_renderLinearDepth(){this._needsLinearDepth?this._offscreenRendering.renderToTargets((()=>this._renderGeometryAndTransparentTerrainPass(V.MATERIAL_DEPTH)),this._offscreenRendering.linearDepth,this._offscreenRendering.tmpDepth,[0,0,0,0],!0,!0):this._offscreenRendering.disposeTarget(this._offscreenRendering.linearDepth),this._bindParameters.ssr.linearDepthTexture=this._offscreenRendering.linearDepthTexture}_renderTerrainLinearDepth(e){if(e){const e=this._renderContext.pass;this._renderContext.pass=V.MATERIAL_DEPTH,this._offscreenRendering.renderToTargets((()=>this._renderTransparentTerrain()),this._offscreenRendering.terrainLinearDepth,this._offscreenRendering.tmpDepth,[-1e10,-1e10,-1e10,1],!0,!0),this._renderContext.pass=e}else this._offscreenRendering.disposeTarget(this._offscreenRendering.terrainLinearDepth);this._bindParameters.multipassTerrain.linearDepthTexture=this._offscreenRendering.terrainLinearDepthTexture}_renderGeometryLinearDepth(e){if(e){const e=this._renderContext.pass;this._offscreenRendering.renderToTargets((()=>this._renderGeometryPass(V.MATERIAL_DEPTH)),this._offscreenRendering.geometryLinearDepth,this._offscreenRendering.tmpDepth,[1,1,1,1],!0,!0),this._renderContext.pass=e}else this._offscreenRendering.disposeTarget(this._offscreenRendering.geometryLinearDepth);this._bindParameters.multipassGeometry.linearDepthTexture=this._offscreenRendering.geometryLinearDepthTexture}get needsNormal(){return this._ssaoHelper.enabled}_renderNormal(){this.needsNormal?this._offscreenRendering.renderToTargets((()=>{this._renderGeometryAndTransparentTerrainPass(V.MATERIAL_NORMAL)}),this._offscreenRendering.normal,this._offscreenRendering.tmpDepth,[0,0,0,0],!0,!0):this._offscreenRendering.disposeTarget(this._offscreenRendering.normal)}get needsDepthRange(){return this._shadowMap.enabled||this.needsShadowCast}_computeDepthRange(e){if(!this.needsDepthRange)return D;const r=N(e,this._content,this._stage.layers);return y(r,this.renderPlugins.queryDepthRange(e)),r.near=Math.max(e.near,r.near),r.far=Math.min(e.far,r.far),r}_renderGeometryAndTransparentTerrainPass(e){this._renderContext.pass=e,this._renderGeometryPass(e),this._renderTransparentTerrain()}_renderGeometryPass(e){this._renderContext.pass=e,this._renderOpaqueGeometry(),this._renderTransparentGeometry()}_renderOpaqueGeometry(){this._renderSlot(k.INTEGRATED_MESH),this._renderSlot(k.OPAQUE_TERRAIN),this._renderInternalSlot(k.OPAQUE_MATERIAL),this._renderSlot(k.OPAQUE_MATERIAL),this._renderSlot(k.POSTPROCESSING_ENVIRONMENT_OPAQUE)}_renderTransparentGeometry(){this._renderInternalSlot(k.TRANSPARENT_MATERIAL),this._renderSlot(k.TRANSPARENT_MATERIAL)}_renderTransparentTerrain(){this._renderSlot(k.TRANSPARENT_TERRAIN)}_renderHUDVisibility(){let e=!1;return this._renderContext.offscreenRenderingHelper&&this._renderContext.offscreenRenderingHelper.renderHUDVisibility((()=>{this._bindParameters.hudVisibilityTexture=this._renderContext.offscreenRenderingHelper.hudVisibilityTexture,e=this._renderInternalSlot(k.OCCLUSION_PIXELS)}),this._multipassTerrain&&!this._opaqueTerrain),e}_renderLineCallouts(e){this._bindParameters.renderTransparentlyOccludedHUD=e,e===w.Occluded?this._offscreenRendering.renderToTargets((()=>this._renderInternalSlot(k.LINE_CALLOUTS)),this._offscreenRendering.currentColorTarget,this._offscreenRendering.tmpDepth,void 0,!0,!0):this._renderInternalSlot(k.LINE_CALLOUTS)}_renderHUD(e,r){this._hasHUDElements&&(this._oitEnabled?(this._renderOrderIndependentTransparency((()=>this._renderHUDElements(e)),!0),this._rctx.bindFramebuffer(r),this._compositingHelper.composite(this._offscreenRendering.hudColorTexture,ee.PremultipliedAlpha)):e===w.Occluded?this._offscreenRendering.renderToTargets((()=>this._renderHUDElements(w.Occluded)),this._offscreenRendering.currentColorTarget,this._offscreenRendering.tmpDepth,void 0,!0,!0):this._renderHUDElements(e))}_renderHUDElements(e){this._bindParameters.renderTransparentlyOccludedHUD=e,this._renderInternalSlot(k.LINE_CALLOUTS_HUD_DEPTH),this._renderInternalSlot(k.HUD_MATERIAL),this._renderInternalSlot(k.LABEL_MATERIAL)}get needsHighlight(){return this._hasHighlights||this._renderPlugins.needsHighlight}get needsShadowHighlight(){return this._shadowMap.enabled&&this._shadowHighlightHelper.isVisible&&this.needsHighlight}_renderHighlights(e,r){if(!this.needsHighlight)return void this._offscreenRendering.disposeTarget(this._offscreenRendering.highlight);const t=this._highlightHelper,s=t.profilingCallback&&de(this._renderContext.rctx),i=this._offscreenRendering.renderToTargets((()=>{this._renderGeometryAndTransparentTerrainPass(V.MATERIAL_HIGHLIGHT),this._rctx.clearSafe(ne.DEPTH_BUFFER_BIT),this._renderHUDElements(w.Both)}),this._offscreenRendering.highlight,this._offscreenRendering.tmpDepth,[0,0,0,0],!0,!0);this._bindParameters.highlightColorTexture=i.colorTexture,this.needsShadowHighlight&&this._shadowHighlightHelper.render(r,e),t.render(this._bindParameters.camera,i,e),h(s)&&t.profilingCallback&&s.stop((e=>{t.profilingCallback&&t.profilingCallback(e)}))}get needsShadowCast(){return this._shadowAccumulator.isAccumulating}_accumulateShadows(e,r,t){this.needsShadowCast&&(this._shadowAccumulator.setAccumulationDependencies(this._offscreenRendering.linearDepthTexture,e,r,t),this._shadowAccumulator.accumulateFixedSamples(this._bindParameters))}_renderOrderIndependentTransparency(e,r){const t=t=>{this._bindParameters.transparencyPassType=t,this._offscreenRendering.renderOITPass((()=>e()),t,r)},s=this._renderContext.pass;this._renderContext.pass=V.MATERIAL_ALPHA,t(M.Alpha),this._renderContext.pass=V.MATERIAL,t(M.Color),t(M.FrontFace),this._offscreenRendering.compositeTransparentOntoOpaque(r),this._bindParameters.transparencyPassType=M.NONE,this._renderContext.pass=s,this._oitUsed=!0}_disposeOITBuffers(){this._oitUsed||(this._offscreenRendering.disposeTarget(this._offscreenRendering.alphaFloatTarget),this._offscreenRendering.disposeTarget(this._offscreenRendering.colorFloatTarget),this._offscreenRendering.disposeTarget(this._offscreenRendering.frontFaceTarget)),this._oitUsed=!1}_renderOccluded(){let e=0;this._materialRenderers.forEach(((r,t)=>{t&&t.isVisible()&&t.renderOccluded===q.OccludeAndTransparentStencil&&(e|=t.renderOccluded,ce.push(t))}));const r=this._offscreenRendering,t=(t,s,i,n,a)=>{0!=(e&s)&&(r.renderToTargets(i,r.tmpColor,r.mainDepth,[0,0,0,0],n,a),r.compositeOccludedOntoMain(t))};0!==ce.length&&(this._renderInternalSlot(k.OCCLUDER_MATERIAL,ce),t(.5,q.OccludeAndTransparentStencil,(()=>this._renderInternalSlot(k.TRANSPARENT_OCCLUDER_MATERIAL,ce)),!1,!1),ce.length=0),this._materialRenderers.forEach(((r,t)=>{t&&t.isVisible()&&(t.renderOccluded===q.OccludeAndTransparent||t.renderOccluded===q.Transparent||t.renderOccluded===q.Opaque)&&(e|=t.renderOccluded,pe.push(t))}));const s=this._renderPlugins.renderOccludedFlags;if(e|=s,!e)return;const i=e=>{this._renderContext.renderOccludedMask=e,s>q.Occlude&&this._renderSlot(k.OCCLUDED_TERRAIN),this._renderInternalSlot(k.OPAQUE_MATERIAL,pe),this._renderInternalSlot(k.TRANSPARENT_MATERIAL,pe),this._renderInternalSlot(k.TRANSPARENT_DEPTH_WRITE_DISABLED_MATERIAL,pe),this._renderContext.resetRenderOccludedMask()};this._renderContext.pass=V.MATERIAL,t(.5,q.OccludeAndTransparent,(()=>i(q.OccludeAndTransparent)),!0,L.OutlineVisualElementMask),t(.5,q.Transparent,(()=>i(q.Transparent)),!0,L.OutlineVisualElementMask),t(1,q.Opaque,(()=>i(q.Opaque)),!0,L.OutlineVisualElementMask),pe.length=0}_renderAntiAliasing(e,r){if(e===x.SMAA){if(this._smaaPass.enable((()=>this._requestRender()))&&h(r))return this._smaaPass.render(r),!0}else this._smaaPass.disable();return!1}_ensureCameraBindParameters(e){this._bindParameters.camera=e}_ensureBindParameters(e){var r;this._ensureCameraBindParameters(e);const t=this._renderContext.offscreenRenderingHelper;this._bindParameters.hudVisibilityTexture=t.hudVisibilityTexture,this._bindParameters.highlightDepthTexture=null!=(r=t.depthTexture)?r:this._getFallbackDepthTexture()}_ensureBindParametersSSR(){this.hasWaterReflection?(this._renderContext.lastFrameCamera.equals(this._bindParameters.camera)?this._reprojectionMatrix=R:(f(ge,this._bindParameters.camera.viewMatrix),f(me,this._bindParameters.camera.projectionMatrix),T(ue,ge,me),T(ue,this._renderContext.lastFrameCamera.viewMatrix,ue),T(ue,this._renderContext.lastFrameCamera.projectionMatrix,ue),this._reprojectionMatrix=ue),this._bindParameters.ssr.lastFrameColorTexture=this._offscreenRendering.lastFrameColorTexture):this._bindParameters.ssr.lastFrameColorTexture=null,this._bindParameters.ssr.enabled=this.hasWaterReflection}_renderInternalSlot(e,r){let t=!1;return this._bindParameters.slot=e,h(r)?r.forEach((e=>{if(!e.shouldRender(this._renderContext))return;const r=this._materialRenderers.get(e);h(r)&&(t=r.render(this._renderContext.pass,this._bindParameters)||t)})):this._materialRenderers.forEach(((e,r)=>{r.shouldRender(this._renderContext)&&e.render(this._renderContext.pass,this._bindParameters)&&(t=!0)})),t}_getFallbackDepthTexture(){return this._fallbackDepthStencilTexture||(this._fallbackDepthStencilTexture=v(this._rctx)),this._fallbackDepthStencilTexture}get gpuMemoryUsage(){var e,r,t,s,i,n,a,h,d,o;return{offscreen:null!=(e=null==(r=this._offscreenRendering)?void 0:r.gpuMemoryUsage)?e:0,highlights:(null!=(t=null==(s=this._highlightHelper)?void 0:s.gpuMemoryUsage)?t:0)+(null!=(i=null==(n=this._shadowHighlightHelper)?void 0:n.gpuMemoryUsage)?i:0),shadows:null!=(a=null==(h=this._shadowMap)?void 0:h.gpuMemoryUsage)?a:0,ssao:null!=(d=null==(o=this._ssaoHelper)?void 0:o.gpuMemoryUsage)?d:0}}get test(){const e=this;return{offscreen:this._offscreenRendering,shadowMap:this._shadowMap,ssao:this._ssaoHelper,highlight:this._highlightHelper,lighting:this._bindParameters.lighting,materialRenderers:this._materialRenderers,shadowAccumulator:this._shadowAccumulator,getFramebufferTexture:r=>{var t;switch(r){case _e.Color:return e._offscreenRendering.colorTexture;case _e.LinearDepth:return e._offscreenRendering.linearDepthTexture;case _e.Normals:return e._offscreenRendering.normalTexture;case _e.ShadowMap:return null==(t=e._shadowMap)?void 0:t.test.depthTexture;case _e.HudVisibility:return e._offscreenRendering.hudVisibilityTexture;case _e.Highlight:return e._offscreenRendering.highlightTexture}}}}};var _e;e([m()],le.prototype,"_shadowAccumulator",void 0),e([m()],le.prototype,"_smaaPass",void 0),e([m()],le.prototype,"_antialiasing",void 0),e([m()],le.prototype,"_edgeView",void 0),e([m()],le.prototype,"updating",null),e([m()],le.prototype,"isCameraFinal",null),le=e([g("esri.views.3d.webgl-engine.lib.Renderer")],le),function(e){e[e.Color=0]="Color",e[e.LinearDepth=1]="LinearDepth",e[e.Normals=2]="Normals",e[e.ShadowMap=3]="ShadowMap",e[e.HudVisibility=4]="HudVisibility",e[e.Highlight=5]="Highlight"}(_e||(_e={}));const pe=[],ce=[],me=A(),ge=A(),ue=A();export{_e as FramebufferId,le as Renderer};
5
+ import{_ as e}from"../../../../chunks/tslib.es6.js";import r from"../../../../core/Accessor.js";import{update as t}from"../../../../core/arrayUtils.js";import s from"../../../../core/Handles.js";import{someMap as i}from"../../../../core/MapUtils.js";import{destroyMaybe as n,disposeMaybe as a,isSome as h,isNone as d,unwrap as o}from"../../../../core/maybe.js";import{watch as l,syncAndInitial as _,initial as p}from"../../../../core/reactiveUtils.js";import{Milliseconds as c}from"../../../../core/time.js";import{property as m}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/has.js";import"../../../../core/accessorSupport/ensureType.js";import{subclass as g}from"../../../../core/accessorSupport/decorators/subclass.js";import{v as u,a as f,m as T}from"../../../../chunks/mat4.js";import{I as R,c as A}from"../../../../chunks/mat4f64.js";import{c as E}from"../../../../chunks/boundedPlane.js";import{MAXIMUM_ANIMATION_LOAD as P,MINIMUM_IDLE_ANIMATION_MS as b}from"../../support/animationUtils.js";import S from"../../support/debugFlags.js";import{RenderPassManager as H}from"../core/renderPasses/RenderPassManager.js";import{HUDTransparentRenderStyle as w}from"../core/shaderLibrary/hud/HUDUniforms.js";import{AntiAliasingMode as x,TransparencyPassType as I,Decorations as M,RenderRequestType as L,StencilBits as O}from"./basicInterfaces.js";import{BoundingInfo as D}from"./BoundingInfo.js";import{ZERO as C,union as y}from"./depthRange.js";import{depthRangeFromScene as N}from"./depthRangeUtils.js";import{createEmptyDepthTexture as v}from"./glUtil3D.js";import U from"./HighlightHelper.js";import{RenderOccludedFlag as F}from"./Material.js";import{OffscreenRendering as j}from"./OffscreenRendering.js";import{RenderContext as q}from"./RenderContext.js";import{splitRenderGeometryChangeSetByMaterial as G}from"./rendererUtils.js";import{RenderPass as V}from"./RenderPass.js";import{RenderPluginManager as B}from"./RenderPluginManager.js";import{RenderSlot as W}from"./RenderSlot.js";import{ShadowAccumulator as k}from"./ShadowAccumulator.js";import{ShadowHighlightHelper as Q}from"./ShadowHighlightHelper.js";import z from"./ShadowMap.js";import X from"./SliceHelper.js";import{SmaaRenderPass as Y}from"./SmaaRenderPass.js";import{SSAOHelper as K}from"./SSAOHelper.js";import{EdgeView as J}from"./edgeRendering/EdgeView.js";import{Transparency as Z}from"./edgeRendering/interfaces.js";import{MergedRenderer as $}from"../materials/renderers/MergedRenderer.js";import{AlphaMode as ee}from"../shaders/CompositingTechniqueConfiguration.js";import{HighlightShadowMapSlot as re,DefaultSnapshotSlot as te}from"../shaders/ShadowHighlightTechnique.js";import{RendererPerformanceInfo as se,Statistics as ie}from"../statistics/RendererPerformanceInfo.js";import{ClearBufferBit as ne,PixelFormat as ae,PixelType as he}from"../../../webgl/enums.js";const de=.9;let oe=class extends r{constructor(e,r,t,i,n,a,h,d,o){super({}),this._materialRepository=e,this._shaderTechniqueRepository=t,this._rctx=i,this._compositingHelper=n,this._magnifierHelper=a,this._requestRender=h,this._stage=o,this._materialRenderers=new Map,this._needsTransparentPass=!1,this._hasHUDElements=!1,this._hasHighlights=!1,this._hasWater=!1,this._hasOverlayWater=!1,this._content=new Map,this._isRendering=!1,this._fallbackDepthStencilTexture=null,this.performanceInfo=new se,this._antialiasing=x.SMAA,this._oitEnabled=!1,this._multipassTerrain=!0,this._transparentTerrain=!1,this._hasAnimations=!1,this._animationTimestep=c(0),this._handles=new s,this._renderHiddenTransparentEdges=()=>{},this._oitUsed=!1,this._smaaPass=new Y(this._rctx,t),this._oitEnabled=this._hasOITSupport,this._requestRender(),this._offscreenRendering=new j(this._rctx,this._compositingHelper),this._sliceHelper=new X,this._shadowMap=new z(this._rctx,o.viewingMode,2),this._ssaoHelper=new K(t,this._rctx,(()=>this._requestRender())),this._highlightHelper=new U(t,this._rctx),this._shadowHighlightHelper=new Q(this._rctx,o.viewingMode),this._shadowAccumulator=new k(this._rctx,t,o,((e,r)=>{const t=this.hasShadowsEnabled;return this._shadowMap.enabled=!0,this._renderPlugins.prepareRender(e,r),this._shadowMap.enabled=t,this._bindParameters}),((e,r,t,s)=>{e.start(t,r,s),this._renderShadowCascades(V.MATERIAL_DEPTH_SHADOWMAP_ALL,e),t.setGLViewport(this._rctx),this._ensureCameraBindParameters(t)}),(()=>this._requestRender())),this._renderContext=new q(this._rctx,this._offscreenRendering,this._shadowMap,this._ssaoHelper,this._sliceHelper),this._renderPlugins=new B({renderContext:this._renderContext,shaderTechniqueRepository:t,textureRep:r,materialRep:this._materialRepository,requestRender:this._requestRender,schedule:d}),this.renderPassManager=new H(this._rctx,this._shaderTechniqueRepository),this._renderPlugins.add(this.renderPassManager.slots(),this.renderPassManager),this._handles.add([l((()=>this._stage.state.camera),(()=>this._requestRender()),_),l((()=>S.EDGES_SHOW_HIDDEN_TRANSPARENT_EDGES),(e=>{this._renderHiddenTransparentEdges=e?()=>this._renderEdges(Z.TRANSPARENT):()=>{},this._requestRender()}),p)])}get _bindParameters(){return this._renderContext.bindParameters}get hasWater(){return this._hasWater||this._hasOverlayWater}get hasWaterReflection(){return this.hasWater&&this._waterReflectionEnabled}normalizeCtorArgs(){return{}}dispose(){this._handles.destroy(),this._smaaPass.dispose(),this._materialRenderers.forEach((e=>e.dispose())),this._materialRenderers.clear(),this._edgeView=n(this._edgeView),this._offscreenRendering.dispose(),this._fallbackDepthStencilTexture=a(this._fallbackDepthStencilTexture),this._shadowMap.enabled=!1,this._shadowMap.dispose(),this._ssaoHelper.enabled=!1,this._ssaoHelper.dispose(),this._highlightHelper.dispose(),this._shadowHighlightHelper.dispose(),this._shadowAccumulator.dispose(),D.prune(),this._content.clear()}disposeOffscreenBuffers(){this._offscreenRendering.dispose(),this._shadowMap.dispose(),this._smaaPass.disable(),this._ssaoHelper.disposeOffscreenBuffers()}get updating(){return this._antialiasing===x.SMAA&&this._smaaPass.updating||h(this._edgeView)&&this._edgeView.updating||this._shadowAccumulator.running||!this.isCameraFinal}ensureEdgeView(){return d(this._edgeView)&&(this._edgeView=new J({rctx:this._rctx,renderSR:this._stage.renderSR,techniqueRepository:this._shaderTechniqueRepository,setNeedsRender:()=>this._requestRender(),schedule:e=>this._stage.resourceController.schedule(e)}),this._handles.add(this._edgeView.watch("updating",(()=>this._requestRender()),!0)),this._requestRender()),this._edgeView}get edgeView(){return this._edgeView}get isCameraFinal(){return u(this._bindParameters.ssr.reprojectionMatrix,R)}set _reprojectionMatrix(e){t(this._bindParameters.ssr.reprojectionMatrix,e)&&this.notifyChange("isCameraFinal")}get hasShadowsEnabled(){var e;return!(null==(e=this._shadowMap)||!e.enabled)}setRenderParameters(e){const{_shadowMap:r,_ssaoHelper:t,_bindParameters:s}=this;void 0!==e.screenSpaceReflectionsEnabled&&s.ssr.enabled!==e.screenSpaceReflectionsEnabled&&(s.ssr.enabled=e.screenSpaceReflectionsEnabled,this._requestRender()),void 0!==e.enableFillLights&&s.enableFillLights!==e.enableFillLights&&(s.enableFillLights=e.enableFillLights,this._requestRender()),void 0!==e.shadowMap&&r.enabled!==e.shadowMap&&(r.enabled=e.shadowMap,this._requestRender()),void 0!==e.shadowMapMaxCascades&&r.maxCascades!==e.shadowMapMaxCascades&&(r.maxCascades=e.shadowMapMaxCascades,this._requestRender()),void 0!==e.ssao&&t.enabled!==e.ssao&&(t.enabled=e.ssao,this._requestRender()),e.background&&this._offscreenRendering.background!==e.background&&(this._offscreenRendering.background=e.background,this._requestRender());const i=e.antialiasingEnabled?x.SMAA:x.NONE;void 0!==e.antialiasingEnabled&&this._antialiasing!==i&&(this._antialiasing=i,this._requestRender()),void 0!==e.highQualityTransparency&&this._multipassTerrain!==e.highQualityTransparency&&(this._multipassTerrain=e.highQualityTransparency,this._oitEnabled=e.highQualityTransparency&&this._hasOITSupport,this._requestRender()),void 0!==e.defaultHighlightOptions&&(this._highlightHelper.setDefaultOptions(e.defaultHighlightOptions),this._shadowHighlightHelper.setDefaultOptions(e.defaultHighlightOptions),this._requestRender()),void 0!==e.slicePlane&&this._sliceHelper.plane!==e.slicePlane&&(this._sliceHelper.plane=o(e.slicePlane),this._requestRender()),void 0!==e.waterReflectionEnabled&&this._waterReflectionEnabled!==e.waterReflectionEnabled&&(this._waterReflectionEnabled=e.waterReflectionEnabled,this._requestRender()),void 0!==e.enableFillLights&&s.enableFillLights!==e.enableFillLights&&(s.enableFillLights=e.enableFillLights,this._requestRender()),void 0!==e.transparentTerrain&&this._transparentTerrain!==e.transparentTerrain&&(this._transparentTerrain=e.transparentTerrain,this._requestRender()),void 0!==e.hasOverlayWater&&this._hasOverlayWater!==e.hasOverlayWater&&(this._hasOverlayWater=e.hasOverlayWater,this._requestRender()),void 0!==e.shadowCastOptions&&this._shadowAccumulator.setOptions(e.shadowCastOptions)}get hasSlicePlane(){return!!this._sliceHelper.plane}get renderPlugins(){return this._renderPlugins}get _hasOITSupport(){return this._rctx.driverTest.floatBufferBlendWorking}modify(e){this._isRendering&&console.warn("Renderer.modify called while rendering");const{adds:r,removes:t,updates:s}=e;if(0===r.length&&0===t.length&&0===s.length)return;t.forAll((({id:e})=>this._content.delete(e))),r.forAll((e=>this._content.set(e.id,e)));const n=G(e);let a=!1;n.forEach(((e,r)=>{let t=this._materialRenderers.get(r);if(!t){if(!(e.adds.length>0))return;t=new $(this._rctx,this._materialRepository,r),this._materialRenderers.set(r,t)}t.modify(e),t.isEmpty&&(a=!0)})),a&&this._materialRenderers.forEach(((e,r)=>{e.isEmpty&&(this._materialRenderers.delete(r),e.dispose())})),this._hasHighlights=i(this._materialRenderers,(e=>e.hasHighlights)),this._bindParameters.hasOccludees=i(this._materialRenderers,(e=>e.hasOccludees)),this._hasWater=i(this._materialRenderers,(e=>e.hasWater)),this._needsTransparentPass=i(this._materialRenderers,(e=>e.requiresSlot(W.TRANSPARENT_MATERIAL,V.MATERIAL))),this._hasHUDElements=i(this._materialRenderers,(e=>e.requiresSlot(W.LINE_CALLOUTS_HUD_DEPTH,V.MATERIAL)||e.requiresSlot(W.HUD_MATERIAL,V.MATERIAL)||e.requiresSlot(W.LABEL_MATERIAL,V.MATERIAL))),this._requestRender()}updateAnimation(e){return this._hasAnimations=!1,this._materialRenderers.forEach((r=>this._hasAnimations=r.updateAnimation(e)||this._hasAnimations)),this._hasAnimations=this._renderPlugins.updateAnimation(e)||this._hasAnimations,this._hasAnimations}get animationTimestep(){return this._animationTimestep}updateLightSources(e,r,t){this._bindParameters.lighting.groundLightingFactor=r,this._bindParameters.lighting.globalFactor=t,this._bindParameters.lighting.set(e)}render(e,r,t,s){this._isRendering=!0,this.performanceInfo.prerender(this._rctx),this._bindParameters.transparencyPassType=I.NONE;const i=this._offscreenRendering;i.needLastFrameColorTexture=this.hasWaterReflection,i.advanceCurrentRenderTarget();const n=E(this._sliceHelper.plane);s===M.OFF&&(this._sliceHelper.plane=null),this._rctx.bindFramebuffer(e),r.setGLViewport(this._rctx),this._renderPlugins.prepareRender(r,t),this.performanceInfo.advance(ie.Prepare);const a=this._computeDepthRange(r);this._renderShadowMap(e,r,this._bindParameters.lighting.lightingMainDirection,a),this.performanceInfo.advance(ie.Shadowmap),i.initializeFrame(r),this._ensureBindParameters(r),this._renderLinearDepth(),this.performanceInfo.advance(ie.Lineardepth),this._accumulateShadows(a,r,t),this._renderNormal(),this.performanceInfo.advance(ie.Normals),this._ensureBindParametersSSR(),this._ssaoHelper.computeSSAO(this._bindParameters,i.linearDepthTexture,i.normalTexture),this.performanceInfo.advance(ie.SSAO),this._renderContext.pass=V.MATERIAL,i.bindFramebuffer(),this._renderOpaqueGeometry(),this.performanceInfo.advance(ie.Opaque);const o=this._multipassTerrain&&this._transparentTerrain;this._renderTerrainLinearDepth(o),this._setMultipassEnabled(o),this._setTerrainCulling(o),this._renderEdges(Z.OPAQUE),this.performanceInfo.advance(ie.OpaqueEdges),this._renderHiddenTransparentEdges();const l=this._needsTransparentPass||this._renderPlugins.needsTransparentPass;l&&(this._oitEnabled?this._renderOrderIndependentTransparency((()=>this._renderTransparentGeometry()),!1):this._renderTransparentGeometry()),this.performanceInfo.advance(ie.Transparent),this._renderGeometryLinearDepth(o);const _=this._renderHUDVisibility();o||this._renderInternalSlot(W.LINE_CALLOUTS),this.performanceInfo.advance(ie.Hudvisibility),this._renderEdges(Z.TRANSPARENT,o),this.performanceInfo.advance(ie.TransparentEdges),this._renderSlot(W.VOXEL),this._renderTransparentTerrain(),this._transparentTerrain&&_&&(o?this._renderLineCallouts(w.Occluded):i.compositeTransparentTerrainOntoHUDVisibility(),this._renderHUD(w.Occluded,i.framebuffer),this.performanceInfo.advance(ie.HudOccluded)),this.performanceInfo.advance(ie.TransparentTerrain),this._setTerrainCulling(!1),this._transparentTerrain&&(i.compositeTransparentTerrainOntoMain(),o&&(this._renderEdges(Z.OPAQUE),this.performanceInfo.advance(ie.OpaqueEdges),l&&(this._oitEnabled?this._renderOrderIndependentTransparency((()=>this._renderTransparentGeometry()),!1):this._renderTransparentGeometry()),this.performanceInfo.advance(ie.Transparent),this._renderEdges(Z.TRANSPARENT),this.performanceInfo.advance(ie.TransparentEdges))),o&&this._renderLineCallouts(w.NotOccluded),this._setMultipassEnabled(!1),this._shadowAccumulator.render(this._bindParameters),i.renderToTargets((()=>{this._renderInternalSlot(W.TRANSPARENT_DEPTH_WRITE_DISABLED_MATERIAL),this._renderSlot(W.POSTPROCESSING_ENVIRONMENT_TRANSPARENT),this._renderSlot(W.LASERLINES)}),i.currentColorTarget,i.mainDepth),this.performanceInfo.advance(ie.Atmosphere),this._renderPlugins.needsLaserlineWithContrastControl&&i.renderTmpAndCompositeToMain((()=>this._renderSlot(W.LASERLINES_CONTRAST_CONTROL)),ee.PremultipliedAlpha),this.performanceInfo.advance(ie.Laserline),this._renderOccluded(),this.performanceInfo.advance(ie.Occluded);const p=s===M.ON&&this._magnifierHelper.enabled,c=p&&d(e)?this._offscreenRendering.getFramebuffer(this._offscreenRendering.tmpColor,this._offscreenRendering.tmpDepth):e;this._rctx.bindFramebuffer(c);const m=this._offscreenRendering.colorTexture;!this._renderAntiAliasing(this._antialiasing,m)&&h(m)&&this._compositingHelper.composite(m,ee.None),this.performanceInfo.advance(ie.Antialiasing),this._renderHUD(w.NotOccluded,c),this.performanceInfo.advance(ie.HudNotoccluded),this._renderHighlights(c,this._bindParameters),this.performanceInfo.advance(ie.Highlights),p&&this._magnifierHelper.render(this._rctx,this._bindParameters),c!==e&&(this._rctx.bindFramebuffer(e),this._compositingHelper.composite(this._offscreenRendering.tmpColorTexture,ee.None)),this._disposeOITBuffers(),this._renderContext.lastFrameCamera.copyFrom(this._bindParameters.camera),this._sliceHelper.plane=n,this._isRendering=!1,this.onPostRender&&this.onPostRender(),this.performanceInfo.postrender()}finish(e){if(this._hasAnimations||(this._animationTimestep=c(0)),e===L.BACKGROUND){this._rctx.gl.getError();const e=this.performanceInfo.elapsedTime/P;this._animationTimestep=c(Math.max(this._animationTimestep*de+e*(1-de),b))}}readDepthPixels(e,r,t,s,i,n){const a=this._offscreenRendering.bindTarget(this._offscreenRendering.linearDepth,this._offscreenRendering.tmpDepth);if(!this._needsLinearDepth){this._ensureBindParameters(e),this._bindParameters.camera.setGLViewport(this._rctx),this._rctx.setClearColor(0,0,0,0);const r=ne.COLOR_BUFFER_BIT|ne.DEPTH_BUFFER_BIT|ne.STENCIL_BUFFER_BIT;this._rctx.clearSafe(r),this._renderGeometryAndTransparentTerrainPass(V.MATERIAL_DEPTH)}a.readPixels(r,t,s,i,ae.RGBA,he.UNSIGNED_BYTE,n)}readHUDVisibility(e,r,t,s,i){this._offscreenRendering.bindTarget(this._offscreenRendering.hudVisibility).readPixels(e,r,t,s,ae.RGBA,he.UNSIGNED_BYTE,i)}readAccumulatedShadow(e,r){return this._shadowAccumulator.readAccumulatedShadow(e,r)}_setMultipassEnabled(e){this._bindParameters.multipassTerrain.enabled=this._bindParameters.multipassGeometry.enabled=e}_setTerrainCulling(e){this._bindParameters.multipassTerrain.cullAboveGround=e}_renderSlot(e){this._bindParameters.slot=e,this._renderPlugins.render()}_renderEdges(e,r=!1){const t=this._edgeView;h(t)&&t.shouldRender()&&this._offscreenRendering.renderTmpAndCompositeToMain((()=>t.render(this._bindParameters,e)),ee.Alpha,r)}_renderShadowMap(e,r,t,s){const i=this._shadowMap;i.enabled&&(i.start(r,t,s),this._shadowHighlightHelper.updateParameters(r,t),this.needsShadowHighlight?(this._renderShadowCascades(V.MATERIAL_DEPTH_SHADOWMAP_HIGHLIGHT,this._shadowMap,(e=>i.takeCascadeSnapshotTo(e,re))),i.clear(),this._renderShadowCascades(V.MATERIAL_DEPTH_SHADOWMAP_DEFAULT,this._shadowMap,(e=>{i.takeCascadeSnapshotTo(e,te),this._renderGeometryAndTransparentTerrainPass(V.MATERIAL_DEPTH_SHADOWMAP_HIGHLIGHT)}))):this._renderShadowCascades(V.MATERIAL_DEPTH_SHADOWMAP_ALL),i.finish(e),r.setGLViewport(this._rctx))}_renderShadowCascades(e,r=this._shadowMap,t=(e=>{})){for(const s of r.getCascades())s.camera.setGLViewport(this._rctx),this._ensureCameraBindParameters(s.camera),this._renderGeometryAndTransparentTerrainPass(e),t(s)}get _needsLinearDepth(){return this._ssaoHelper.enabled||this._renderPlugins.needsLinearDepth||this._hasWater&&this._waterReflectionEnabled||this.needsShadowHighlight||this.needsShadowCast}_renderLinearDepth(){this._needsLinearDepth?this._offscreenRendering.renderToTargets((()=>this._renderGeometryAndTransparentTerrainPass(V.MATERIAL_DEPTH)),this._offscreenRendering.linearDepth,this._offscreenRendering.tmpDepth,[0,0,0,0],!0,!0):this._offscreenRendering.disposeTarget(this._offscreenRendering.linearDepth),this._bindParameters.ssr.linearDepthTexture=this._offscreenRendering.linearDepthTexture}_renderTerrainLinearDepth(e){if(e){const e=this._renderContext.pass;this._renderContext.pass=V.MATERIAL_DEPTH,this._offscreenRendering.renderToTargets((()=>this._renderTransparentTerrain()),this._offscreenRendering.terrainLinearDepth,this._offscreenRendering.tmpDepth,[-1e10,-1e10,-1e10,1],!0,!0),this._renderContext.pass=e}else this._offscreenRendering.disposeTarget(this._offscreenRendering.terrainLinearDepth);this._bindParameters.multipassTerrain.linearDepthTexture=this._offscreenRendering.terrainLinearDepthTexture}_renderGeometryLinearDepth(e){if(e){const e=this._renderContext.pass;this._offscreenRendering.renderToTargets((()=>this._renderGeometryPass(V.MATERIAL_DEPTH)),this._offscreenRendering.geometryLinearDepth,this._offscreenRendering.tmpDepth,[1,1,1,1],!0,!0),this._renderContext.pass=e}else this._offscreenRendering.disposeTarget(this._offscreenRendering.geometryLinearDepth);this._bindParameters.multipassGeometry.linearDepthTexture=this._offscreenRendering.geometryLinearDepthTexture}get needsNormal(){return this._ssaoHelper.enabled}_renderNormal(){this.needsNormal?this._offscreenRendering.renderToTargets((()=>{this._renderGeometryAndTransparentTerrainPass(V.MATERIAL_NORMAL)}),this._offscreenRendering.normal,this._offscreenRendering.tmpDepth,[0,0,0,0],!0,!0):this._offscreenRendering.disposeTarget(this._offscreenRendering.normal)}get needsDepthRange(){return this._shadowMap.enabled||this.needsShadowCast}_computeDepthRange(e){if(!this.needsDepthRange)return C;const r=N(e,this._content,this._stage.layers);return y(r,this.renderPlugins.queryDepthRange(e)),r.near=Math.max(e.near,r.near),r.far=Math.min(e.far,r.far),r}_renderGeometryAndTransparentTerrainPass(e){this._renderContext.pass=e,this._renderGeometryPass(e),this._renderTransparentTerrain()}_renderGeometryPass(e){this._renderContext.pass=e,this._renderOpaqueGeometry(),this._renderTransparentGeometry()}_renderOpaqueGeometry(){this._renderSlot(W.INTEGRATED_MESH),this._renderSlot(W.OPAQUE_TERRAIN),this._renderInternalSlot(W.OPAQUE_MATERIAL),this._renderSlot(W.OPAQUE_MATERIAL),this._renderSlot(W.POSTPROCESSING_ENVIRONMENT_OPAQUE)}_renderTransparentGeometry(){this._renderInternalSlot(W.TRANSPARENT_MATERIAL),this._renderSlot(W.TRANSPARENT_MATERIAL)}_renderTransparentTerrain(){this._renderSlot(W.TRANSPARENT_TERRAIN)}_renderHUDVisibility(){let e=!1;return this._renderContext.offscreenRenderingHelper&&this._renderContext.offscreenRenderingHelper.renderHUDVisibility((()=>{this._bindParameters.hudVisibilityTexture=this._renderContext.offscreenRenderingHelper.hudVisibilityTexture,e=this._renderInternalSlot(W.OCCLUSION_PIXELS)}),this._multipassTerrain&&this._transparentTerrain),e}_renderLineCallouts(e){this._bindParameters.renderTransparentlyOccludedHUD=e,e===w.Occluded?this._offscreenRendering.renderToTargets((()=>this._renderInternalSlot(W.LINE_CALLOUTS)),this._offscreenRendering.currentColorTarget,this._offscreenRendering.tmpDepth,void 0,!0,!0):this._renderInternalSlot(W.LINE_CALLOUTS)}_renderHUD(e,r){this._hasHUDElements&&(this._oitEnabled?(this._renderOrderIndependentTransparency((()=>this._renderHUDElements(e)),!0),this._rctx.bindFramebuffer(r),this._compositingHelper.composite(this._offscreenRendering.hudColorTexture,ee.PremultipliedAlpha)):e===w.Occluded?this._offscreenRendering.renderToTargets((()=>this._renderHUDElements(w.Occluded)),this._offscreenRendering.currentColorTarget,this._offscreenRendering.tmpDepth,void 0,!0,!0):this._renderHUDElements(e))}_renderHUDElements(e){this._bindParameters.renderTransparentlyOccludedHUD=e,this._renderInternalSlot(W.LINE_CALLOUTS_HUD_DEPTH),this._renderInternalSlot(W.HUD_MATERIAL),this._renderInternalSlot(W.LABEL_MATERIAL)}get needsHighlight(){return this._hasHighlights||this._renderPlugins.needsHighlight}get needsShadowHighlight(){return this._shadowMap.enabled&&this._shadowHighlightHelper.isVisible&&this.needsHighlight}_renderHighlights(e,r){if(!this.needsHighlight)return void this._offscreenRendering.disposeTarget(this._offscreenRendering.highlight);const t=this._highlightHelper,s=this._offscreenRendering.renderToTargets((()=>{this._renderGeometryAndTransparentTerrainPass(V.MATERIAL_HIGHLIGHT),this._rctx.clearSafe(ne.DEPTH_BUFFER_BIT),this._renderHUDElements(w.Both)}),this._offscreenRendering.highlight,this._offscreenRendering.tmpDepth,[0,0,0,0],!0,!0);this._bindParameters.highlightColorTexture=s.colorTexture,this.needsShadowHighlight&&this._shadowHighlightHelper.render(r,e),t.render(this._bindParameters,s,e)}get needsShadowCast(){return this._shadowAccumulator.isAccumulating}_accumulateShadows(e,r,t){this.needsShadowCast&&(this._shadowAccumulator.setAccumulationDependencies(this._offscreenRendering.linearDepthTexture,e,r,t),this._shadowAccumulator.accumulateFixedSamples(this._bindParameters))}_renderOrderIndependentTransparency(e,r){const t=t=>{this._bindParameters.transparencyPassType=t,this._offscreenRendering.renderOITPass((()=>e()),t,r)},s=this._renderContext.pass;this._renderContext.pass=V.MATERIAL_ALPHA,t(I.Alpha),this._renderContext.pass=V.MATERIAL,t(I.Color),t(I.FrontFace),this._offscreenRendering.compositeTransparentOntoOpaque(r),this._bindParameters.transparencyPassType=I.NONE,this._renderContext.pass=s,this._oitUsed=!0}_disposeOITBuffers(){this._oitUsed||(this._offscreenRendering.disposeTarget(this._offscreenRendering.alphaFloatTarget),this._offscreenRendering.disposeTarget(this._offscreenRendering.colorFloatTarget),this._offscreenRendering.disposeTarget(this._offscreenRendering.frontFaceTarget)),this._oitUsed=!1}_renderOccluded(){let e=0;this._materialRenderers.forEach(((r,t)=>{t&&t.isVisible()&&t.renderOccluded===F.OccludeAndTransparentStencil&&(e|=t.renderOccluded,pe.push(t))}));const r=this._offscreenRendering,t=(t,s,i,n,a)=>{0!=(e&s)&&(r.renderToTargets(i,r.tmpColor,r.mainDepth,[0,0,0,0],n,a),r.compositeOccludedOntoMain(t))};0!==pe.length&&(this._renderInternalSlot(W.OCCLUDER_MATERIAL,pe),t(.5,F.OccludeAndTransparentStencil,(()=>this._renderInternalSlot(W.TRANSPARENT_OCCLUDER_MATERIAL,pe)),!1,!1),pe.length=0),this._materialRenderers.forEach(((r,t)=>{t&&t.isVisible()&&(t.renderOccluded===F.OccludeAndTransparent||t.renderOccluded===F.Transparent||t.renderOccluded===F.Opaque)&&(e|=t.renderOccluded,_e.push(t))}));const s=this._renderPlugins.renderOccludedFlags;if(e|=s,!e)return;const i=e=>{this._renderContext.renderOccludedMask=e,s>F.Occlude&&this._renderSlot(W.OCCLUDED_TERRAIN),this._renderInternalSlot(W.OPAQUE_MATERIAL,_e),this._renderInternalSlot(W.TRANSPARENT_MATERIAL,_e),this._renderInternalSlot(W.TRANSPARENT_DEPTH_WRITE_DISABLED_MATERIAL,_e),this._renderContext.resetRenderOccludedMask()};this._renderContext.pass=V.MATERIAL,t(.5,F.OccludeAndTransparent,(()=>i(F.OccludeAndTransparent)),!0,O.OutlineVisualElementMask),t(.5,F.Transparent,(()=>i(F.Transparent)),!0,O.OutlineVisualElementMask),t(1,F.Opaque,(()=>i(F.Opaque)),!0,O.OutlineVisualElementMask),_e.length=0}_renderAntiAliasing(e,r){if(e===x.SMAA){if(this._smaaPass.enable((()=>this._requestRender()))&&h(r))return this._smaaPass.render(r),!0}else this._smaaPass.disable();return!1}_ensureCameraBindParameters(e){this._bindParameters.camera=e}_ensureBindParameters(e){var r;this._ensureCameraBindParameters(e);const t=this._renderContext.offscreenRenderingHelper;this._bindParameters.hudVisibilityTexture=t.hudVisibilityTexture,this._bindParameters.highlightDepthTexture=null!=(r=t.depthTexture)?r:this._getFallbackDepthTexture()}_ensureBindParametersSSR(){this.hasWaterReflection?(this._renderContext.lastFrameCamera.equals(this._bindParameters.camera)?this._reprojectionMatrix=R:(f(me,this._bindParameters.camera.viewMatrix),f(ce,this._bindParameters.camera.projectionMatrix),T(ge,me,ce),T(ge,this._renderContext.lastFrameCamera.viewMatrix,ge),T(ge,this._renderContext.lastFrameCamera.projectionMatrix,ge),this._reprojectionMatrix=ge),this._bindParameters.ssr.lastFrameColorTexture=this._offscreenRendering.lastFrameColorTexture):this._bindParameters.ssr.lastFrameColorTexture=null,this._bindParameters.ssr.enabled=this.hasWaterReflection}_renderInternalSlot(e,r){let t=!1;return this._bindParameters.slot=e,h(r)?r.forEach((e=>{if(!e.shouldRender(this._renderContext))return;const r=this._materialRenderers.get(e);h(r)&&(t=r.render(this._renderContext.pass,this._bindParameters)||t)})):this._materialRenderers.forEach(((e,r)=>{r.shouldRender(this._renderContext)&&e.render(this._renderContext.pass,this._bindParameters)&&(t=!0)})),t}_getFallbackDepthTexture(){return this._fallbackDepthStencilTexture||(this._fallbackDepthStencilTexture=v(this._rctx)),this._fallbackDepthStencilTexture}get gpuMemoryUsage(){var e,r,t,s,i,n,a,h,d,o;return{offscreen:null!=(e=null==(r=this._offscreenRendering)?void 0:r.gpuMemoryUsage)?e:0,highlights:(null!=(t=null==(s=this._highlightHelper)?void 0:s.gpuMemoryUsage)?t:0)+(null!=(i=null==(n=this._shadowHighlightHelper)?void 0:n.gpuMemoryUsage)?i:0),shadows:null!=(a=null==(h=this._shadowMap)?void 0:h.gpuMemoryUsage)?a:0,ssao:null!=(d=null==(o=this._ssaoHelper)?void 0:o.gpuMemoryUsage)?d:0}}get test(){const e=this;return{offscreen:this._offscreenRendering,shadowMap:this._shadowMap,ssao:this._ssaoHelper,highlight:this._highlightHelper,lighting:this._bindParameters.lighting,materialRenderers:this._materialRenderers,shadowAccumulator:this._shadowAccumulator,getFramebufferTexture:r=>{var t;switch(r){case le.Color:return e._offscreenRendering.colorTexture;case le.LinearDepth:return e._offscreenRendering.linearDepthTexture;case le.Normals:return e._offscreenRendering.normalTexture;case le.ShadowMap:return null==(t=e._shadowMap)?void 0:t.test.depthTexture;case le.HudVisibility:return e._offscreenRendering.hudVisibilityTexture;case le.Highlight:return e._offscreenRendering.highlightTexture}}}}};var le;e([m()],oe.prototype,"_shadowAccumulator",void 0),e([m()],oe.prototype,"_smaaPass",void 0),e([m()],oe.prototype,"_antialiasing",void 0),e([m()],oe.prototype,"_edgeView",void 0),e([m()],oe.prototype,"updating",null),e([m()],oe.prototype,"isCameraFinal",null),oe=e([g("esri.views.3d.webgl-engine.lib.Renderer")],oe),function(e){e[e.Color=0]="Color",e[e.LinearDepth=1]="LinearDepth",e[e.Normals=2]="Normals",e[e.ShadowMap=3]="ShadowMap",e[e.HudVisibility=4]="HudVisibility",e[e.Highlight=5]="Highlight"}(le||(le={}));const _e=[],pe=[],ce=A(),me=A(),ge=A();export{le as FramebufferId,oe as Renderer};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.24/esri/copyright.txt for details.
4
4
  */
5
- import{releaseMaybe as e,isNone as t}from"../../../../../core/maybe.js";import s from"../../../../../core/PooledArray.js";import{t as r,e as i,g as n}from"../../../../../chunks/mat3.js";import{c as o}from"../../../../../chunks/mat3f32.js";import{c as a,s as h}from"../../../../../chunks/vec3.js";import l from"../../../support/debugFlags.js";import{doublePrecisionRequiresObfuscation as c}from"../../core/shaderLibrary/util/DoublePrecision.glsl.js";import{TwoVectorPosition as d}from"../../core/util/TwoVectorPosition.js";import{EdgeDrawParameters as u}from"./EdgeShaderParameters.js";import{EdgeShaderTechnique as m}from"./EdgeShaderTechnique.js";import{EdgeShaderTechniqueConfiguration as f}from"./EdgeShaderTechniqueConfiguration.js";import{Transparency as g}from"./interfaces.js";import{EdgeUtilMode as T}from"../../shaders/sources/edgeRenderer/EdgeUtil.glsl.js";import{PrimitiveType as b}from"../../../../webgl/enums.js";const R=8,A=128,p={type:"uber",hasSlicePlane:!1,strokesTexture:null,legacy:!0};class E{constructor(){this._value=0}get value(){return this._value}increment(){this._value++}decrement(){this._value--}}const S={solid:T.SOLID,sketch:T.SKETCH,uber:T.MIXED};class P{constructor(e,t,r){this.rctx=e,this.shaderTechniqueRepository=t,this._configuration=new f,this._technique=null,this.refCount=new E,this.renderables=new Set,this.sortedRenderables={[g.TRANSPARENT]:{[g.TRANSPARENT]:new s,[g.OPAQUE]:new s},[g.OPAQUE]:{[g.TRANSPARENT]:new s,[g.OPAQUE]:new s}},this.renderablesDirty=!1,this.settings={...p,...r},this.key=P.getKey(this.settings.type,this.settings.hasSlicePlane,this.settings.legacy);const i=this.settings.strokesTexture.variants;this.writerSettings={variants:i,reducedPrecision:l.TESTS_DISABLE_OPTIMIZATIONS},this._configuration.legacy=this.settings.legacy,this._configuration.mode=S[this.settings.type],this._configuration.silhouette=!1,this._configuration.antialiasing=!!this.rctx.capabilities.blendMinMax,this._configuration.hasSlicePlane=this.settings.hasSlicePlane,this._configuration.doublePrecisionRequiresObfuscation=c(e)}dispose(){this._technique=e(this._technique)}addRenderable(e){this.renderables.add(e),this.renderablesDirty=!0}removeRenderable(e){this.renderables.delete(e),this.renderablesDirty=!0}setRenderablesDirty(){this.renderablesDirty=!0}forEachRenderable(e,t){this.renderablesDirty&&this._sortRenderables(),this.sortedRenderables[t][g.TRANSPARENT].forAll(e),this.sortedRenderables[t][g.OPAQUE].forAll(e)}updateTechnique(e,t){this._configuration.hasMultipassTerrain=!!e.multipassTerrain.enabled,this._configuration.cullAboveGround=!!e.multipassTerrain.cullAboveGround,this._configuration.silhouette=t,this._technique=this.shaderTechniqueRepository.releaseAndAcquire(m,this._configuration,this._technique)}bindRegularEdges(e,t){this.updateTechnique(t,!1),this.rctx.bindTechnique(this._technique,e,t)}bindSilhouetteEdges(e,t){this.updateTechnique(t,!0),this.rctx.bindTechnique(this._technique,e,t)}renderRegularEdges(e,t,s,r){this._render(e,e.regular.vao,t,s,r)}renderSilhouetteEdges(e,t,s,r){this._render(e,e.silhouette.vao,t,s,r)}_render(e,t,s,r,i){this._setUniforms(e,s,i),this.rctx.bindVAO(t),this.rctx.capabilities.instancing.drawArraysInstanced(b.TRIANGLE_FAN,0,4,r)}_setUniforms(e,t,s){const o=this._technique.program;e.components.buffer.textureBuffer.bind(o,_,N);const l=new u;if("origin"in e.transform)o.setUniformMatrix4fv("view",s),o.setUniformMatrix4fv("model",e.transform.modelMatrix),a(l.slicePlaneLocalOrigin,e.transform.origin.vec3),this._technique.bindDraw(l,t);else{const s=new d(e.transform.position),c=r(y,i(y,e.transform.rotationScale));a(l.transformWorldFromModelTL,s.low),a(l.transformWorldFromModelTH,s.high),n(l.transformWorldFromModelRS,e.transform.rotationScale),o.setUniformMatrix3fv("transformNormalGlobalFromModel",c);const u=t.camera.viewInverseTransposeMatrix;h(l.slicePlaneLocalOrigin,u[3],u[7],u[11]),this._technique.bindDraw(l,t)}"uber"!==this.settings.type&&"sketch"!==this.settings.type||this._setSketchUniforms(o)}_setSketchUniforms(e){const s=this.settings.strokesTexture,r=s.texture;t(r)||(e.bindTexture("strokesTexture",r),e.setUniform2f("strokesTextureScale",1/r.descriptor.width,1/r.descriptor.height),e.setUniform1f("strokesLog2Resolution",Math.log2(s.resolution)),e.setUniform1f("strokesNormalizationScale",s.normalizationScale),e.setUniform1f("strokesAmplitude",s.amplitude),e.setUniform1f("strokeVariants",s.variants))}_sortRenderables(){this.renderablesDirty=!1,this.sortedRenderables[g.TRANSPARENT][g.TRANSPARENT].clear(),this.sortedRenderables[g.TRANSPARENT][g.OPAQUE].clear(),this.sortedRenderables[g.OPAQUE][g.TRANSPARENT].clear(),this.sortedRenderables[g.OPAQUE][g.OPAQUE].clear(),this.renderables.forEach((e=>{e.objectTransparency!==g.INVISIBLE&&e.edgeTransparency!==g.INVISIBLE&&this.sortedRenderables[e.objectTransparency][e.edgeTransparency].push(e)}));const e=(e,t)=>"origin"in e.transform&&"origin"in t.transform?e.transform.origin.id<t.transform.origin.id?-1:e.transform.origin.id>t.transform.origin.id?1:0:0;this.sortedRenderables[g.TRANSPARENT][g.TRANSPARENT].sort(e),this.sortedRenderables[g.TRANSPARENT][g.OPAQUE].sort(e),this.sortedRenderables[g.OPAQUE][g.TRANSPARENT].sort(e),this.sortedRenderables[g.OPAQUE][g.OPAQUE].sort(e)}static getKey(e,t,s){return`edges-t:${e}:${t}:${s}`}}const _="componentDataTex",N="componentDataTexInvDim",y=o();export{A as EXTENSION_LENGTH_OFFSET,P as EdgeRenderer,R as LINE_WIDTH_FRACTION_FACTOR,N as componentDataInvDimName,_ as componentDataTexName};
5
+ import{releaseMaybe as e,isNone as r}from"../../../../../core/maybe.js";import t from"../../../../../core/PooledArray.js";import{t as s,e as i}from"../../../../../chunks/mat3.js";import{c as n}from"../../../../../chunks/mat3f32.js";import{c as o,s as a}from"../../../../../chunks/vec3.js";import h from"../../../support/debugFlags.js";import{doublePrecisionRequiresObfuscation as l}from"../../core/shaderLibrary/util/DoublePrecision.glsl.js";import{TwoVectorPosition as d}from"../../core/util/TwoVectorPosition.js";import{EdgeDrawParameters as c}from"./EdgeShaderParameters.js";import{EdgeShaderTechnique as u}from"./EdgeShaderTechnique.js";import{EdgeShaderTechniqueConfiguration as m}from"./EdgeShaderTechniqueConfiguration.js";import{Transparency as f}from"./interfaces.js";import{EdgeUtilMode as g}from"../../shaders/sources/edgeRenderer/EdgeUtil.glsl.js";import{PrimitiveType as b}from"../../../../webgl/enums.js";const T=8,_=128,R={type:"uber",hasSlicePlane:!1,strokesTexture:null,legacy:!0};class A{constructor(){this._value=0}get value(){return this._value}increment(){this._value++}decrement(){this._value--}}const p={solid:g.SOLID,sketch:g.SKETCH,uber:g.MIXED};class P{constructor(e,r,s){this.rctx=e,this.shaderTechniqueRepository=r,this._configuration=new m,this.refCount=new A,this.renderables=new Set,this.sortedRenderables={[f.TRANSPARENT]:{[f.TRANSPARENT]:new t,[f.OPAQUE]:new t},[f.OPAQUE]:{[f.TRANSPARENT]:new t,[f.OPAQUE]:new t}},this._renderablesDirty=!1,this._drawParameters=new c,this._settings={...R,...s},this.key=P.getKey(this._settings.type,this._settings.hasSlicePlane,this._settings.legacy);const i=this._settings.strokesTexture.variants;this.writerSettings={variants:i,reducedPrecision:h.TESTS_DISABLE_OPTIMIZATIONS},this._configuration.legacy=this._settings.legacy,this._configuration.mode=p[this._settings.type],this._configuration.silhouette=!1,this._configuration.antialiasing=!!this.rctx.capabilities.blendMinMax,this._configuration.hasSlicePlane=this._settings.hasSlicePlane,this._configuration.doublePrecisionRequiresObfuscation=l(e)}dispose(){this._technique=e(this._technique)}addRenderable(e){this.renderables.add(e),this._renderablesDirty=!0}removeRenderable(e){this.renderables.delete(e),this._renderablesDirty=!0}setRenderablesDirty(){this._renderablesDirty=!0}forEachRenderable(e,r){this._renderablesDirty&&this._sortRenderables(),this.sortedRenderables[r][f.TRANSPARENT].forAll(e),this.sortedRenderables[r][f.OPAQUE].forAll(e)}updateTechnique(e,r){return this._configuration.hasMultipassTerrain=!!e.multipassTerrain.enabled,this._configuration.cullAboveGround=!!e.multipassTerrain.cullAboveGround,this._configuration.silhouette=r,this._technique=this.shaderTechniqueRepository.releaseAndAcquire(u,this._configuration,this._technique),this._technique}bindRegularEdges(e,r){return this.rctx.bindTechnique(this.updateTechnique(r,!1),e,r)}bindSilhouetteEdges(e,r){return this.rctx.bindTechnique(this.updateTechnique(r,!0),e,r)}renderRegularEdges(e,r,t,s,i){this._render(e,r,r.regular.vao,t,s,i)}renderSilhouetteEdges(e,r,t,s,i){this._render(e,r,r.silhouette.vao,t,s,i)}_render(e,r,t,s,i,n){this._bindDraw(e,r,s,n),this.rctx.bindVAO(t),this.rctx.capabilities.instancing.drawArraysInstanced(b.TRIANGLE_FAN,0,4,i)}_bindDraw(e,r,t,n){if(r.components.buffer.textureBuffer.bind(e,E,S),"origin"in r.transform)e.setUniformMatrix4fv("localView",n),e.setUniformMatrix4fv("model",r.transform.modelMatrix),o(this._drawParameters.slicePlaneLocalOrigin,r.transform.origin.vec3);else{const e=new d(r.transform.position),n=s(N,i(N,r.transform.rotationScale));this._drawParameters.transformWorldFromModelTL=e.low,this._drawParameters.transformWorldFromModelTH=e.high,this._drawParameters.transformWorldFromModelRS=r.transform.rotationScale,this._drawParameters.transformNormalGlobalFromModel=n;const o=t.camera.viewInverseTransposeMatrix;a(this._drawParameters.slicePlaneLocalOrigin,o[3],o[7],o[11])}e.bindDraw(this._drawParameters,t),"uber"!==this._settings.type&&"sketch"!==this._settings.type||this._setSketchUniforms(e)}_setSketchUniforms(e){const t=this._settings.strokesTexture,s=t.texture;r(s)||(e.bindTexture("strokesTexture",s),e.setUniform2f("strokesTextureScale",1/s.descriptor.width,1/s.descriptor.height),e.setUniform1f("strokesLog2Resolution",Math.log2(t.resolution)),e.setUniform1f("strokesNormalizationScale",t.normalizationScale),e.setUniform1f("strokesAmplitude",t.amplitude),e.setUniform1f("strokeVariants",t.variants))}_sortRenderables(){this._renderablesDirty=!1,this.sortedRenderables[f.TRANSPARENT][f.TRANSPARENT].clear(),this.sortedRenderables[f.TRANSPARENT][f.OPAQUE].clear(),this.sortedRenderables[f.OPAQUE][f.TRANSPARENT].clear(),this.sortedRenderables[f.OPAQUE][f.OPAQUE].clear(),this.renderables.forEach((e=>{e.objectTransparency!==f.INVISIBLE&&e.edgeTransparency!==f.INVISIBLE&&this.sortedRenderables[e.objectTransparency][e.edgeTransparency].push(e)}));const e=(e,r)=>"origin"in e.transform&&"origin"in r.transform?e.transform.origin.id<r.transform.origin.id?-1:e.transform.origin.id>r.transform.origin.id?1:0:0;this.sortedRenderables[f.TRANSPARENT][f.TRANSPARENT].sort(e),this.sortedRenderables[f.TRANSPARENT][f.OPAQUE].sort(e),this.sortedRenderables[f.OPAQUE][f.TRANSPARENT].sort(e),this.sortedRenderables[f.OPAQUE][f.OPAQUE].sort(e)}static getKey(e,r,t){return`edges-t:${e}:${r}:${t}`}}const E="componentDataTex",S="componentDataTexInvDim",N=n();export{_ as EXTENSION_LENGTH_OFFSET,P as EdgeRenderer,T as LINE_WIDTH_FRACTION_FACTOR,S as componentDataInvDimName,E as componentDataTexName};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.24/esri/copyright.txt for details.
4
4
  */
5
- import{c as s}from"../../../../../chunks/mat3f64.js";import{c as r}from"../../../../../chunks/vec3f64.js";import{VertexPositionPassParameters as t,VertexPositionDrawParameters as o}from"../../core/shaderLibrary/attributes/VertexPosition.glsl.js";class a extends t{constructor(r,t,o){super(),this.distanceFalloffFactor=r,this.minimumEdgeLength=t,this.transparency=o,this.transformNormalViewFromGlobal=s()}}class e extends o{constructor(){super(...arguments),this.transformNormalViewFromGlobal=s(),this.slicePlaneLocalOrigin=r()}}export{e as EdgeDrawParameters,a as EdgePassParameters};
5
+ import{c as r}from"../../../../../chunks/mat3f64.js";import{c as s}from"../../../../../chunks/vec3f64.js";import{VertexPositionPassParameters as o,VertexPositionDrawParameters as t}from"../../core/shaderLibrary/attributes/VertexPosition.glsl.js";class a extends o{constructor(s,o,t){super(),this.distanceFalloffFactor=s,this.minimumEdgeLength=o,this.transparency=t,this.transformNormalViewFromGlobal=r()}}class e extends t{constructor(){super(...arguments),this.transformNormalViewFromGlobal=r(),this.slicePlaneLocalOrigin=s(),this.transformNormalGlobalFromModel=r()}}export{e as EdgeDrawParameters,a as EdgePassParameters};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.24/esri/copyright.txt for details.
4
4
  */
5
- import{_ as e}from"../../../../../chunks/tslib.es6.js";import t from"../../../../../core/Accessor.js";import{equals as r}from"../../../../../core/arrayUtils.js";import s from"../../../../../core/Logger.js";import{clamp as o}from"../../../../../core/mathUtils.js";import{disposeMaybe as n,destroyMaybe as i,isNone as a,isSome as c}from"../../../../../core/maybe.js";import{property as d}from"../../../../../core/accessorSupport/decorators/property.js";import"../../../../../core/has.js";import"../../../../../core/accessorSupport/ensureType.js";import{subclass as l}from"../../../../../core/accessorSupport/decorators/subclass.js";import{f as g,t as m,e as u}from"../../../../../chunks/mat3.js";import{c as h}from"../../../../../chunks/mat3f64.js";import{c as p}from"../../../../../chunks/mat4.js";import{I as f,c as b}from"../../../../../chunks/mat4f64.js";import{s as y,c as j,v as O,e as v}from"../../../../../chunks/vec3.js";import{c as w}from"../../../../../chunks/vec3f64.js";import{WatchUpdatingTracking as E}from"../../../../../core/support/WatchUpdatingTracking.js";import{g as R,l as x}from"../../../../../chunks/sphere.js";import{c as T}from"../../../../../chunks/vec33.js";import{TwoVectorPosition as _}from"../../core/util/TwoVectorPosition.js";import{GridLocalOriginFactory as M}from"../GridLocalOriginFactory.js";import{applyToModelMatrix as C}from"../localOriginHelper.js";import{LocalOriginManager as P}from"../LocalOriginManager.js";import{Object3D as S}from"../Object3D.js";import{VertexAttribute as D}from"../VertexAttribute.js";import{VertexLayout as A,EdgeShaderAttributeLocations as k,glVertexLayout as I,EdgeInputBufferLayout as B}from"./bufferLayouts.js";import{RegularEdgeBufferWriter as L,SilhouetteEdgeBufferWriter as U}from"./edgeBufferWriters.js";import{EdgeType as V}from"./edgePreprocessing.js";import{EdgeRenderer as N,LINE_WIDTH_FRACTION_FACTOR as H,EXTENSION_LENGTH_OFFSET as z}from"./EdgeRenderer.js";import{EdgePassParameters as W}from"./EdgeShaderParameters.js";import q from"./EdgeWorkerHandle.js";import{Transparency as K}from"./interfaces.js";import{generateStrokesTexture as G}from"./strokes.js";import{determineRendererType as F,determineEdgeTransparency as Q,determineObjectTransparency as J,fillComponenBufferIndices as X,computeEdgeCount as Y}from"./util.js";import{BufferManager as Z}from"../TextureBackedBuffer/BufferManager.js";import{BufferObject as $}from"../../../../webgl/BufferObject.js";import{Usage as ee}from"../../../../webgl/enums.js";import{VertexArrayObject as te}from"../../../../webgl/VertexArrayObject.js";const re=s.getLogger("esri.views.3d.webgl-engine.lib.edgeRendering.EdgeView");let se=class extends t{constructor(e){super(e),this.updatingHandles=new E,this.perObjectData=new Map,this.perObjectDataEvictionCache=new Set,this.renderers=new Map,this.numberOfRenderedEdges={[K.TRANSPARENT]:0,[K.OPAQUE]:0},this.gpuMemoryUsage=0,this.workerAbort=new AbortController,this.tmpModelPosition=w(),this.localOrigins=new P(new M(e.renderSR))}initialize(){this.worker=new q(this.schedule),this.componentColorManager=new Z(this.rctx,2);const e=A.createBuffer(4);for(let t=0;t<4;t++)e.sideness.set(t,0,0===t||3===t?0:1),e.sideness.set(t,1,0===t||1===t?0:1);this.verticesBufferObject=$.createVertex(this.rctx,ee.STATIC_DRAW,e.buffer)}destroy(){this.destroyed||(this.perObjectData.forEach((e=>this._discardObjectEntry(e))),this.perObjectData.clear(),this.strokesTexture=n(this.strokesTexture),this.componentColorManager=i(this.componentColorManager),this.workerAbort.abort(),this.worker.destroy(),this.verticesBufferObject=n(this.verticesBufferObject),this.renderers.clear(),this.updatingHandles.destroy())}get updating(){return this.updatingHandles.updating}get usedMemory(){return this.gpuMemoryUsage}get numberOfRenderedPrimitives(){return this.numberOfRenderedEdges[K.TRANSPARENT]+this.numberOfRenderedEdges[K.OPAQUE]}shouldRender(){return this.renderers.size>0}async addComponentObject(e,t,r,s,o,n,i,a){if(this.hasObject(e))return this.getObjectMemoryUsage(e);let c;const d=new ie(new Promise((e=>c=e)),r.center,r.radius);this.perObjectData.set(e,d);const l=await this.updatingHandles.addPromise(this._addComponentGeometry(t,d,s,o,n,i,a));return this.setNeedsRender(),c(),l}async addOrUpdateObject3D(e,t,r,s){if(this.destroyed)return void re.warn("Attempt to add an object to a destroyed instance");const o=this.perObjectData.get(e);let n;(null==o?void 0:o.renderables.length)>0&&this.perObjectDataEvictionCache.add(o);const i=e.boundingVolumeWorldSpace.bounds,a=new ie(new Promise((e=>n=e)),R(i),x(i));this.perObjectData.set(e,a);const c=new Array;if(r.mergeGeometries&&e.geometries.length>1&&ne(e))c.push(this._addObjectMergedGeometries(e,a,t,r,s));else for(let d=0;d<e.geometries.length;d++){const o=e.geometryRecords[d];if(!o.material.supportsEdges)continue;const n=e.geometries[d];c.push(this._addGeometry(e,a,n,o,t[0],r,s))}await this.updatingHandles.addPromise(Promise.all(c)),this.perObjectDataEvictionCache.delete(a),this._discardObjectEntry(o),this.setNeedsRender(),n()}_discardObjectEntry(e){e&&(e.renderables.length&&(e.renderables.forEach((e=>this._removeRenderable(e))),this.setNeedsRender()),e.loaded=null)}hasObject(e){return this.perObjectData.has(e)}async updateAllComponentOpacities(e,t){const r=t instanceof Array?e=>t[e]:()=>t;(await this.updatingHandles.addPromise(this._getObjectEntry(e))).renderables.forEach((e=>{const t=e.components.meta.length;for(let s=0;s<t;s++){const t=r(s),o=e.components.meta[s],n=o.index;o.material.opacity=t,e.components.buffer.textureBuffer.setDataElement(n,1,3,255*t)}this._updateTransparency(e)})),this.setNeedsRender()}async getObjectMemoryUsage(e){return(await this._getObjectEntry(e)).renderables.reduce(((e,t)=>e+t.statistics.gpuMemoryUsage),0)}async updateAllComponentMaterials(e,t,r,s){const o=e instanceof S,n=!!r.hasSlicePlane,i=F(t),a=N.getKey(i,n,o);(await this.updatingHandles.addPromise(this._getObjectEntry(e))).renderables.forEach((e=>{if(a!==e.rendererKey){const t=this.renderers.get(e.rendererKey),r=this._acquireRenderer(i,n,o);t.removeRenderable(e),t.refCount.decrement(),e.rendererKey=a,r.addRenderable(e)}for(let r=0;r<t.length;r++)e.components.meta[r].material=t[r];s&&this._updateComponentBuffer(e.components),this._updateTransparency(e)})),this.setNeedsRender()}async updateObjectVisibility(e,t){(await this.updatingHandles.addPromise(this._getObjectEntry(e))).renderables.forEach((e=>e.visible=t)),this.setNeedsRender()}removeObject(e){const t=this.perObjectData.get(e);t&&(this.perObjectData.delete(e),this._discardObjectEntry(t))}async _getObjectEntry(e){const t=this.perObjectData.get(e);if(!t)throw"no object";return await t.loaded,t}removeAll(){this.perObjectData.forEach(((e,t)=>this.removeObject(t)))}render(e,t){if(this.numberOfRenderedEdges[t]=0,a(this.componentColorManager))return;this.localOrigins.updateViewMatrices(e.camera.viewMatrix);const r=e.camera.viewInverseTransposeMatrix,s=w(),o=new _;let n=0,i=0;if(this.renderers.forEach((r=>{0===r.refCount.value?(this.renderers.delete(r.key),r.dispose()):r.forEachRenderable((t=>{t.visible&&(n+=t.statistics.averageEdgeLength,i++,t.regular&&r.updateTechnique(e,!1),t.silhouette&&r.updateTechnique(e,!0))}),t)})),this.componentColorManager.garbageCollect(),this.componentColorManager.updateTextures(),0===i)return;const c=40*n/i,d=e.camera.perScreenPixelRatio,l=new W(c,d,t);y(s,r[3],r[7],r[11]),o.set(s),j(l.transformWorldFromViewTH,o.high),j(l.transformWorldFromViewTL,o.low),g(l.transformViewFromCameraRelativeRS,e.camera.viewMatrix),p(l.transformProjFromView,e.camera.projectionMatrix);const f=h();m(f,l.transformViewFromCameraRelativeRS),u(l.transformNormalViewFromGlobal,f),this._updateObjectCameraDistances(e),this.renderers.forEach((t=>{this._renderRegularEdges(t,e,l),this._renderSilhouetteEdges(t,e,l)}))}_updateTransparency(e){const t=Q(e.components.meta),r=J(e.components.meta);t===e.edgeTransparency&&r===e.objectTransparency||(e.edgeTransparency=t,e.objectTransparency=r,this.renderers.get(e.rendererKey).setRenderablesDirty())}_computeModelTransformWithLocalOrigin(e,t,r){if(e.getCombinedStaticTransformation(t,r),c(t.origin))this.localOrigins.register(t.origin);else{const e=y(this.tmpModelPosition,r[12],r[13],r[14]);t.origin=this.localOrigins.acquire(e)}return C(t.origin.vec3,r),t.origin}_updateComponentBuffer(e){const{meta:t,buffer:r}=e;for(let s=0;s<t.length;s++){const e=t[s].material,n=t[s].index,i=o(Math.round(e.size*H),0,255),a=o(e.extensionLength,-z,255-z)+z,c="solid"===e.type?V.SOLID:V.SKETCH,d=255*e.opacity,l=e.color,g=255*l[0],m=255*l[1],u=255*l[2],h=255*l[3];r.textureBuffer.setData(n,0,g,m,u,h),r.textureBuffer.setData(n,1,i,a,c,d)}}_createComponentBuffers(e){if(a(this.componentColorManager))return null;const t=new Array,r=this.componentColorManager.getBuffer(e.length);for(let o=0;o<e.length;o++){const s=e[o],n=r.acquireIndex();t.push({index:n,material:s})}const s={meta:t,buffer:r};return this._updateComponentBuffer(s),s}_extractEdges(e,t,r,s,o,n=o.length){return this.worker.process({data:t,indices:o,indicesLength:n,writerSettings:e,skipDeduplicate:r},this.workerAbort.signal,s)}_createEdgeResources(e){const t={};if(a(this.verticesBufferObject))return t;if(e.regular.lodInfo.lengths.length>0){const r=new te(this.rctx,k,{vertices:I,instances:L.glLayout},{vertices:this.verticesBufferObject,instances:$.createVertex(this.rctx,ee.STATIC_DRAW,e.regular.instancesData.buffer)});t.regular={vao:r,lod:e.regular.lodInfo}}if(e.silhouette.lodInfo.lengths.length>0){const r=new te(this.rctx,k,{vertices:I,instances:U.glLayout},{vertices:this.verticesBufferObject,instances:$.createVertex(this.rctx,ee.STATIC_DRAW,e.silhouette.instancesData.buffer)});t.silhouette={vao:r,lod:e.silhouette.lodInfo}}return t}async _addGeometry(e,t,r,s,o,n,i){const a=r.vertexAttributes.get(D.POSITION),c=r.indices.get(D.POSITION),d=b(),l={position:a,indices:c,modelTransform:d,origin:this._computeModelTransformWithLocalOrigin(e,s,d)};return this._addPositionData(t,l,r.edgeIndicesLength,o,n,i)}async _addPositionData(e,t,r,s,o,n=!1){if(null==e.loaded)return;const i=this._createComponentBuffers([s]);if(a(i)||r<=0)return;const c=this._acquireRenderer(s.type,!!o.hasSlicePlane),{modelTransform:d,origin:l}=t,g=t.indices,m=t.position,u=m.data.length/m.size,h=B.createBuffer(u);for(let a=0;a<u;a++)h.position.set(a,0,m.data[a*m.size+0]),h.position.set(a,1,m.data[a*m.size+1]),h.position.set(a,2,m.data[a*m.size+2]);X(i.meta,[0,h.componentIndex.count],h.componentIndex);const p=await this.updatingHandles.addPromise(this._extractEdges(c.writerSettings,h,!1,n,g,r));if(null==e.loaded)return;const{regular:f,silhouette:b}=this._createEdgeResources(p),y=(f?f.vao.size:0)+(b?b.vao.size:0),j={regular:f,silhouette:b,transform:{modelMatrix:d,origin:l},statistics:{gpuMemoryUsage:y,externalMemoryUsage:!1,averageEdgeLength:p.averageEdgeLength},components:i,visible:!0,edgeTransparency:Q(i.meta),objectTransparency:J(i.meta),distanceToCamera:0,rendererKey:c.key};e.renderables.push(j),c.addRenderable(j),this.gpuMemoryUsage+=y}async _addComponentGeometry(e,t,r,s,o,n,i){if(null==t.loaded)return 0;const c=this._createComponentBuffers(n);if(a(c))return 0;const d=F(n),l=this._acquireRenderer(d,i.hasSlicePlane||!1,!1),g=B.createBuffer(r.count);T(g.position,r),X(c.meta,o,g.componentIndex,s);const m=!0,u=l.writerSettings,h=await this.updatingHandles.addPromise(this._extractEdges(u,g,m,!1,s));if(null==t.loaded)return 0;const{regular:p,silhouette:f}=this._createEdgeResources(h),b=(p?p.vao.size:0)+(f?f.vao.size:0),y={regular:p,silhouette:f,transform:e,statistics:{gpuMemoryUsage:b,externalMemoryUsage:!0,averageEdgeLength:h.averageEdgeLength},components:c,visible:!0,edgeTransparency:Q(c.meta),objectTransparency:J(c.meta),distanceToCamera:0,rendererKey:l.key};return t.renderables.push(y),l.addRenderable(y),b}async _addObjectMergedGeometries(e,t,r,s,o){const n=new Map;let i=0,a=null,c=0;for(let b=0;b<e.geometries.length;b++){const t=e.geometries[b],r=e.geometryRecords[b];if(!r.material.supportsEdges)continue;!a&&r.origin&&(a=r);const s=t.vertexAttributes.get(D.POSITION);c+=s.data.length/s.size,i+=t.edgeIndicesLength}const d=c>=65536?Uint32Array:Uint16Array,l=i?new d(i):null,g=[];let m=0;for(let b=0;b<e.geometries.length;b++){const t=e.geometries[b];if(!e.geometryRecords[b].material.supportsEdges)continue;const r=t.vertexAttributes.get(D.POSITION),s=t.indices.get(D.POSITION);let o=n.get(r.data);if(null==o){o=g.length/3;for(let e=0;e<r.data.length;e+=r.size)g.push(r.data[e+0]),g.push(r.data[e+1]),g.push(r.data[e+2]);n.set(r.data,o)}if(s)for(let e=0;e<t.edgeIndicesLength;e++)l[m++]=o+s[e]}const u=a||e.geometryRecords[0],h=b(),p=this._computeModelTransformWithLocalOrigin(e,u,h);for(let b=0;b<e.geometryRecords.length;b++)e.geometryRecords[b].origin=p;const f={position:{data:g,size:3},indices:l,modelTransform:h,origin:p};await this.updatingHandles.addPromise(this._addPositionData(t,f,l.length,r[0],s,o))}_acquireRenderer(e,t,r=!0){const s=N.getKey(e,t,r);let o=this.renderers.get(s);return a(this.strokesTexture)&&(this.strokesTexture=G(this.rctx)),o||(o=new N(this.rctx,this.techniqueRepository,{type:e,hasSlicePlane:t,strokesTexture:this.strokesTexture,legacy:r}),this.renderers.set(s,o)),o.refCount.increment(),o}_removeRenderable(e){oe(e);const t=this.renderers.get(e.rendererKey);if(t){t.removeRenderable(e),t.refCount.decrement(),"origin"in e.transform&&this.localOrigins.release(e.transform.origin),this.gpuMemoryUsage-=e.statistics.externalMemoryUsage?0:e.statistics.gpuMemoryUsage;for(const t of e.components.meta)e.components.buffer.releaseIndex(t.index)}}_updateObjectCameraDistances(e){const t=e.camera.eye,r=e.camera.viewForward,s=w(),o=e=>{const{center:o,radius:n}=e;O(s,o,t);const i=v(s,r),a=i<-n?1/0:i<n?0:i-n;e.renderables.forEach((e=>e.distanceToCamera=a))};this.perObjectData.forEach(o),this.perObjectDataEvictionCache.forEach(o)}_renderRegularEdges(e,t,r){e.bindRegularEdges(r,t);const s=r.transparency;e.forEachRenderable((o=>{if(!o.visible||!o.regular)return;const n=Y(o.regular.lod.lengths,o.distanceToCamera,r),i="origin"in o.transform?this.localOrigins.getViewMatrix(o.transform.origin):f;e.renderRegularEdges(o,t,n,i),this.numberOfRenderedEdges[s]+=n}),s)}_renderSilhouetteEdges(e,t,r){e.bindSilhouetteEdges(r,t);const s=r.transparency;e.forEachRenderable((o=>{if(!o.visible||!o.silhouette)return;const n=Y(o.silhouette.lod.lengths,o.distanceToCamera,r),i="origin"in o.transform?this.localOrigins.getViewMatrix(o.transform.origin):f;e.renderSilhouetteEdges(o,t,n,i),this.numberOfRenderedEdges[s]+=n}),s)}};function oe(e){e.regular&&(e.regular.vao.vertexBuffers.instances.dispose(),e.regular.vao.dispose(!1),e.regular.vao=null),e.silhouette&&(e.silhouette.vao.vertexBuffers.instances.dispose(),e.silhouette.vao.dispose(!1),e.silhouette.vao=null)}function ne(e){let t=null,s=null;for(let n=0;n<e.geometries.length;n++){var o;const i=e.geometryRecords[n];if(i.material.supportsEdges){if(t){if(!r(t,i.transformation))return!1}else t=i.transformation;if(!s&&c(i.origin))s=i;else if(c(null==(o=s)?void 0:o.origin)&&c(i.origin)&&s.origin.id!==i.origin.id)return!1}}return!0}e([d({constructOnly:!0})],se.prototype,"rctx",void 0),e([d({constructOnly:!0})],se.prototype,"renderSR",void 0),e([d({constructOnly:!0})],se.prototype,"techniqueRepository",void 0),e([d({constructOnly:!0})],se.prototype,"setNeedsRender",void 0),e([d({constructOnly:!0})],se.prototype,"schedule",void 0),e([d({readOnly:!0})],se.prototype,"updatingHandles",void 0),e([d({readOnly:!0})],se.prototype,"updating",null),se=e([l("esri.views.3d.webgl-engine.lib.edgeRendering.EdgeView")],se);class ie{constructor(e,t,r){this.center=t,this.radius=r,this.renderables=new Array,this.loaded=e,this.loaded.then((()=>{null!=this.loaded&&(this.loaded=!0)}))}}export{se as EdgeView};
5
+ import{_ as e}from"../../../../../chunks/tslib.es6.js";import t from"../../../../../core/Accessor.js";import{equals as r}from"../../../../../core/arrayUtils.js";import s from"../../../../../core/Logger.js";import{clamp as o}from"../../../../../core/mathUtils.js";import{disposeMaybe as n,destroyMaybe as i,isNone as a,isSome as c}from"../../../../../core/maybe.js";import{property as d}from"../../../../../core/accessorSupport/decorators/property.js";import"../../../../../core/has.js";import"../../../../../core/accessorSupport/ensureType.js";import{subclass as l}from"../../../../../core/accessorSupport/decorators/subclass.js";import{f as g,t as u,e as m}from"../../../../../chunks/mat3.js";import{c as h}from"../../../../../chunks/mat3f64.js";import{I as p,c as f}from"../../../../../chunks/mat4f64.js";import{s as b,c as y,v as j,e as O}from"../../../../../chunks/vec3.js";import{c as v}from"../../../../../chunks/vec3f64.js";import{WatchUpdatingTracking as w}from"../../../../../core/support/WatchUpdatingTracking.js";import{g as E,l as R}from"../../../../../chunks/sphere.js";import{c as x}from"../../../../../chunks/vec33.js";import{TwoVectorPosition as T}from"../../core/util/TwoVectorPosition.js";import{GridLocalOriginFactory as _}from"../GridLocalOriginFactory.js";import{applyToModelMatrix as M}from"../localOriginHelper.js";import{LocalOriginManager as C}from"../LocalOriginManager.js";import{Object3D as P}from"../Object3D.js";import{VertexAttribute as S}from"../VertexAttribute.js";import{VertexLayout as D,EdgeShaderAttributeLocations as A,glVertexLayout as k,EdgeInputBufferLayout as I}from"./bufferLayouts.js";import{RegularEdgeBufferWriter as B,SilhouetteEdgeBufferWriter as L}from"./edgeBufferWriters.js";import{EdgeType as U}from"./edgePreprocessing.js";import{EdgeRenderer as V,LINE_WIDTH_FRACTION_FACTOR as N,EXTENSION_LENGTH_OFFSET as H}from"./EdgeRenderer.js";import{EdgePassParameters as z}from"./EdgeShaderParameters.js";import W from"./EdgeWorkerHandle.js";import{Transparency as q}from"./interfaces.js";import{generateStrokesTexture as K}from"./strokes.js";import{determineRendererType as G,determineEdgeTransparency as F,determineObjectTransparency as Q,fillComponenBufferIndices as J,computeEdgeCount as X}from"./util.js";import{BufferManager as Y}from"../TextureBackedBuffer/BufferManager.js";import{BufferObject as Z}from"../../../../webgl/BufferObject.js";import{Usage as $}from"../../../../webgl/enums.js";import{VertexArrayObject as ee}from"../../../../webgl/VertexArrayObject.js";const te=s.getLogger("esri.views.3d.webgl-engine.lib.edgeRendering.EdgeView");let re=class extends t{constructor(e){super(e),this.updatingHandles=new w,this.perObjectData=new Map,this.perObjectDataEvictionCache=new Set,this.renderers=new Map,this.numberOfRenderedEdges={[q.TRANSPARENT]:0,[q.OPAQUE]:0},this.gpuMemoryUsage=0,this.workerAbort=new AbortController,this.tmpModelPosition=v(),this.localOrigins=new C(new _(e.renderSR))}initialize(){this.worker=new W(this.schedule),this.componentColorManager=new Y(this.rctx,2);const e=D.createBuffer(4);for(let t=0;t<4;t++)e.sideness.set(t,0,0===t||3===t?0:1),e.sideness.set(t,1,0===t||1===t?0:1);this.verticesBufferObject=Z.createVertex(this.rctx,$.STATIC_DRAW,e.buffer)}destroy(){this.destroyed||(this.perObjectData.forEach((e=>this._discardObjectEntry(e))),this.perObjectData.clear(),this.strokesTexture=n(this.strokesTexture),this.componentColorManager=i(this.componentColorManager),this.workerAbort.abort(),this.worker.destroy(),this.verticesBufferObject=n(this.verticesBufferObject),this.renderers.clear(),this.updatingHandles.destroy())}get updating(){return this.updatingHandles.updating}get usedMemory(){return this.gpuMemoryUsage}get numberOfRenderedPrimitives(){return this.numberOfRenderedEdges[q.TRANSPARENT]+this.numberOfRenderedEdges[q.OPAQUE]}shouldRender(){return this.renderers.size>0}async addComponentObject(e,t,r,s,o,n,i,a){if(this.hasObject(e))return this.getObjectMemoryUsage(e);let c;const d=new ne(new Promise((e=>c=e)),r.center,r.radius);this.perObjectData.set(e,d);const l=await this.updatingHandles.addPromise(this._addComponentGeometry(t,d,s,o,n,i,a));return this.setNeedsRender(),c(),l}async addOrUpdateObject3D(e,t,r,s){if(this.destroyed)return void te.warn("Attempt to add an object to a destroyed instance");const o=this.perObjectData.get(e);let n;(null==o?void 0:o.renderables.length)>0&&this.perObjectDataEvictionCache.add(o);const i=e.boundingVolumeWorldSpace.bounds,a=new ne(new Promise((e=>n=e)),E(i),R(i));this.perObjectData.set(e,a);const c=new Array;if(r.mergeGeometries&&e.geometries.length>1&&oe(e))c.push(this._addObjectMergedGeometries(e,a,t,r,s));else for(let d=0;d<e.geometries.length;d++){const o=e.geometryRecords[d];if(!o.material.supportsEdges)continue;const n=e.geometries[d];c.push(this._addGeometry(e,a,n,o,t[0],r,s))}await this.updatingHandles.addPromise(Promise.all(c)),this.perObjectDataEvictionCache.delete(a),this._discardObjectEntry(o),this.setNeedsRender(),n()}_discardObjectEntry(e){e&&(e.renderables.length&&(e.renderables.forEach((e=>this._removeRenderable(e))),this.setNeedsRender()),e.loaded=null)}hasObject(e){return this.perObjectData.has(e)}async updateAllComponentOpacities(e,t){const r=t instanceof Array?e=>t[e]:()=>t;(await this.updatingHandles.addPromise(this._getObjectEntry(e))).renderables.forEach((e=>{const t=e.components.meta.length;for(let s=0;s<t;s++){const t=r(s),o=e.components.meta[s],n=o.index;o.material.opacity=t,e.components.buffer.textureBuffer.setDataElement(n,1,3,255*t)}this._updateTransparency(e)})),this.setNeedsRender()}async getObjectMemoryUsage(e){return(await this._getObjectEntry(e)).renderables.reduce(((e,t)=>e+t.statistics.gpuMemoryUsage),0)}async updateAllComponentMaterials(e,t,r,s){const o=e instanceof P,n=!!r.hasSlicePlane,i=G(t),a=V.getKey(i,n,o);(await this.updatingHandles.addPromise(this._getObjectEntry(e))).renderables.forEach((e=>{if(a!==e.rendererKey){const t=this.renderers.get(e.rendererKey),r=this._acquireRenderer(i,n,o);t.removeRenderable(e),t.refCount.decrement(),e.rendererKey=a,r.addRenderable(e)}for(let r=0;r<t.length;r++)e.components.meta[r].material=t[r];s&&this._updateComponentBuffer(e.components),this._updateTransparency(e)})),this.setNeedsRender()}async updateObjectVisibility(e,t){(await this.updatingHandles.addPromise(this._getObjectEntry(e))).renderables.forEach((e=>e.visible=t)),this.setNeedsRender()}removeObject(e){const t=this.perObjectData.get(e);t&&(this.perObjectData.delete(e),this._discardObjectEntry(t))}async _getObjectEntry(e){const t=this.perObjectData.get(e);if(!t)throw"no object";return await t.loaded,t}removeAll(){this.perObjectData.forEach(((e,t)=>this.removeObject(t)))}render(e,t){if(this.numberOfRenderedEdges[t]=0,a(this.componentColorManager))return;this.localOrigins.updateViewMatrices(e.camera.viewMatrix);const r=e.camera.viewInverseTransposeMatrix,s=v(),o=new T;let n=0,i=0;if(this.renderers.forEach((r=>{0===r.refCount.value?(this.renderers.delete(r.key),r.dispose()):r.forEachRenderable((t=>{t.visible&&(n+=t.statistics.averageEdgeLength,i++,t.regular&&r.updateTechnique(e,!1),t.silhouette&&r.updateTechnique(e,!0))}),t)})),this.componentColorManager.garbageCollect(),this.componentColorManager.updateTextures(),0===i)return;const c=40*n/i,d=e.camera.perScreenPixelRatio,l=new z(c,d,t);b(s,r[3],r[7],r[11]),o.set(s),y(l.transformWorldFromViewTH,o.high),y(l.transformWorldFromViewTL,o.low),g(l.transformViewFromCameraRelativeRS,e.camera.viewMatrix),u(ie,l.transformViewFromCameraRelativeRS),m(l.transformNormalViewFromGlobal,ie),l.transformProjFromView=e.camera.projectionMatrix,this._updateObjectCameraDistances(e),this.renderers.forEach((t=>{this._renderRegularEdges(t,e,l),this._renderSilhouetteEdges(t,e,l)}))}_updateTransparency(e){const t=F(e.components.meta),r=Q(e.components.meta);t===e.edgeTransparency&&r===e.objectTransparency||(e.edgeTransparency=t,e.objectTransparency=r,this.renderers.get(e.rendererKey).setRenderablesDirty())}_computeModelTransformWithLocalOrigin(e,t,r){if(e.getCombinedStaticTransformation(t,r),c(t.origin))this.localOrigins.register(t.origin);else{const e=b(this.tmpModelPosition,r[12],r[13],r[14]);t.origin=this.localOrigins.acquire(e)}return M(t.origin.vec3,r),t.origin}_updateComponentBuffer(e){const{meta:t,buffer:r}=e;for(let s=0;s<t.length;s++){const e=t[s].material,n=t[s].index,i=o(Math.round(e.size*N),0,255),a=o(e.extensionLength,-H,255-H)+H,c="solid"===e.type?U.SOLID:U.SKETCH,d=255*e.opacity,l=e.color,g=255*l[0],u=255*l[1],m=255*l[2],h=255*l[3];r.textureBuffer.setData(n,0,g,u,m,h),r.textureBuffer.setData(n,1,i,a,c,d)}}_createComponentBuffers(e){if(a(this.componentColorManager))return null;const t=new Array,r=this.componentColorManager.getBuffer(e.length);for(let o=0;o<e.length;o++){const s=e[o],n=r.acquireIndex();t.push({index:n,material:s})}const s={meta:t,buffer:r};return this._updateComponentBuffer(s),s}_extractEdges(e,t,r,s,o,n=o.length){return this.worker.process({data:t,indices:o,indicesLength:n,writerSettings:e,skipDeduplicate:r},this.workerAbort.signal,s)}_createEdgeResources(e){const t={};if(a(this.verticesBufferObject))return t;if(e.regular.lodInfo.lengths.length>0){const r=new ee(this.rctx,A,{vertices:k,instances:B.glLayout},{vertices:this.verticesBufferObject,instances:Z.createVertex(this.rctx,$.STATIC_DRAW,e.regular.instancesData.buffer)});t.regular={vao:r,lod:e.regular.lodInfo}}if(e.silhouette.lodInfo.lengths.length>0){const r=new ee(this.rctx,A,{vertices:k,instances:L.glLayout},{vertices:this.verticesBufferObject,instances:Z.createVertex(this.rctx,$.STATIC_DRAW,e.silhouette.instancesData.buffer)});t.silhouette={vao:r,lod:e.silhouette.lodInfo}}return t}async _addGeometry(e,t,r,s,o,n,i){const a=r.vertexAttributes.get(S.POSITION),c=r.indices.get(S.POSITION),d=f(),l={position:a,indices:c,modelTransform:d,origin:this._computeModelTransformWithLocalOrigin(e,s,d)};return this._addPositionData(t,l,r.edgeIndicesLength,o,n,i)}async _addPositionData(e,t,r,s,o,n=!1){if(null==e.loaded)return;const i=this._createComponentBuffers([s]);if(a(i)||r<=0)return;const c=this._acquireRenderer(s.type,!!o.hasSlicePlane,!0),{modelTransform:d,origin:l}=t,g=t.indices,u=t.position,m=u.data.length/u.size,h=I.createBuffer(m);for(let a=0;a<m;a++)h.position.set(a,0,u.data[a*u.size+0]),h.position.set(a,1,u.data[a*u.size+1]),h.position.set(a,2,u.data[a*u.size+2]);J(i.meta,[0,h.componentIndex.count],h.componentIndex);const p=await this.updatingHandles.addPromise(this._extractEdges(c.writerSettings,h,!1,n,g,r));if(null==e.loaded)return;const{regular:f,silhouette:b}=this._createEdgeResources(p),y=(f?f.vao.size:0)+(b?b.vao.size:0),j={regular:f,silhouette:b,transform:{modelMatrix:d,origin:l},statistics:{gpuMemoryUsage:y,externalMemoryUsage:!1,averageEdgeLength:p.averageEdgeLength},components:i,visible:!0,edgeTransparency:F(i.meta),objectTransparency:Q(i.meta),distanceToCamera:0,rendererKey:c.key};e.renderables.push(j),c.addRenderable(j),this.gpuMemoryUsage+=y}async _addComponentGeometry(e,t,r,s,o,n,i){if(null==t.loaded)return 0;const c=this._createComponentBuffers(n);if(a(c))return 0;const d=G(n),l=this._acquireRenderer(d,i.hasSlicePlane||!1,!1),g=I.createBuffer(r.count);x(g.position,r),J(c.meta,o,g.componentIndex,s);const u=!0,m=l.writerSettings,h=await this.updatingHandles.addPromise(this._extractEdges(m,g,u,!1,s));if(null==t.loaded)return 0;const{regular:p,silhouette:f}=this._createEdgeResources(h),b=(p?p.vao.size:0)+(f?f.vao.size:0),y={regular:p,silhouette:f,transform:e,statistics:{gpuMemoryUsage:b,externalMemoryUsage:!0,averageEdgeLength:h.averageEdgeLength},components:c,visible:!0,edgeTransparency:F(c.meta),objectTransparency:Q(c.meta),distanceToCamera:0,rendererKey:l.key};return t.renderables.push(y),l.addRenderable(y),b}async _addObjectMergedGeometries(e,t,r,s,o){const n=new Map;let i=0,a=null,c=0;for(let f=0;f<e.geometries.length;f++){const t=e.geometries[f],r=e.geometryRecords[f];if(!r.material.supportsEdges)continue;!a&&r.origin&&(a=r);const s=t.vertexAttributes.get(S.POSITION);c+=s.data.length/s.size,i+=t.edgeIndicesLength}const d=c>=65536?Uint32Array:Uint16Array,l=i?new d(i):null,g=[];let u=0;for(let f=0;f<e.geometries.length;f++){const t=e.geometries[f];if(!e.geometryRecords[f].material.supportsEdges)continue;const r=t.vertexAttributes.get(S.POSITION),s=t.indices.get(S.POSITION);let o=n.get(r.data);if(null==o){o=g.length/3;for(let e=0;e<r.data.length;e+=r.size)g.push(r.data[e+0]),g.push(r.data[e+1]),g.push(r.data[e+2]);n.set(r.data,o)}if(s)for(let e=0;e<t.edgeIndicesLength;e++)l[u++]=o+s[e]}const m=a||e.geometryRecords[0],h=f(),p=this._computeModelTransformWithLocalOrigin(e,m,h);for(let f=0;f<e.geometryRecords.length;f++)e.geometryRecords[f].origin=p;const b={position:{data:g,size:3},indices:l,modelTransform:h,origin:p};await this.updatingHandles.addPromise(this._addPositionData(t,b,l.length,r[0],s,o))}_acquireRenderer(e,t,r){const s=V.getKey(e,t,r);let o=this.renderers.get(s);return a(this.strokesTexture)&&(this.strokesTexture=K(this.rctx)),o||(o=new V(this.rctx,this.techniqueRepository,{type:e,hasSlicePlane:t,strokesTexture:this.strokesTexture,legacy:r}),this.renderers.set(s,o)),o.refCount.increment(),o}_removeRenderable(e){se(e);const t=this.renderers.get(e.rendererKey);if(t){t.removeRenderable(e),t.refCount.decrement(),"origin"in e.transform&&this.localOrigins.release(e.transform.origin),this.gpuMemoryUsage-=e.statistics.externalMemoryUsage?0:e.statistics.gpuMemoryUsage;for(const t of e.components.meta)e.components.buffer.releaseIndex(t.index)}}_updateObjectCameraDistances(e){const t=e.camera.eye,r=e.camera.viewForward,s=v(),o=e=>{const{center:o,radius:n}=e;j(s,o,t);const i=O(s,r),a=i<-n?1/0:i<n?0:i-n;e.renderables.forEach((e=>e.distanceToCamera=a))};this.perObjectData.forEach(o),this.perObjectDataEvictionCache.forEach(o)}_renderRegularEdges(e,t,r){const s=e.bindRegularEdges(r,t),o=r.transparency;e.forEachRenderable((n=>{if(!n.visible||!n.regular)return;const i=X(n.regular.lod.lengths,n.distanceToCamera,r),a="origin"in n.transform?this.localOrigins.getViewMatrix(n.transform.origin):p;e.renderRegularEdges(s,n,t,i,a),this.numberOfRenderedEdges[o]+=i}),o)}_renderSilhouetteEdges(e,t,r){const s=e.bindSilhouetteEdges(r,t),o=r.transparency;e.forEachRenderable((n=>{if(!n.visible||!n.silhouette)return;const i=X(n.silhouette.lod.lengths,n.distanceToCamera,r),a="origin"in n.transform?this.localOrigins.getViewMatrix(n.transform.origin):p;e.renderSilhouetteEdges(s,n,t,i,a),this.numberOfRenderedEdges[o]+=i}),o)}};function se(e){e.regular&&(e.regular.vao.vertexBuffers.instances.dispose(),e.regular.vao.dispose(!1),e.regular.vao=null),e.silhouette&&(e.silhouette.vao.vertexBuffers.instances.dispose(),e.silhouette.vao.dispose(!1),e.silhouette.vao=null)}function oe(e){let t=null,s=null;for(let n=0;n<e.geometries.length;n++){var o;const i=e.geometryRecords[n];if(i.material.supportsEdges){if(t){if(!r(t,i.transformation))return!1}else t=i.transformation;if(!s&&c(i.origin))s=i;else if(c(null==(o=s)?void 0:o.origin)&&c(i.origin)&&s.origin.id!==i.origin.id)return!1}}return!0}e([d({constructOnly:!0})],re.prototype,"rctx",void 0),e([d({constructOnly:!0})],re.prototype,"renderSR",void 0),e([d({constructOnly:!0})],re.prototype,"techniqueRepository",void 0),e([d({constructOnly:!0})],re.prototype,"setNeedsRender",void 0),e([d({constructOnly:!0})],re.prototype,"schedule",void 0),e([d({readOnly:!0})],re.prototype,"updatingHandles",void 0),e([d({readOnly:!0})],re.prototype,"updating",null),re=e([l("esri.views.3d.webgl-engine.lib.edgeRendering.EdgeView")],re);class ne{constructor(e,t,r){this.center=t,this.radius=r,this.renderables=new Array,this.loaded=e,this.loaded.then((()=>{null!=this.loaded&&(this.loaded=!0)}))}}const ie=h();export{re as EdgeView};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.24/esri/copyright.txt for details.
4
4
  */
5
- import t from"../../../../../core/Evented.js";import{f as e,e as s,t as i}from"../../../../../chunks/mat3.js";import{c as a}from"../../../../../chunks/mat3f64.js";import{m as r}from"../../../../../chunks/mat4.js";import{c as o}from"../../../../../chunks/mat4f64.js";import{s as n}from"../../../../../chunks/vec3.js";import{c as h}from"../../../../../chunks/vec3f64.js";import{BufferViewMat4f64 as l,BufferViewVec3f64 as c,BufferViewMat3f as f,BufferViewVec2f as m,BufferViewVec4f64 as g,BufferViewVec4f as _,BufferViewUint8 as d}from"../../../../../geometry/support/buffer/BufferView.js";import{scaleFromMatrix as T}from"../../../support/mathUtils.js";import{newLayout as u}from"../../../support/buffer/InterleavedLayout.js";import{assert as L}from"../Util.js";import{VertexAttribute as A}from"../VertexAttribute.js";var E;function F(t){let e=u().mat4f64(A.LOCALTRANSFORM).mat4f64(A.GLOBALTRANSFORM).vec4f64(A.BOUNDINGSPHERE).vec3f64(A.MODELORIGIN).mat3f(A.MODEL).mat3f(A.MODELNORMAL).vec2f(A.MODELSCALEFACTORS);return t.indexOf("color")>=0&&(e=e.vec4f(A.COLOR)),t.indexOf("featureAttribute")>=0&&(e=e.vec4f(A.FEATUREATTRIBUTE)),e=e.u8(A.STATE).u8(A.LODLEVEL).alignTo(8),e}!function(t){t[t.ALLOCATED=1]="ALLOCATED",t[t.DEFAULT_ACTIVE=2]="DEFAULT_ACTIVE",t[t.VISIBLE=4]="VISIBLE",t[t.HIGHLIGHT=8]="HIGHLIGHT",t[t.HIGHLIGHT_ACTIVE=16]="HIGHLIGHT_ACTIVE",t[t.REMOVE=32]="REMOVE",t[t.TRANSFORM_CHANGED=64]="TRANSFORM_CHANGED",t[t.ACTIVE=18]="ACTIVE"}(E||(E={}));class O{constructor(t){this.localTransform=t.getField(A.LOCALTRANSFORM,l),this.globalTransform=t.getField(A.GLOBALTRANSFORM,l),this.modelOrigin=t.getField(A.MODELORIGIN,c),this.model=t.getField(A.MODEL,f),this.modelNormal=t.getField(A.MODELNORMAL,f),this.modelScaleFactors=t.getField(A.MODELSCALEFACTORS,m),this.boundingSphere=t.getField(A.BOUNDINGSPHERE,g),this.color=t.getField(A.COLOR,_),this.featureAttribute=t.getField(A.FEATUREATTRIBUTE,_),this.state=t.getField(A.STATE,d),this.lodLevel=t.getField(A.LODLEVEL,d)}}class S extends t{constructor(t,e){super(),this._capacity=0,this._size=0,this._next=0,this._layout=F(t),this._shaderTransformation=e}get capacity(){return this._capacity}get size(){return this._size}get buffer(){return this._buffer.buffer}get view(){return this._view}addInstance(){this._size+1>this._capacity&&this._grow();const t=this._findSlot();return this._view.state.set(t,E.ALLOCATED),this._size++,this.emit("instance-added",{index:t}),t}removeInstance(t){const e=this._view.state;L(t>=0&&t<this._capacity&&e.get(t)&E.ALLOCATED,"invalid instance handle"),this._getStateFlag(t,E.ACTIVE)?this._setStateFlags(t,E.REMOVE):this.freeInstance(t),this.emit("instance-removed",{index:t})}freeInstance(t){const e=this._view.state;L(t>=0&&t<this._capacity&&e.get(t)&E.ALLOCATED,"invalid instance handle"),e.set(t,0),this._size--}setLocalTransform(t,e,s=!0){this._view.localTransform.setMat(t,e),s&&this.updateModelTransform(t)}getLocalTransform(t,e){this._view.localTransform.getMat(t,e)}setGlobalTransform(t,e,s=!0){this._view.globalTransform.setMat(t,e),s&&this.updateModelTransform(t)}getGlobalTransform(t,e){this._view.globalTransform.getMat(t,e)}updateModelTransform(t){const a=this._view,o=M,h=I;a.localTransform.getMat(t,b),a.globalTransform.getMat(t,w);const l=r(w,w,b);n(o,l[12],l[13],l[14]),a.modelOrigin.setVec(t,o),e(h,l),a.model.setMat(t,h);const c=T(M,l);c.sort(),a.modelScaleFactors.set(t,0,c[1]),a.modelScaleFactors.set(t,1,c[2]),s(h,h),i(h,h),a.modelNormal.setMat(t,h),this._setStateFlags(t,E.TRANSFORM_CHANGED),this.emit("instance-transform-changed",{index:t})}getModelTransform(t,e){const s=this._view;s.model.getMat(t,I),s.modelOrigin.getVec(t,M),e[0]=I[0],e[1]=I[1],e[2]=I[2],e[3]=0,e[4]=I[3],e[5]=I[4],e[6]=I[5],e[7]=0,e[8]=I[6],e[9]=I[7],e[10]=I[8],e[11]=0,e[12]=M[0],e[13]=M[1],e[14]=M[2],e[15]=1}applyShaderTransformation(t,e){this._shaderTransformation&&this._shaderTransformation.applyTransform(this,t,e)}getCombinedModelTransform(t,e){return this.getModelTransform(t,e),this._shaderTransformation&&this._shaderTransformation.applyTransform(this,t,e),e}getCombinedLocalTransform(t,e){return this._view.localTransform.getMat(t,e),this._shaderTransformation&&this._shaderTransformation.applyTransform(this,t,e),e}getCombinedMaxScaleFactor(t){let e=this._view.modelScaleFactors.get(t,1);if(this._shaderTransformation){const s=this._shaderTransformation.scaleFactor(M,this,t);e*=Math.max(s[0],s[1],s[2])}return e}getCombinedMedianScaleFactor(t){let e=this._view.modelScaleFactors.get(t,0);if(this._shaderTransformation){const s=this._shaderTransformation.scaleFactor(M,this,t);s.sort(),e*=s[1]}return e}getModel(t,e){this._view.model.getMat(t,e)}setFeatureAttribute(t,e){this._view.featureAttribute.setVec(t,e)}getFeatureAttribute(t,e){this._view.featureAttribute.getVec(t,e)}setColor(t,e){this._view.color.setVec(t,e)}getColor(t,e){this._view.color.getVec(t,e)}setVisible(t,e){e!==this.getVisible(t)&&(this._setStateFlag(t,E.VISIBLE,e),this.emit("instance-visibility-changed",{index:t}))}getVisible(t){return this._getStateFlag(t,E.VISIBLE)}setHighlight(t,e){e!==this.getHighlight(t)&&(this._setStateFlag(t,E.HIGHLIGHT,e),this.emit("instance-highlight-changed",{index:t}))}getHighlight(t){return this._getStateFlag(t,E.HIGHLIGHT)}getState(t){return this._view.state.get(t)}getLodLevel(t){return this._view.lodLevel.get(t)}countFlags(t){let e=0;for(let s=0;s<this._capacity;++s){this.getState(s)&t&&++e}return e}_setStateFlags(t,e){const s=this._view.state;e=s.get(t)|e,s.set(t,e)}_clearStateFlags(t,e){const s=this._view.state;e=s.get(t)&~e,s.set(t,e)}_setStateFlag(t,e,s){s?this._setStateFlags(t,e):this._clearStateFlags(t,e)}_getStateFlag(t,e){return!!(this._view.state.get(t)&e)}_grow(){const t=Math.max(v,Math.floor(this._capacity*p)),e=this._layout.createBuffer(t);if(this._buffer){const t=new Uint8Array(this._buffer.buffer);new Uint8Array(e.buffer).set(t)}this._capacity=t,this._buffer=e,this._view=new O(this._buffer)}_findSlot(){const t=this._view.state;let e=this._next;for(;t.get(e)&E.ALLOCATED;)e=(e+1)%this._capacity;return this._next=(e+1)%this._capacity,e}}const v=1024,p=2,M=h(),I=a(),b=o(),w=o();export{S as InstanceData,O as InstanceDataView,E as StateFlags};
5
+ import t from"../../../../../core/Evented.js";import{f as e,e as s,t as i}from"../../../../../chunks/mat3.js";import{c as a}from"../../../../../chunks/mat3f64.js";import{m as r}from"../../../../../chunks/mat4.js";import{c as o}from"../../../../../chunks/mat4f64.js";import{s as n}from"../../../../../chunks/vec3.js";import{c as h}from"../../../../../chunks/vec3f64.js";import{BufferViewMat4f64 as l,BufferViewVec3f64 as c,BufferViewMat3f as f,BufferViewVec2f as m,BufferViewVec4f64 as g,BufferViewVec4f as _,BufferViewUint8 as d}from"../../../../../geometry/support/buffer/BufferView.js";import{scaleFromMatrix as T}from"../../../support/mathUtils.js";import{newLayout as u}from"../../../support/buffer/InterleavedLayout.js";import{assert as L}from"../Util.js";import{VertexAttribute as A}from"../VertexAttribute.js";var E;function F(t){let e=u().mat4f64(A.LOCALTRANSFORM).mat4f64(A.GLOBALTRANSFORM).vec4f64(A.BOUNDINGSPHERE).vec3f64(A.MODELORIGIN).mat3f(A.MODEL).mat3f(A.MODELNORMAL).vec2f(A.MODELSCALEFACTORS);return t.includes("color")&&(e=e.vec4f(A.COLOR)),t.includes("featureAttribute")&&(e=e.vec4f(A.FEATUREATTRIBUTE)),e=e.u8(A.STATE).u8(A.LODLEVEL).alignTo(8),e}!function(t){t[t.ALLOCATED=1]="ALLOCATED",t[t.DEFAULT_ACTIVE=2]="DEFAULT_ACTIVE",t[t.VISIBLE=4]="VISIBLE",t[t.HIGHLIGHT=8]="HIGHLIGHT",t[t.HIGHLIGHT_ACTIVE=16]="HIGHLIGHT_ACTIVE",t[t.REMOVE=32]="REMOVE",t[t.TRANSFORM_CHANGED=64]="TRANSFORM_CHANGED",t[t.ACTIVE=18]="ACTIVE"}(E||(E={}));class O{constructor(t){this.localTransform=t.getField(A.LOCALTRANSFORM,l),this.globalTransform=t.getField(A.GLOBALTRANSFORM,l),this.modelOrigin=t.getField(A.MODELORIGIN,c),this.model=t.getField(A.MODEL,f),this.modelNormal=t.getField(A.MODELNORMAL,f),this.modelScaleFactors=t.getField(A.MODELSCALEFACTORS,m),this.boundingSphere=t.getField(A.BOUNDINGSPHERE,g),this.color=t.getField(A.COLOR,_),this.featureAttribute=t.getField(A.FEATUREATTRIBUTE,_),this.state=t.getField(A.STATE,d),this.lodLevel=t.getField(A.LODLEVEL,d)}}class S extends t{constructor(t,e){super(),this._capacity=0,this._size=0,this._next=0,this._layout=F(t),this._shaderTransformation=e}get capacity(){return this._capacity}get size(){return this._size}get buffer(){return this._buffer.buffer}get view(){return this._view}addInstance(){this._size+1>this._capacity&&this._grow();const t=this._findSlot();return this._view.state.set(t,E.ALLOCATED),this._size++,this.emit("instance-added",{index:t}),t}removeInstance(t){const e=this._view.state;L(t>=0&&t<this._capacity&&e.get(t)&E.ALLOCATED,"invalid instance handle"),this._getStateFlag(t,E.ACTIVE)?this._setStateFlags(t,E.REMOVE):this.freeInstance(t),this.emit("instance-removed",{index:t})}freeInstance(t){const e=this._view.state;L(t>=0&&t<this._capacity&&e.get(t)&E.ALLOCATED,"invalid instance handle"),e.set(t,0),this._size--}setLocalTransform(t,e,s=!0){this._view.localTransform.setMat(t,e),s&&this.updateModelTransform(t)}getLocalTransform(t,e){this._view.localTransform.getMat(t,e)}setGlobalTransform(t,e,s=!0){this._view.globalTransform.setMat(t,e),s&&this.updateModelTransform(t)}getGlobalTransform(t,e){this._view.globalTransform.getMat(t,e)}updateModelTransform(t){const a=this._view,o=M,h=I;a.localTransform.getMat(t,b),a.globalTransform.getMat(t,w);const l=r(w,w,b);n(o,l[12],l[13],l[14]),a.modelOrigin.setVec(t,o),e(h,l),a.model.setMat(t,h);const c=T(M,l);c.sort(),a.modelScaleFactors.set(t,0,c[1]),a.modelScaleFactors.set(t,1,c[2]),s(h,h),i(h,h),a.modelNormal.setMat(t,h),this._setStateFlags(t,E.TRANSFORM_CHANGED),this.emit("instance-transform-changed",{index:t})}getModelTransform(t,e){const s=this._view;s.model.getMat(t,I),s.modelOrigin.getVec(t,M),e[0]=I[0],e[1]=I[1],e[2]=I[2],e[3]=0,e[4]=I[3],e[5]=I[4],e[6]=I[5],e[7]=0,e[8]=I[6],e[9]=I[7],e[10]=I[8],e[11]=0,e[12]=M[0],e[13]=M[1],e[14]=M[2],e[15]=1}applyShaderTransformation(t,e){this._shaderTransformation&&this._shaderTransformation.applyTransform(this,t,e)}getCombinedModelTransform(t,e){return this.getModelTransform(t,e),this._shaderTransformation&&this._shaderTransformation.applyTransform(this,t,e),e}getCombinedLocalTransform(t,e){return this._view.localTransform.getMat(t,e),this._shaderTransformation&&this._shaderTransformation.applyTransform(this,t,e),e}getCombinedMaxScaleFactor(t){let e=this._view.modelScaleFactors.get(t,1);if(this._shaderTransformation){const s=this._shaderTransformation.scaleFactor(M,this,t);e*=Math.max(s[0],s[1],s[2])}return e}getCombinedMedianScaleFactor(t){let e=this._view.modelScaleFactors.get(t,0);if(this._shaderTransformation){const s=this._shaderTransformation.scaleFactor(M,this,t);s.sort(),e*=s[1]}return e}getModel(t,e){this._view.model.getMat(t,e)}setFeatureAttribute(t,e){this._view.featureAttribute.setVec(t,e)}getFeatureAttribute(t,e){this._view.featureAttribute.getVec(t,e)}setColor(t,e){this._view.color.setVec(t,e)}getColor(t,e){this._view.color.getVec(t,e)}setVisible(t,e){e!==this.getVisible(t)&&(this._setStateFlag(t,E.VISIBLE,e),this.emit("instance-visibility-changed",{index:t}))}getVisible(t){return this._getStateFlag(t,E.VISIBLE)}setHighlight(t,e){e!==this.getHighlight(t)&&(this._setStateFlag(t,E.HIGHLIGHT,e),this.emit("instance-highlight-changed",{index:t}))}getHighlight(t){return this._getStateFlag(t,E.HIGHLIGHT)}getState(t){return this._view.state.get(t)}getLodLevel(t){return this._view.lodLevel.get(t)}countFlags(t){let e=0;for(let s=0;s<this._capacity;++s){this.getState(s)&t&&++e}return e}_setStateFlags(t,e){const s=this._view.state;e=s.get(t)|e,s.set(t,e)}_clearStateFlags(t,e){const s=this._view.state;e=s.get(t)&~e,s.set(t,e)}_setStateFlag(t,e,s){s?this._setStateFlags(t,e):this._clearStateFlags(t,e)}_getStateFlag(t,e){return!!(this._view.state.get(t)&e)}_grow(){const t=Math.max(v,Math.floor(this._capacity*p)),e=this._layout.createBuffer(t);if(this._buffer){const t=new Uint8Array(this._buffer.buffer);new Uint8Array(e.buffer).set(t)}this._capacity=t,this._buffer=e,this._view=new O(this._buffer)}_findSlot(){const t=this._view.state;let e=this._next;for(;t.get(e)&E.ALLOCATED;)e=(e+1)%this._capacity;return this._next=(e+1)%this._capacity,e}}const v=1024,p=2,M=h(),I=a(),b=o(),w=o();export{S as InstanceData,O as InstanceDataView,E as StateFlags};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.24/esri/copyright.txt for details.
4
4
  */
5
- import{isSome as e}from"../../../../core/maybe.js";import{c as t}from"../../../../chunks/mat3f64.js";import{s as r,c as s,n as i,b as a,l as n,g as o,e as h,t as l}from"../../../../chunks/vec3.js";import{c,f as u}from"../../../../chunks/vec3f64.js";import{ViewingMode as m}from"../../../ViewingMode.js";import{newLayout as p}from"../../support/buffer/InterleavedLayout.js";import{ShaderOutput as d}from"../core/shaderLibrary/ShaderOutputOptions.js";import{NormalAttributeType as f}from"../core/shaderLibrary/attributes/NormalAttribute.glsl.js";import{VertexNormalPassParameters as v}from"../core/shaderLibrary/attributes/VertexNormal.glsl.js";import{NormalsDoubleSidedMode as g}from"../core/shaderLibrary/shading/Normals.glsl.js";import{PBRMode as T}from"../core/shaderLibrary/shading/PhysicallyBasedRenderingParameters.glsl.js";import{defaultMaskAlphaCutoff as C}from"../core/shaderLibrary/util/AlphaDiscard.glsl.js";import{CullFaceOptions as S,DepthTestFunction as b,AlphaDiscardMode as O}from"../lib/basicInterfaces.js";import{hasEnabledSSAO as x,hasEnabledShadowMap as A}from"../lib/BindParameters.js";import{GLTextureMaterial as M}from"../lib/GLTextureMaterial.js";import{DefaultMaterialParameters as L,Material as q}from"../lib/Material.js";import{OITPolygonOffsetLimit as P}from"../lib/OrderIndependentTransparency.js";import{RenderPass as I}from"../lib/RenderPass.js";import{RenderSlot as y}from"../lib/RenderSlot.js";import{VertexAttribute as E}from"../lib/VertexAttribute.js";import{getVerticalOffsetObject3D as D}from"../lib/verticalOffsetUtils.js";import{writeDefaultAttributes as R}from"./internal/bufferWriterUtils.js";import{verticalOffsetAtDistance as _,intersectTriangleGeometry as j}from"./internal/MaterialUtil.js";import{DefaultMaterialTechnique as w}from"../shaders/DefaultMaterialTechnique.js";import{DefaultMaterialTechniqueConfiguration as N}from"../shaders/DefaultMaterialTechniqueConfiguration.js";import{RealisticTreeTechnique as B}from"../shaders/RealisticTreeTechnique.js";class V extends q{constructor(e){super(e,H),this.supportsEdges=!0,this.techniqueConfig=new N,this.vertexBufferLayout=F(this.parameters),this.instanceBufferLayout=e.instanced?k(this.parameters):null}isVisibleInPass(e){return e!==I.MATERIAL_DEPTH_SHADOWMAP_ALL&&e!==I.MATERIAL_DEPTH_SHADOWMAP_DEFAULT&&e!==I.MATERIAL_DEPTH_SHADOWMAP_HIGHLIGHT||this.parameters.castShadows}isVisible(){const e=this.parameters;if(!super.isVisible()||0===e.layerOpacity)return!1;const{instanced:t,hasVertexColors:r,hasSymbolColors:s,vvColorEnabled:i}=e,a=!!t&&t.indexOf("color")>-1,n="replace"===e.colorMixMode,o=e.opacity>0,h=e.externalColor&&e.externalColor[3]>0;return r&&(a||i||s)?!!n||o:r?n?h:o:a||i||s?!!n||o:n?h:o}getConfiguration(t,r){return this.techniqueConfig.output=t,this.techniqueConfig.hasNormalTexture=!!this.parameters.normalTextureId,this.techniqueConfig.hasColorTexture=!!this.parameters.textureId,this.techniqueConfig.hasVertexTangents=this.parameters.hasVertexTangents,this.techniqueConfig.instanced=!!this.parameters.instanced,this.techniqueConfig.instancedDoublePrecision=this.parameters.instancedDoublePrecision,this.techniqueConfig.vvSize=this.parameters.vvSizeEnabled,this.techniqueConfig.hasVerticalOffset=null!==this.parameters.verticalOffset,this.techniqueConfig.hasScreenSizePerspective=null!==this.parameters.screenSizePerspective,this.techniqueConfig.hasSlicePlane=this.parameters.hasSlicePlane,this.techniqueConfig.hasSliceHighlight=this.parameters.hasSliceHighlight,this.techniqueConfig.alphaDiscardMode=this.parameters.textureAlphaMode,this.techniqueConfig.normalType="screenDerivative"===this.parameters.normals?f.ScreenDerivative:f.Attribute,this.techniqueConfig.transparent=this.parameters.transparent,this.techniqueConfig.writeDepth=this.parameters.writeDepth,e(this.parameters.customDepthTest)&&(this.techniqueConfig.customDepthTest=this.parameters.customDepthTest),this.techniqueConfig.hasOccludees=this.parameters.hasOccludees,this.techniqueConfig.cullFace=this.parameters.hasSlicePlane?S.None:this.parameters.cullFace,this.techniqueConfig.hasMultipassTerrain=r.multipassTerrain.enabled,this.techniqueConfig.cullAboveGround=r.multipassTerrain.cullAboveGround,this.techniqueConfig.hasModelTransformation=e(this.parameters.modelTransformation),t!==d.Color&&t!==d.Alpha||(this.techniqueConfig.hasVertexColors=this.parameters.hasVertexColors,this.techniqueConfig.hasSymbolColors=this.parameters.hasSymbolColors,this.parameters.treeRendering?this.techniqueConfig.doubleSidedMode=g.WindingOrder:this.techniqueConfig.doubleSidedMode=this.parameters.doubleSided&&"normal"===this.parameters.doubleSidedType?g.View:this.parameters.doubleSided&&"winding-order"===this.parameters.doubleSidedType?g.WindingOrder:g.None,this.techniqueConfig.instancedColor=!!this.parameters.instanced&&this.parameters.instanced.indexOf("color")>-1,this.techniqueConfig.receiveShadows=this.parameters.receiveShadows&&this.parameters.shadowMappingEnabled,this.techniqueConfig.receiveAmbientOcclusion=!!x(r)&&this.parameters.receiveSSAO,this.techniqueConfig.vvColor=this.parameters.vvColorEnabled,this.techniqueConfig.textureAlphaPremultiplied=!!this.parameters.textureAlphaPremultiplied,this.techniqueConfig.pbrMode=this.parameters.usePBR?this.parameters.isSchematic?T.Schematic:T.Normal:T.Disabled,this.techniqueConfig.hasMetalnessAndRoughnessTexture=!!this.parameters.metallicRoughnessTextureId,this.techniqueConfig.hasEmissionTexture=!!this.parameters.emissiveTextureId,this.techniqueConfig.hasOcclusionTexture=!!this.parameters.occlusionTextureId,this.techniqueConfig.offsetBackfaces=!(!this.parameters.transparent||!this.parameters.offsetTransparentBackfaces),this.techniqueConfig.transparencyPassType=r.transparencyPassType,this.techniqueConfig.enableOffset=r.camera.relativeElevation<P),this.techniqueConfig}intersect(e,t,c,u,p,d,f){if(null!==this.parameters.verticalOffset){const e=u.camera;r(K,c[12],c[13],c[14]);let t=null;switch(u.viewingMode){case m.Global:t=i(Y,K);break;case m.Local:t=s(Y,Q)}let f=0;if(null!==this.parameters.verticalOffset){const r=a(X,K,e.eye),s=n(r),i=o(r,r,1/s);let l=null;this.parameters.screenSizePerspective&&(l=h(t,i)),f+=_(e,s,this.parameters.verticalOffset,l,this.parameters.screenSizePerspective)}o(t,t,f),l(J,t,u.transform.inverseRotation),p=a(U,p,J),d=a(W,d,J)}j(e,t,u,p,d,D(u.verticalOffset),f)}requiresSlot(e){return e===(this.parameters.transparent?this.parameters.writeDepth?y.TRANSPARENT_MATERIAL:y.TRANSPARENT_DEPTH_WRITE_DISABLED_MATERIAL:y.OPAQUE_MATERIAL)||e===y.DRAPED_MATERIAL}createGLMaterial(e){return e.output===d.Color||e.output===d.Alpha||e.output===d.Depth||e.output===d.Normal||e.output===d.Shadow||e.output===d.Highlight?new z(e):null}createBufferWriter(){return new G(this.vertexBufferLayout,this.instanceBufferLayout)}}class z extends M{constructor(e){super({...e,...e.material.parameters})}_updateParameters(e){const t=this._material.parameters;return this.updateTexture(t.textureId),this._material.setParameters(this.passParameters),this.ensureTechnique(t.treeRendering?B:w,e)}_updateShadowState(e){A(e)!==this._material.parameters.shadowMappingEnabled&&this._material.setParameters({shadowMappingEnabled:A(e)})}_updateOccludeeState(e){e.hasOccludees!==this._material.parameters.hasOccludees&&this._material.setParameters({hasOccludees:e.hasOccludees})}beginSlot(e){return this._output!==d.Color&&this._output!==d.Alpha||(this._updateShadowState(e),this._updateOccludeeState(e)),this._updateParameters(e)}}const H={textureId:void 0,initTextureTransparent:!1,isSchematic:!1,usePBR:!1,normalTextureId:void 0,hasVertexTangents:!1,occlusionTextureId:void 0,emissiveTextureId:void 0,metallicRoughnessTextureId:void 0,emissiveFactor:[0,0,0],mrrFactors:[0,1,.5],ambient:[.2,.2,.2],diffuse:[.8,.8,.8],externalColor:[1,1,1,1],colorMixMode:"multiply",opacity:1,layerOpacity:1,hasVertexColors:!1,hasSymbolColors:!1,doubleSided:!1,doubleSidedType:"normal",cullFace:S.Back,instanced:void 0,instancedDoublePrecision:!1,normals:"default",receiveSSAO:!0,enableFillLights:!0,receiveShadows:!0,castShadows:!0,shadowMappingEnabled:!1,verticalOffset:null,screenSizePerspective:null,hasSlicePlane:!1,hasSliceHighlight:!0,offsetTransparentBackfaces:!1,vvSizeEnabled:!1,vvSizeMinSize:[1,1,1],vvSizeMaxSize:[100,100,100],vvSizeOffset:[0,0,0],vvSizeFactor:[1,1,1],vvSizeValue:[1,1,1],vvColorEnabled:!1,vvColorValues:[0,0,0,0,0,0,0,0],vvColorColors:[1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0],vvSymbolAnchor:[0,0,0],vvSymbolRotationMatrix:t(),modelTransformation:null,transparent:!1,writeDepth:!0,customDepthTest:b.Less,textureAlphaMode:O.Blend,textureAlphaCutoff:C,textureAlphaPremultiplied:!1,hasOccludees:!1,...new v,...L};class G{constructor(e,t){this.vertexBufferLayout=e,this.instanceBufferLayout=t}allocate(e){return this.vertexBufferLayout.createBuffer(e)}elementCount(e){return e.indices.get(E.POSITION).length}write(e,t,r,s){R(t,this.vertexBufferLayout,e.transformation,e.invTranspTransformation,r,s)}}function F(e){const t=e.textureId||e.normalTextureId||e.metallicRoughnessTextureId||e.emissiveTextureId||e.occlusionTextureId,r=p().vec3f(E.POSITION).vec3f(E.NORMAL);return e.hasVertexTangents&&r.vec4f(E.TANGENT),t&&r.vec2f(E.UV0),e.hasVertexColors&&r.vec4u8(E.COLOR),e.hasSymbolColors&&r.vec4u8(E.SYMBOLCOLOR),r}function k(e){let t=p();return t=e.instancedDoublePrecision?t.vec3f(E.MODELORIGINHI).vec3f(E.MODELORIGINLO).mat3f(E.MODEL).mat3f(E.MODELNORMAL):t.mat4f(E.MODEL).mat4f(E.MODELNORMAL),e.instanced&&e.instanced.indexOf("color")>-1&&(t=t.vec4f(E.INSTANCECOLOR)),e.instanced&&e.instanced.indexOf("featureAttribute")>-1&&(t=t.vec4f(E.INSTANCEFEATUREATTRIBUTE)),t}const U=c(),W=c(),Q=u(0,0,1),Y=c(),J=c(),K=c(),X=c();export{z as DefaultGLMaterial,V as DefaultMaterial,k as getInstanceBufferLayout};
5
+ import{isSome as e}from"../../../../core/maybe.js";import{c as t}from"../../../../chunks/mat3f64.js";import{s as r,c as s,n as i,b as a,l as n,g as o,e as h,t as l}from"../../../../chunks/vec3.js";import{c,f as u}from"../../../../chunks/vec3f64.js";import{ViewingMode as m}from"../../../ViewingMode.js";import{newLayout as p}from"../../support/buffer/InterleavedLayout.js";import{ShaderOutput as d}from"../core/shaderLibrary/ShaderOutputOptions.js";import{NormalAttributeType as f}from"../core/shaderLibrary/attributes/NormalAttribute.glsl.js";import{VertexNormalPassParameters as v}from"../core/shaderLibrary/attributes/VertexNormal.glsl.js";import{NormalsDoubleSidedMode as g}from"../core/shaderLibrary/shading/Normals.glsl.js";import{PBRMode as T}from"../core/shaderLibrary/shading/PhysicallyBasedRenderingParameters.glsl.js";import{defaultMaskAlphaCutoff as C}from"../core/shaderLibrary/util/AlphaDiscard.glsl.js";import{CullFaceOptions as S,DepthTestFunction as b,AlphaDiscardMode as A}from"../lib/basicInterfaces.js";import{hasEnabledSSAO as O,hasEnabledShadowMap as x}from"../lib/BindParameters.js";import{GLTextureMaterial as M}from"../lib/GLTextureMaterial.js";import{DefaultMaterialParameters as L,Material as q}from"../lib/Material.js";import{OITPolygonOffsetLimit as P}from"../lib/OrderIndependentTransparency.js";import{RenderPass as I}from"../lib/RenderPass.js";import{RenderSlot as y}from"../lib/RenderSlot.js";import{VertexAttribute as E}from"../lib/VertexAttribute.js";import{getVerticalOffsetObject3D as D}from"../lib/verticalOffsetUtils.js";import{writeDefaultAttributes as R}from"./internal/bufferWriterUtils.js";import{verticalOffsetAtDistance as _,intersectTriangleGeometry as j}from"./internal/MaterialUtil.js";import{DefaultMaterialTechnique as w}from"../shaders/DefaultMaterialTechnique.js";import{DefaultMaterialTechniqueConfiguration as N}from"../shaders/DefaultMaterialTechniqueConfiguration.js";import{RealisticTreeTechnique as B}from"../shaders/RealisticTreeTechnique.js";class V extends q{constructor(e){super(e,H),this.supportsEdges=!0,this.techniqueConfig=new N,this.vertexBufferLayout=F(this.parameters),this.instanceBufferLayout=e.instanced?k(this.parameters):null}isVisibleInPass(e){return e!==I.MATERIAL_DEPTH_SHADOWMAP_ALL&&e!==I.MATERIAL_DEPTH_SHADOWMAP_DEFAULT&&e!==I.MATERIAL_DEPTH_SHADOWMAP_HIGHLIGHT||this.parameters.castShadows}isVisible(){const e=this.parameters;if(!super.isVisible()||0===e.layerOpacity)return!1;const{instanced:t,hasVertexColors:r,hasSymbolColors:s,vvColorEnabled:i}=e,a=!!t&&t.includes("color"),n="replace"===e.colorMixMode,o=e.opacity>0,h=e.externalColor&&e.externalColor[3]>0;return r&&(a||i||s)?!!n||o:r?n?h:o:a||i||s?!!n||o:n?h:o}getConfiguration(t,r){return this.techniqueConfig.output=t,this.techniqueConfig.hasNormalTexture=!!this.parameters.normalTextureId,this.techniqueConfig.hasColorTexture=!!this.parameters.textureId,this.techniqueConfig.hasVertexTangents=this.parameters.hasVertexTangents,this.techniqueConfig.instanced=!!this.parameters.instanced,this.techniqueConfig.instancedDoublePrecision=this.parameters.instancedDoublePrecision,this.techniqueConfig.vvSize=this.parameters.vvSizeEnabled,this.techniqueConfig.hasVerticalOffset=null!==this.parameters.verticalOffset,this.techniqueConfig.hasScreenSizePerspective=null!==this.parameters.screenSizePerspective,this.techniqueConfig.hasSlicePlane=this.parameters.hasSlicePlane,this.techniqueConfig.hasSliceHighlight=this.parameters.hasSliceHighlight,this.techniqueConfig.alphaDiscardMode=this.parameters.textureAlphaMode,this.techniqueConfig.normalType="screenDerivative"===this.parameters.normals?f.ScreenDerivative:f.Attribute,this.techniqueConfig.transparent=this.parameters.transparent,this.techniqueConfig.writeDepth=this.parameters.writeDepth,e(this.parameters.customDepthTest)&&(this.techniqueConfig.customDepthTest=this.parameters.customDepthTest),this.techniqueConfig.hasOccludees=this.parameters.hasOccludees,this.techniqueConfig.cullFace=this.parameters.hasSlicePlane?S.None:this.parameters.cullFace,this.techniqueConfig.hasMultipassTerrain=r.multipassTerrain.enabled,this.techniqueConfig.cullAboveGround=r.multipassTerrain.cullAboveGround,this.techniqueConfig.hasModelTransformation=e(this.parameters.modelTransformation),t!==d.Color&&t!==d.Alpha||(this.techniqueConfig.hasVertexColors=this.parameters.hasVertexColors,this.techniqueConfig.hasSymbolColors=this.parameters.hasSymbolColors,this.parameters.treeRendering?this.techniqueConfig.doubleSidedMode=g.WindingOrder:this.techniqueConfig.doubleSidedMode=this.parameters.doubleSided&&"normal"===this.parameters.doubleSidedType?g.View:this.parameters.doubleSided&&"winding-order"===this.parameters.doubleSidedType?g.WindingOrder:g.None,this.techniqueConfig.instancedColor=!!this.parameters.instanced&&this.parameters.instanced.includes("color"),this.techniqueConfig.receiveShadows=this.parameters.receiveShadows&&this.parameters.shadowMappingEnabled,this.techniqueConfig.receiveAmbientOcclusion=!!O(r)&&this.parameters.receiveSSAO,this.techniqueConfig.vvColor=this.parameters.vvColorEnabled,this.techniqueConfig.textureAlphaPremultiplied=!!this.parameters.textureAlphaPremultiplied,this.techniqueConfig.pbrMode=this.parameters.usePBR?this.parameters.isSchematic?T.Schematic:T.Normal:T.Disabled,this.techniqueConfig.hasMetalnessAndRoughnessTexture=!!this.parameters.metallicRoughnessTextureId,this.techniqueConfig.hasEmissionTexture=!!this.parameters.emissiveTextureId,this.techniqueConfig.hasOcclusionTexture=!!this.parameters.occlusionTextureId,this.techniqueConfig.offsetBackfaces=!(!this.parameters.transparent||!this.parameters.offsetTransparentBackfaces),this.techniqueConfig.transparencyPassType=r.transparencyPassType,this.techniqueConfig.enableOffset=r.camera.relativeElevation<P),this.techniqueConfig}intersect(e,t,c,u,p,d,f){if(null!==this.parameters.verticalOffset){const e=u.camera;r(K,c[12],c[13],c[14]);let t=null;switch(u.viewingMode){case m.Global:t=i(Y,K);break;case m.Local:t=s(Y,Q)}let f=0;if(null!==this.parameters.verticalOffset){const r=a(X,K,e.eye),s=n(r),i=o(r,r,1/s);let l=null;this.parameters.screenSizePerspective&&(l=h(t,i)),f+=_(e,s,this.parameters.verticalOffset,l,this.parameters.screenSizePerspective)}o(t,t,f),l(J,t,u.transform.inverseRotation),p=a(U,p,J),d=a(W,d,J)}j(e,t,u,p,d,D(u.verticalOffset),f)}requiresSlot(e){return e===(this.parameters.transparent?this.parameters.writeDepth?y.TRANSPARENT_MATERIAL:y.TRANSPARENT_DEPTH_WRITE_DISABLED_MATERIAL:y.OPAQUE_MATERIAL)||e===y.DRAPED_MATERIAL}createGLMaterial(e){return e.output===d.Color||e.output===d.Alpha||e.output===d.Depth||e.output===d.Normal||e.output===d.Shadow||e.output===d.Highlight?new z(e):null}createBufferWriter(){return new G(this.vertexBufferLayout,this.instanceBufferLayout)}}class z extends M{constructor(e){super({...e,...e.material.parameters})}_updateParameters(e){const t=this._material.parameters;return this.updateTexture(t.textureId),this._material.setParameters(this.passParameters),this.ensureTechnique(t.treeRendering?B:w,e)}_updateShadowState(e){x(e)!==this._material.parameters.shadowMappingEnabled&&this._material.setParameters({shadowMappingEnabled:x(e)})}_updateOccludeeState(e){e.hasOccludees!==this._material.parameters.hasOccludees&&this._material.setParameters({hasOccludees:e.hasOccludees})}beginSlot(e){return this._output!==d.Color&&this._output!==d.Alpha||(this._updateShadowState(e),this._updateOccludeeState(e)),this._updateParameters(e)}}const H={textureId:void 0,initTextureTransparent:!1,isSchematic:!1,usePBR:!1,normalTextureId:void 0,hasVertexTangents:!1,occlusionTextureId:void 0,emissiveTextureId:void 0,metallicRoughnessTextureId:void 0,emissiveFactor:[0,0,0],mrrFactors:[0,1,.5],ambient:[.2,.2,.2],diffuse:[.8,.8,.8],externalColor:[1,1,1,1],colorMixMode:"multiply",opacity:1,layerOpacity:1,hasVertexColors:!1,hasSymbolColors:!1,doubleSided:!1,doubleSidedType:"normal",cullFace:S.Back,instanced:void 0,instancedDoublePrecision:!1,normals:"default",receiveSSAO:!0,enableFillLights:!0,receiveShadows:!0,castShadows:!0,shadowMappingEnabled:!1,verticalOffset:null,screenSizePerspective:null,hasSlicePlane:!1,hasSliceHighlight:!0,offsetTransparentBackfaces:!1,vvSizeEnabled:!1,vvSizeMinSize:[1,1,1],vvSizeMaxSize:[100,100,100],vvSizeOffset:[0,0,0],vvSizeFactor:[1,1,1],vvSizeValue:[1,1,1],vvColorEnabled:!1,vvColorValues:[0,0,0,0,0,0,0,0],vvColorColors:[1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0],vvSymbolAnchor:[0,0,0],vvSymbolRotationMatrix:t(),modelTransformation:null,transparent:!1,writeDepth:!0,customDepthTest:b.Less,textureAlphaMode:A.Blend,textureAlphaCutoff:C,textureAlphaPremultiplied:!1,hasOccludees:!1,...new v,...L};class G{constructor(e,t){this.vertexBufferLayout=e,this.instanceBufferLayout=t}allocate(e){return this.vertexBufferLayout.createBuffer(e)}elementCount(e){return e.indices.get(E.POSITION).length}write(e,t,r,s){R(t,this.vertexBufferLayout,e.transformation,e.invTranspTransformation,r,s)}}function F(e){const t=e.textureId||e.normalTextureId||e.metallicRoughnessTextureId||e.emissiveTextureId||e.occlusionTextureId,r=p().vec3f(E.POSITION).vec3f(E.NORMAL);return e.hasVertexTangents&&r.vec4f(E.TANGENT),t&&r.vec2f(E.UV0),e.hasVertexColors&&r.vec4u8(E.COLOR),e.hasSymbolColors&&r.vec4u8(E.SYMBOLCOLOR),r}function k(e){let t=p();return t=e.instancedDoublePrecision?t.vec3f(E.MODELORIGINHI).vec3f(E.MODELORIGINLO).mat3f(E.MODEL).mat3f(E.MODELNORMAL):t.mat4f(E.MODEL).mat4f(E.MODELNORMAL),e.instanced&&e.instanced.includes("color")&&(t=t.vec4f(E.INSTANCECOLOR)),e.instanced&&e.instanced.includes("featureAttribute")&&(t=t.vec4f(E.INSTANCEFEATUREATTRIBUTE)),t}const U=c(),W=c(),Q=u(0,0,1),Y=c(),J=c(),K=c(),X=c();export{z as DefaultGLMaterial,V as DefaultMaterial,k as getInstanceBufferLayout};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.24/esri/copyright.txt for details.
4
4
  */
5
- import{_ as o}from"../../../../chunks/tslib.es6.js";import{isSome as e}from"../../../../core/maybe.js";import{ViewingMode as t}from"../../../ViewingMode.js";import{ShaderOutput as r}from"../core/shaderLibrary/ShaderOutputOptions.js";import{NormalsDoubleSidedMode as i}from"../core/shaderLibrary/shading/Normals.glsl.js";import{PBRMode as s}from"../core/shaderLibrary/shading/PhysicallyBasedRenderingParameters.glsl.js";import{bindReadShadowMapDraw as a}from"../core/shaderLibrary/shading/ReadShadowMap.glsl.js";import{ReloadableShaderModule as n}from"../core/shaderTechnique/ReloadableShaderModule.js";import{ShaderTechnique as p}from"../core/shaderTechnique/ShaderTechnique.js";import{parameter as l}from"../core/shaderTechnique/ShaderTechniqueConfiguration.js";import{TransparencyPassType as h}from"../lib/basicInterfaces.js";import{blendingDefault as d,oitBlending as c,oitDepthTest as u,OITPolygonOffset as m}from"../lib/OrderIndependentTransparency.js";import{Program as f}from"../lib/Program.js";import{stencilWriteMaskOn as g,stencilBaseAllZerosParams as v}from"../lib/StencilUtils.js";import{VertexAttribute as y}from"../lib/VertexAttribute.js";import{DefaultTechniqueConfiguration as b}from"./DefaultTechniqueConfiguration.js";import{P as O}from"../../../../chunks/Path.glsl.js";import{makePipelineState as P,frontFaceCullingParams as T,defaultDepthWriteParams as S,defaultColorWriteParams as j}from"../../../webgl/renderState.js";const M=new Map([[y.POSITION,0],[y.PROFILERIGHT,1],[y.PROFILEUP,2],[y.PROFILEVERTEXANDNORMAL,3],[y.FEATUREVALUE,4]]);class w extends p{initializeConfiguration(o,e){e.spherical=o.viewingMode===t.Global}initializeProgram(o){const e=w.shader.get().build(this.configuration);return new f(o.rctx,e,M)}bindPass(o,t){this.program.bindPass(o,t),this.program.setUniform3fv("size",o.size),this.configuration.output!==r.Color&&this.configuration.output!==r.Alpha||this.program.setUniform1f("opacity",o.opacity),this.configuration.output===r.Color&&(t.lighting.setUniforms(this.program,!1,!1),this.program.setUniform3fv("ambient",o.ambient),this.program.setUniform3fv("diffuse",o.diffuse),this.program.setUniform3fv("specular",o.specular),this.program.setUniform1f("opacity",o.opacity)),e(t.shadowMap)&&t.shadowMap.bind(this.program),e(t.ssaoHelper)&&t.ssaoHelper.bind(this.program,t.camera)}bindDraw(o,e){this.program.bindDraw(o,e),this.program.rebindTextures(),this.configuration.output===r.Color&&a(this.program,e.shadowMap,o.origin)}_setPipelineState(o){const e=this.configuration,t=o===h.NONE,s=o===h.FrontFace,a=o=>!o.hasSlicePlane&&!(o.transparent||o.doubleSidedMode===i.None);return P({blending:e.output!==r.Color&&e.output!==r.Alpha||!e.transparent?null:t?d:c(o),culling:a(e)&&T,depthTest:{func:u(o)},depthWrite:t||s?S:null,colorWrite:j,stencilWrite:e.hasOccludees?g:null,stencilTest:e.hasOccludees?v:null,polygonOffset:t||s?null:m})}initializePipeline(){return this._setPipelineState(this.configuration.transparencyPassType)}}w.shader=new n(O,(()=>import("../shaders/Path.glsl.js")));class C extends b{constructor(){super(...arguments),this.output=r.Color,this.doubleSidedMode=i.None,this.transparencyPassType=h.NONE,this.spherical=!1,this.receiveShadows=!1,this.receiveAmbientOcclusion=!1,this.vvSize=!1,this.vvColor=!1,this.vvOpacity=!1,this.hasSlicePlane=!1,this.transparent=!1,this.hasOccludees=!1,this.hasMultipassTerrain=!1,this.cullAboveGround=!1}}o([l({count:r.COUNT})],C.prototype,"output",void 0),o([l({count:i.COUNT})],C.prototype,"doubleSidedMode",void 0),o([l({count:h.COUNT})],C.prototype,"transparencyPassType",void 0),o([l()],C.prototype,"spherical",void 0),o([l()],C.prototype,"receiveShadows",void 0),o([l()],C.prototype,"receiveAmbientOcclusion",void 0),o([l()],C.prototype,"vvSize",void 0),o([l()],C.prototype,"vvColor",void 0),o([l()],C.prototype,"vvOpacity",void 0),o([l()],C.prototype,"hasSlicePlane",void 0),o([l()],C.prototype,"transparent",void 0),o([l()],C.prototype,"hasOccludees",void 0),o([l()],C.prototype,"hasMultipassTerrain",void 0),o([l()],C.prototype,"cullAboveGround",void 0),o([l({constValue:s.Disabled})],C.prototype,"pbrMode",void 0),o([l({constValue:!0})],C.prototype,"hasVvInstancing",void 0),o([l({constValue:!1})],C.prototype,"useCustomDTRExponentForWater",void 0),o([l({constValue:!1})],C.prototype,"enableFillLights",void 0);export{w as PathTechnique,C as PathTechniqueConfiguration,M as pathVertexAttributeLocations};
5
+ import{_ as o}from"../../../../chunks/tslib.es6.js";import{isSome as e}from"../../../../core/maybe.js";import{ViewingMode as i}from"../../../ViewingMode.js";import{ShaderOutput as r}from"../core/shaderLibrary/ShaderOutputOptions.js";import{NormalsDoubleSidedMode as t}from"../core/shaderLibrary/shading/Normals.glsl.js";import{PBRMode as s}from"../core/shaderLibrary/shading/PhysicallyBasedRenderingParameters.glsl.js";import{bindReadShadowMapDraw as a}from"../core/shaderLibrary/shading/ReadShadowMap.glsl.js";import{doublePrecisionRequiresObfuscation as n}from"../core/shaderLibrary/util/DoublePrecision.glsl.js";import{ReloadableShaderModule as p}from"../core/shaderTechnique/ReloadableShaderModule.js";import{ShaderTechnique as l}from"../core/shaderTechnique/ShaderTechnique.js";import{parameter as c}from"../core/shaderTechnique/ShaderTechniqueConfiguration.js";import{TransparencyPassType as d}from"../lib/basicInterfaces.js";import{blendingDefault as u,oitBlending as h,oitDepthTest as m,OITPolygonOffset as f}from"../lib/OrderIndependentTransparency.js";import{Program as g}from"../lib/Program.js";import{stencilWriteMaskOn as b,stencilBaseAllZerosParams as v}from"../lib/StencilUtils.js";import{VertexAttribute as y}from"../lib/VertexAttribute.js";import{DefaultTechniqueConfiguration as P}from"./DefaultTechniqueConfiguration.js";import{P as O}from"../../../../chunks/Path.glsl.js";import{makePipelineState as T,frontFaceCullingParams as j,defaultDepthWriteParams as S,defaultColorWriteParams as M}from"../../../webgl/renderState.js";const w=new Map([[y.POSITION,0],[y.PROFILERIGHT,1],[y.PROFILEUP,2],[y.PROFILEVERTEXANDNORMAL,3],[y.FEATUREVALUE,4]]);class C extends l{initializeConfiguration(o,e){e.spherical=o.viewingMode===i.Global,e.doublePrecisionRequiresObfuscation=n(o.rctx)}initializeProgram(o){const e=C.shader.get().build(this.configuration);return new g(o.rctx,e,w)}bindPass(o,i){this.program.bindPass(o,i),this.program.setUniform3fv("size",o.size),this.configuration.output!==r.Color&&this.configuration.output!==r.Alpha||this.program.setUniform1f("opacity",o.opacity),this.configuration.output===r.Color&&(i.lighting.setUniforms(this.program,!1,!1),this.program.setUniform3fv("ambient",o.ambient),this.program.setUniform3fv("diffuse",o.diffuse),this.program.setUniform3fv("specular",o.specular),this.program.setUniform1f("opacity",o.opacity)),e(i.shadowMap)&&i.shadowMap.bind(this.program),e(i.ssaoHelper)&&i.ssaoHelper.bind(this.program,i.camera)}bindDraw(o,e){this.program.bindDraw(o,e),this.program.rebindTextures(),this.configuration.output===r.Color&&a(this.program,e.shadowMap,o.origin)}_setPipelineState(o){const e=this.configuration,i=o===d.NONE,s=o===d.FrontFace,a=o=>!o.hasSlicePlane&&!(o.transparent||o.doubleSidedMode===t.None);return T({blending:e.output!==r.Color&&e.output!==r.Alpha||!e.transparent?null:i?u:h(o),culling:a(e)&&j,depthTest:{func:m(o)},depthWrite:i||s?S:null,colorWrite:M,stencilWrite:e.hasOccludees?b:null,stencilTest:e.hasOccludees?v:null,polygonOffset:i||s?null:f})}initializePipeline(){return this._setPipelineState(this.configuration.transparencyPassType)}}C.shader=new p(O,(()=>import("../shaders/Path.glsl.js")));class R extends P{constructor(){super(...arguments),this.output=r.Color,this.doubleSidedMode=t.None,this.transparencyPassType=d.NONE,this.spherical=!1,this.receiveShadows=!1,this.receiveAmbientOcclusion=!1,this.vvSize=!1,this.vvColor=!1,this.vvOpacity=!1,this.hasSlicePlane=!1,this.transparent=!1,this.hasOccludees=!1,this.hasMultipassTerrain=!1,this.cullAboveGround=!1,this.doublePrecisionRequiresObfuscation=!1}}o([c({count:r.COUNT})],R.prototype,"output",void 0),o([c({count:t.COUNT})],R.prototype,"doubleSidedMode",void 0),o([c({count:d.COUNT})],R.prototype,"transparencyPassType",void 0),o([c()],R.prototype,"spherical",void 0),o([c()],R.prototype,"receiveShadows",void 0),o([c()],R.prototype,"receiveAmbientOcclusion",void 0),o([c()],R.prototype,"vvSize",void 0),o([c()],R.prototype,"vvColor",void 0),o([c()],R.prototype,"vvOpacity",void 0),o([c()],R.prototype,"hasSlicePlane",void 0),o([c()],R.prototype,"transparent",void 0),o([c()],R.prototype,"hasOccludees",void 0),o([c()],R.prototype,"hasMultipassTerrain",void 0),o([c()],R.prototype,"cullAboveGround",void 0),o([c()],R.prototype,"doublePrecisionRequiresObfuscation",void 0),o([c({constValue:s.Disabled})],R.prototype,"pbrMode",void 0),o([c({constValue:!0})],R.prototype,"hasVvInstancing",void 0),o([c({constValue:!1})],R.prototype,"useCustomDTRExponentForWater",void 0),o([c({constValue:!1})],R.prototype,"enableFillLights",void 0);export{C as PathTechnique,R as PathTechniqueConfiguration,w as pathVertexAttributeLocations};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.24/esri/copyright.txt for details.
4
4
  */
5
- import{_ as o}from"../../../../chunks/tslib.es6.js";import t from"../../../../core/has.js";import{isSome as r}from"../../../../core/maybe.js";import{ViewingMode as e}from"../../../ViewingMode.js";import{bindCloudsComposition as i}from"../../environment/CloudsComposition.js";import{ShaderOutput as s}from"../core/shaderLibrary/ShaderOutputOptions.js";import{PBRMode as a}from"../core/shaderLibrary/shading/PhysicallyBasedRenderingParameters.glsl.js";import{bindReadShadowMapPass as n,bindReadShadowMapDraw as p}from"../core/shaderLibrary/shading/ReadShadowMap.glsl.js";import{bindWaterDistortionUniforms as h}from"../core/shaderLibrary/shading/WaterDistortion.glsl.js";import{ReloadableShaderModule as l}from"../core/shaderTechnique/ReloadableShaderModule.js";import{ShaderTechnique as u}from"../core/shaderTechnique/ShaderTechnique.js";import{parameter as c}from"../core/shaderTechnique/ShaderTechniqueConfiguration.js";import{TransparencyPassType as d}from"../lib/basicInterfaces.js";import{Default3D as m}from"../lib/DefaultVertexAttributeLocations.js";import{blendingDefault as f,oitBlending as g,oitDepthTest as y,oitDepthWrite as b,getOITPolygonOffset as v}from"../lib/OrderIndependentTransparency.js";import{Program as j}from"../lib/Program.js";import{DefaultTechniqueConfiguration as S}from"./DefaultTechniqueConfiguration.js";import{W as C}from"../../../../chunks/WaterSurface.glsl.js";import{makePipelineState as T,defaultDepthWriteParams as w,defaultColorWriteParams as P}from"../../../webgl/renderState.js";class D extends u{constructor(o,t,r){super(o,t,r),this._textureRepository=o.waterTextureRepository}initializeConfiguration(o,t){t.spherical=o.viewingMode===e.Global}initializeProgram(o){const t=D.shader.get().build(this.configuration);return new j(o.rctx,t,m)}bindPass(o,t){this.program.bindPass(o,t),this.configuration.output===s.Color&&(t.lighting.setUniforms(this.program,!1,!1),this.configuration.hasCloudsReflections&&r(t.cloudsComposition)&&i(this.program,t.camera,t.cloudsComposition)),this.configuration.output!==s.Color&&this.configuration.output!==s.Normal||(h(this.program,o),this._textureRepository.bind(this.program)),this.program.setUniform4fv("waterColor",o.color)}bindDraw(o,t){this.program.bindDraw(o,t),this.program.rebindTextures(),this.configuration.output===s.Color&&(n(this.program,t.shadowMap),p(this.program,t.shadowMap,o.origin))}_setPipelineState(o){const t=this.configuration,r=o===d.NONE,e=o===d.FrontFace;return T({blending:t.output!==s.Normal&&t.output!==s.Highlight&&t.transparent?r?f:g(o):null,depthTest:{func:y(o)},depthWrite:r?t.writeDepth&&w:b(o),colorWrite:P,polygonOffset:r||e?null:v(t.enableOffset)})}initializePipeline(){return this._setPipelineState(this.configuration.transparencyPassType)}}D.shader=new l(C,(()=>import("../shaders/WaterSurface.glsl.js")));class O extends S{constructor(){super(...arguments),this.output=s.Color,this.transparencyPassType=d.NONE,this.spherical=!1,this.receiveShadows=!1,this.hasSlicePlane=!1,this.transparent=!1,this.enableOffset=!0,this.writeDepth=!1,this.hasScreenSpaceReflections=!1,this.isDraped=!1,this.hasMultipassTerrain=!1,this.cullAboveGround=!1}}o([c({count:s.COUNT})],O.prototype,"output",void 0),o([c({count:d.COUNT})],O.prototype,"transparencyPassType",void 0),o([c()],O.prototype,"spherical",void 0),o([c()],O.prototype,"receiveShadows",void 0),o([c()],O.prototype,"hasSlicePlane",void 0),o([c()],O.prototype,"transparent",void 0),o([c()],O.prototype,"enableOffset",void 0),o([c()],O.prototype,"writeDepth",void 0),o([c()],O.prototype,"hasScreenSpaceReflections",void 0),o([c()],O.prototype,"isDraped",void 0),o([c()],O.prototype,"hasMultipassTerrain",void 0),o([c()],O.prototype,"cullAboveGround",void 0),o([c({constValue:a.Water})],O.prototype,"pbrMode",void 0),o([c({constValue:!0})],O.prototype,"useCustomDTRExponentForWater",void 0),o([c({constValue:!0})],O.prototype,"highStepCount",void 0),o([c({constValue:t("enable-feature:clouds-reflections")})],O.prototype,"hasCloudsReflections",void 0),o([c({constValue:!1})],O.prototype,"enableFillLights",void 0);export{D as WaterTechnique,O as WaterTechniqueConfiguration};
5
+ import{_ as o}from"../../../../chunks/tslib.es6.js";import e from"../../../../core/has.js";import{isSome as r}from"../../../../core/maybe.js";import{ViewingMode as t}from"../../../ViewingMode.js";import{bindCloudsComposition as i}from"../../environment/CloudsComposition.js";import{ShaderOutput as s}from"../core/shaderLibrary/ShaderOutputOptions.js";import{PBRMode as a}from"../core/shaderLibrary/shading/PhysicallyBasedRenderingParameters.glsl.js";import{bindReadShadowMapPass as n,bindReadShadowMapDraw as p}from"../core/shaderLibrary/shading/ReadShadowMap.glsl.js";import{bindWaterDistortionUniforms as l}from"../core/shaderLibrary/shading/WaterDistortion.glsl.js";import{doublePrecisionRequiresObfuscation as u}from"../core/shaderLibrary/util/DoublePrecision.glsl.js";import{ReloadableShaderModule as h}from"../core/shaderTechnique/ReloadableShaderModule.js";import{ShaderTechnique as c}from"../core/shaderTechnique/ShaderTechnique.js";import{parameter as d}from"../core/shaderTechnique/ShaderTechniqueConfiguration.js";import{TransparencyPassType as m}from"../lib/basicInterfaces.js";import{Default3D as f}from"../lib/DefaultVertexAttributeLocations.js";import{blendingDefault as g,oitBlending as b,oitDepthTest as y,oitDepthWrite as v,getOITPolygonOffset as j}from"../lib/OrderIndependentTransparency.js";import{Program as S}from"../lib/Program.js";import{DefaultTechniqueConfiguration as C}from"./DefaultTechniqueConfiguration.js";import{W as P}from"../../../../chunks/WaterSurface.glsl.js";import{makePipelineState as T,defaultDepthWriteParams as w,defaultColorWriteParams as O}from"../../../webgl/renderState.js";class R extends c{constructor(o,e,r){super(o,e,r),this._textureRepository=o.waterTextureRepository}initializeConfiguration(o,e){e.spherical=o.viewingMode===t.Global,e.doublePrecisionRequiresObfuscation=u(o.rctx)}initializeProgram(o){const e=R.shader.get().build(this.configuration);return new S(o.rctx,e,f)}bindPass(o,e){this.program.bindPass(o,e),this.configuration.output===s.Color&&(e.lighting.setUniforms(this.program,!1,!1),this.configuration.hasCloudsReflections&&r(e.cloudsComposition)&&i(this.program,e.camera,e.cloudsComposition)),this.configuration.output!==s.Color&&this.configuration.output!==s.Normal||(l(this.program,o),this._textureRepository.bind(this.program)),this.program.setUniform4fv("waterColor",o.color)}bindDraw(o,e){this.program.bindDraw(o,e),this.program.rebindTextures(),this.configuration.output===s.Color&&(n(this.program,e.shadowMap),p(this.program,e.shadowMap,o.origin))}_setPipelineState(o){const e=this.configuration,r=o===m.NONE,t=o===m.FrontFace;return T({blending:e.output!==s.Normal&&e.output!==s.Highlight&&e.transparent?r?g:b(o):null,depthTest:{func:y(o)},depthWrite:r?e.writeDepth&&w:v(o),colorWrite:O,polygonOffset:r||t?null:j(e.enableOffset)})}initializePipeline(){return this._setPipelineState(this.configuration.transparencyPassType)}}R.shader=new h(P,(()=>import("../shaders/WaterSurface.glsl.js")));class D extends C{constructor(){super(...arguments),this.output=s.Color,this.transparencyPassType=m.NONE,this.spherical=!1,this.receiveShadows=!1,this.hasSlicePlane=!1,this.transparent=!1,this.enableOffset=!0,this.writeDepth=!1,this.hasScreenSpaceReflections=!1,this.doublePrecisionRequiresObfuscation=!1,this.isDraped=!1,this.hasMultipassTerrain=!1,this.cullAboveGround=!1}}o([d({count:s.COUNT})],D.prototype,"output",void 0),o([d({count:m.COUNT})],D.prototype,"transparencyPassType",void 0),o([d()],D.prototype,"spherical",void 0),o([d()],D.prototype,"receiveShadows",void 0),o([d()],D.prototype,"hasSlicePlane",void 0),o([d()],D.prototype,"transparent",void 0),o([d()],D.prototype,"enableOffset",void 0),o([d()],D.prototype,"writeDepth",void 0),o([d()],D.prototype,"hasScreenSpaceReflections",void 0),o([d()],D.prototype,"doublePrecisionRequiresObfuscation",void 0),o([d()],D.prototype,"isDraped",void 0),o([d()],D.prototype,"hasMultipassTerrain",void 0),o([d()],D.prototype,"cullAboveGround",void 0),o([d({constValue:a.Water})],D.prototype,"pbrMode",void 0),o([d({constValue:!0})],D.prototype,"useCustomDTRExponentForWater",void 0),o([d({constValue:!0})],D.prototype,"highStepCount",void 0),o([d({constValue:e("enable-feature:clouds-reflections")})],D.prototype,"hasCloudsReflections",void 0),o([d({constValue:!1})],D.prototype,"enableFillLights",void 0);export{R as WaterTechnique,D as WaterTechniqueConfiguration};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.24/esri/copyright.txt for details.
4
4
  */
5
- import{isNone as e,disposeMaybe as t}from"../../../../core/maybe.js";import{createResolver as r}from"../../../../core/promiseUtils.js";import{b as s}from"../../../../chunks/vec4f64.js";import{AutoDisposable as i}from"../lib/AutoDisposable.js";import{RenderRequestType as o,Decorations as n}from"../lib/basicInterfaces.js";import{encodeResult as a,createEmptyImageData as h,resampleHermite as c}from"../../../support/screenshotUtils.js";import{PixelFormat as l,DataType as d,TargetType as f,DepthStencilTargetType as u}from"../../../webgl/enums.js";import{FramebufferObject as _}from"../../../webgl/FramebufferObject.js";class g extends i{constructor(e,t,r,s,i,o){super(),this._rctx=e,this._renderScene=t,this._requestRenderScene=r,this._renderOverlay=s,this._forceCameraHook=i,this._disposeOffscreenBuffers=o,this.supersample=!0,this._screenshotQueue=new Array}dispose(){this._rctx=null}takeScreenshot(e){this._requestRenderScene(o.BACKGROUND);const t=r();return this._screenshotQueue.push({settings:e,resolver:t}),t.promise}update(e){for(const t of this._screenshotQueue){if(this.isDisposed){t.resolver.reject();continue}const r={...t.settings,pixelRatio:t.settings.pixelRatio*e.viewCamera.pixelRatio},s=this._ensureScreenshotEncodeCanvas(),i=this._renderScreenshot(e,r),o=a(i,r,s,{flipY:!0,premultipliedAlpha:!0});t.resolver(o)}this._screenshotQueue.length=0}_renderScreenshotOverlay(t,r,s){if(e(this._renderOverlay))return r;t.width=r.width,t.height=r.height;const i=t.getContext("2d"),o=s.pixelRatio;return i.save(),i.translate(0,r.height),i.scale(1,-1),s.region&&i.translate(-s.region.x,-s.region.y),i.scale(o,o),r=this._renderOverlay(t,r),i.restore(),r}_readbackScreenshot(e,t){return e.resample?this._readbackScreenshotResampled(e,t):this._readbackScreenshotImmediate(e,t)}_readbackScreenshotResampled(e,t){const{framebufferWidth:r,framebufferHeight:s,region:i,resample:o}=e,n=this._ensureScreenshotEncodeCanvas();let a=h(r,s,n);this._rctx.gl.readPixels(0,0,r,s,l.RGBA,d.UNSIGNED_BYTE,new Uint8Array(a.data.buffer)),t(),a=this._renderScreenshotOverlay(n,a,{...e,region:null});const f=h(i.width,i.height,n);return c(a,f,!0,o.region.x,s-(o.region.y+o.region.height),o.region.width,o.region.height)}_readbackScreenshotImmediate(e,t){const{framebufferHeight:r,region:s}=e,i=this._ensureScreenshotEncodeCanvas(),o=h(s.width,s.height,i);return this._rctx.gl.readPixels(s.x,r-(s.y+s.height),s.width,s.height,l.RGBA,d.UNSIGNED_BYTE,new Uint8Array(o.data.buffer)),t(),this._renderScreenshotOverlay(i,o,e)}_renderScreenshot(e,r){let i=null;const o=e.viewCamera,{framebufferWidth:a,framebufferHeight:h}=r;let c=!1;const l=r.disableDecorations&&e.frameHasDecorations,d=a!==o.fullWidth||h!==o.fullHeight,g=r.ignorePadding&&o.pixelRatio!==r.pixelRatio,m=d||l||g;if(m){const e=o.clone();if(r.ignorePadding){const t=s(e.padding);for(let s=0;s<4;s++)t[s]=Math.round(t[s]/e.pixelRatio*r.pixelRatio);e.padding=t}e.fullWidth=a,e.fullHeight=h,e.pixelRatio=r.pixelRatio;const t=o.fovX-e.fovX,l=o.fovY-e.fovY;t<0&&t<l?e.fovX=o.fovX:l<0&&l<t&&(e.fovY=o.fovY),this._forceCameraHook(e),c=!0,i=new _(this._rctx,{width:e.fullWidth,height:e.fullHeight,colorTarget:f.TEXTURE,depthStencilTarget:u.DEPTH_STENCIL_RENDER_BUFFER}),this._renderScene(i,e,r.disableDecorations?n.OFF:n.ON),this._disposeOffscreenBuffers()}const p=()=>{this._rctx.bindFramebuffer(null),t(i)},v=this._readbackScreenshot(r,p);if(p(),m&&!this._rctx.contextAttributes.alpha)for(let t=3;t<v.data.length;t+=4)v.data[t]=255;return c&&this._forceCameraHook(o),v}_ensureScreenshotEncodeCanvas(){return this._screenshotEncodeCanvas||(this._screenshotEncodeCanvas=document.createElement("canvas")),this._screenshotEncodeCanvas}}export{g as ScreenshotManager};
5
+ import{isNone as e,disposeMaybe as t}from"../../../../core/maybe.js";import{createResolver as r}from"../../../../core/promiseUtils.js";import{b as s}from"../../../../chunks/vec4f64.js";import{AutoDisposable as i}from"../lib/AutoDisposable.js";import{RenderRequestType as o,Decorations as n}from"../lib/basicInterfaces.js";import{encodeResult as a,createEmptyImageData as h,resampleHermite as c}from"../../../support/screenshotUtils.js";import{PixelFormat as l,DataType as d,TargetType as f,DepthStencilTargetType as u}from"../../../webgl/enums.js";import{FramebufferObject as _}from"../../../webgl/FramebufferObject.js";class p extends i{constructor(e,t,r,s,i,o){super(),this._rctx=e,this._renderScene=t,this._requestRenderScene=r,this._renderOverlay=s,this._forceCameraHook=i,this._disposeOffscreenBuffers=o,this.supersample=!0,this._screenshotQueue=new Array}dispose(){this._rctx=null}takeScreenshot(e){this._requestRenderScene(o.BACKGROUND);const t=r();return this._screenshotQueue.push({settings:e,resolver:t}),t.promise}update(e){for(const t of this._screenshotQueue){if(this.isDisposed){t.resolver.reject();continue}const r={...t.settings,pixelRatio:t.settings.pixelRatio*e.viewCamera.pixelRatio},s=this._ensureScreenshotEncodeCanvas(),i=this._renderScreenshot(e,r),o=a(i,r,s,{flipY:!0,premultipliedAlpha:this._hasAlpha()});t.resolver(o)}this._screenshotQueue.length=0}_hasAlpha(){return this._rctx.contextAttributes.alpha}_renderScreenshotOverlay(t,r,s){if(e(this._renderOverlay))return r;t.width=r.width,t.height=r.height;const i=t.getContext("2d"),o=s.pixelRatio;return i.save(),i.translate(0,r.height),i.scale(1,-1),s.region&&i.translate(-s.region.x,-s.region.y),i.scale(o,o),r=this._renderOverlay(t,r),i.restore(),r}_readbackScreenshot(e,t){return e.resample?this._readbackScreenshotResampled(e,t):this._readbackScreenshotImmediate(e,t)}_readbackScreenshotResampled(e,t){const{framebufferWidth:r,framebufferHeight:s,region:i,resample:o}=e,n=this._ensureScreenshotEncodeCanvas();let a=h(r,s,n);this._rctx.gl.readPixels(0,0,r,s,l.RGBA,d.UNSIGNED_BYTE,new Uint8Array(a.data.buffer)),t(),a=this._renderScreenshotOverlay(n,a,{...e,region:null});const f=h(i.width,i.height,n);return c(a,f,!0,o.region.x,s-(o.region.y+o.region.height),o.region.width,o.region.height)}_readbackScreenshotImmediate(e,t){const{framebufferHeight:r,region:s}=e,i=this._ensureScreenshotEncodeCanvas(),o=h(s.width,s.height,i);return this._rctx.gl.readPixels(s.x,r-(s.y+s.height),s.width,s.height,l.RGBA,d.UNSIGNED_BYTE,new Uint8Array(o.data.buffer)),t(),this._renderScreenshotOverlay(i,o,e)}_renderScreenshot(e,r){let i=null;const o=e.viewCamera,{framebufferWidth:a,framebufferHeight:h}=r;let c=!1;const l=r.disableDecorations&&e.frameHasDecorations,d=a!==o.fullWidth||h!==o.fullHeight,p=r.ignorePadding&&o.pixelRatio!==r.pixelRatio,g=d||l||p;if(g){const e=o.clone();if(r.ignorePadding){const t=s(e.padding);for(let s=0;s<4;s++)t[s]=Math.round(t[s]/e.pixelRatio*r.pixelRatio);e.padding=t}e.fullWidth=a,e.fullHeight=h,e.pixelRatio=r.pixelRatio;const t=o.fovX-e.fovX,l=o.fovY-e.fovY;t<0&&t<l?e.fovX=o.fovX:l<0&&l<t&&(e.fovY=o.fovY),this._forceCameraHook(e),c=!0,i=new _(this._rctx,{width:e.fullWidth,height:e.fullHeight,colorTarget:f.TEXTURE,depthStencilTarget:u.DEPTH_STENCIL_RENDER_BUFFER}),this._renderScene(i,e,r.disableDecorations?n.OFF:n.ON),this._disposeOffscreenBuffers()}const m=()=>{this._rctx.bindFramebuffer(null),t(i)},b=this._readbackScreenshot(r,m);if(m(),g&&!this._rctx.contextAttributes.alpha)for(let t=3;t<b.data.length;t+=4)b.data[t]=255;return c&&this._forceCameraHook(o),b}_ensureScreenshotEncodeCanvas(){return this._screenshotEncodeCanvas||(this._screenshotEncodeCanvas=document.createElement("canvas")),this._screenshotEncodeCanvas}}export{p as ScreenshotManager};
@@ -0,0 +1,5 @@
1
+ /*
2
+ All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
+ See https://js.arcgis.com/4.24/esri/copyright.txt for details.
4
+ */
5
+ import"../../../../chunks/vec4.js";import"../../../../chunks/vec4f64.js";import"../core/shaderModules/Float4Uniform.js";import"../core/shaderModules/interfaces.js";import"../core/shaderModules/ShaderBuilder.js";import"../core/shaderModules/Texture2DUniform.js";import"../core/shaderTechnique/BindType.js";import"../lib/VertexAttribute.js";export{b as build}from"../../../../chunks/HighlightApply.glsl.js";
@@ -0,0 +1,5 @@
1
+ /*
2
+ All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
+ See https://js.arcgis.com/4.24/esri/copyright.txt for details.
4
+ */
5
+ import{ReloadableShaderModule as e}from"../core/shaderTechnique/ReloadableShaderModule.js";import{ShaderTechnique as r}from"../core/shaderTechnique/ShaderTechnique.js";import{Default3D as i}from"../lib/DefaultVertexAttributeLocations.js";import{Program as t}from"../lib/Program.js";import{H as o}from"../../../../chunks/HighlightApply.glsl.js";import{BlendFactor as l}from"../../../webgl/enums.js";import{makePipelineState as s,separateBlendingParams as m,defaultColorWriteParams as n}from"../../../webgl/renderState.js";class a extends r{initializeProgram(e){const r=a.shader.get().build();return new t(e.rctx,r,i)}initializePipeline(){return s({blending:m(l.SRC_ALPHA,l.ONE,l.ONE_MINUS_SRC_ALPHA,l.ONE_MINUS_SRC_ALPHA),colorWrite:n})}}a.shader=new e(o,(()=>import("./HighlightApply.glsl.js")));export{a as HighlightApplyTechnique};
@@ -0,0 +1,5 @@
1
+ /*
2
+ All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
+ See https://js.arcgis.com/4.24/esri/copyright.txt for details.
4
+ */
5
+ import"../../../../chunks/vec2f64.js";import"../core/shaderModules/Float2Uniform.js";import"../core/shaderModules/interfaces.js";import"../core/shaderModules/ShaderBuilder.js";import"../core/shaderModules/Texture2DUniform.js";import"../core/shaderTechnique/BindType.js";import"../lib/VertexAttribute.js";export{H as HighlightBlurDrawParameters,b as build}from"../../../../chunks/HighlightBlur.glsl.js";
@@ -0,0 +1,5 @@
1
+ /*
2
+ All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
+ See https://js.arcgis.com/4.24/esri/copyright.txt for details.
4
+ */
5
+ import{ReloadableShaderModule as r}from"../core/shaderTechnique/ReloadableShaderModule.js";import{ShaderTechnique as e}from"../core/shaderTechnique/ShaderTechnique.js";import{Default3D as i}from"../lib/DefaultVertexAttributeLocations.js";import{Program as t}from"../lib/Program.js";import{a as o}from"../../../../chunks/HighlightBlur.glsl.js";import{makePipelineState as l,defaultColorWriteParams as s}from"../../../webgl/renderState.js";class a extends e{initializeProgram(r){const e=a.shader.get().build();return new t(r.rctx,e,i)}initializePipeline(){return l({colorWrite:s})}}a.shader=new r(o,(()=>import("./HighlightBlur.glsl.js")));export{a as HighlightBlurTechnique};
@@ -0,0 +1,5 @@
1
+ /*
2
+ All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
+ See https://js.arcgis.com/4.24/esri/copyright.txt for details.
4
+ */
5
+ import"../../../../chunks/vec2f64.js";import"../core/shaderModules/Float2Uniform.js";import"../core/shaderModules/interfaces.js";import"../core/shaderModules/ShaderBuilder.js";import"../core/shaderModules/Texture2DUniform.js";import"../core/shaderTechnique/BindType.js";import"../lib/VertexAttribute.js";export{H as HighlightDownsampleDrawParameters,b as build}from"../../../../chunks/HighlightDownsample.glsl.js";
@@ -0,0 +1,5 @@
1
+ /*
2
+ All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
+ See https://js.arcgis.com/4.24/esri/copyright.txt for details.
4
+ */
5
+ import{ReloadableShaderModule as e}from"../core/shaderTechnique/ReloadableShaderModule.js";import{ShaderTechnique as r}from"../core/shaderTechnique/ShaderTechnique.js";import{Default3D as i}from"../lib/DefaultVertexAttributeLocations.js";import{Program as o}from"../lib/Program.js";import{a as t}from"../../../../chunks/HighlightDownsample.glsl.js";import{makePipelineState as s,defaultColorWriteParams as l}from"../../../webgl/renderState.js";class a extends r{initializeProgram(e){const r=a.shader.get().build();return new o(e.rctx,r,i)}initializePipeline(){return s({colorWrite:l})}}a.shader=new e(t,(()=>import("./HighlightDownsample.glsl.js")));export{a as HighlightDownsampleTechnique};
@@ -0,0 +1,4 @@
1
+ /*
2
+ All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
+ See https://js.arcgis.com/4.24/esri/copyright.txt for details.
4
+ */
@@ -0,0 +1,5 @@
1
+ /*
2
+ All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
+ See https://js.arcgis.com/4.24/esri/copyright.txt for details.
4
+ */
5
+ import{f as s}from"../../../../chunks/vec4f32.js";import{NoParameters as o}from"../core/shaderModules/interfaces.js";class t extends o{constructor(){super(...arguments),this.color=s(1,0,1,1),this.haloColor=s(1,0,1,1),this.haloOpacity=1,this.haloOpacityOccluded=.25,this.fillOpacity=.2,this.fillOpacityOccluded=.05,this.shadowColor=s(1,0,1,1),this.shadowOpacity=.15,this.occludedShadowOpacity=.075}}export{t as HighlightPassParameters};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.24/esri/copyright.txt for details.
4
4
  */
5
- import"../core/shaderLibrary/ShaderOutputOptions.js";import"../core/shaderLibrary/Slice.glsl.js";import"../core/shaderLibrary/Transform.glsl.js";import"../core/shaderLibrary/shading/MultipassTerrainTest.glsl.js";import"../core/shaderLibrary/util/AlphaDiscard.glsl.js";import"../core/shaderLibrary/util/ColorConversion.glsl.js";import"../core/shaderLibrary/util/View.glsl.js";import"../core/shaderModules/Float2Uniform.js";import"../core/shaderModules/FloatUniform.js";import"../core/shaderModules/interfaces.js";import"../core/shaderModules/ShaderBuilder.js";import"../core/shaderModules/Texture2DUniform.js";import"../lib/basicInterfaces.js";import"../lib/VertexAttribute.js";export{b as build}from"../../../../chunks/ImageMaterial.glsl.js";
5
+ import"../core/shaderLibrary/ShaderOutputOptions.js";import"../core/shaderLibrary/Slice.glsl.js";import"../core/shaderLibrary/Transform.glsl.js";import"../core/shaderLibrary/shading/MultipassTerrainTest.glsl.js";import"../core/shaderLibrary/util/AlphaDiscard.glsl.js";import"../core/shaderLibrary/util/ColorConversion.glsl.js";import"../core/shaderLibrary/util/View.glsl.js";import"../core/shaderModules/Float2Uniform.js";import"../core/shaderModules/FloatUniform.js";import"../core/shaderModules/interfaces.js";import"../core/shaderModules/ShaderBuilder.js";import"../core/shaderModules/Texture2DUniform.js";import"../core/shaderTechnique/BindType.js";import"../lib/basicInterfaces.js";import"../lib/VertexAttribute.js";export{b as build}from"../../../../chunks/ImageMaterial.glsl.js";
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.24/esri/copyright.txt for details.
4
4
  */
5
- import{_ as e}from"../../../../chunks/tslib.es6.js";import{ShaderOutput as t}from"../core/shaderLibrary/ShaderOutputOptions.js";import{ReloadableShaderModule as r}from"../core/shaderTechnique/ReloadableShaderModule.js";import{ShaderTechnique as i}from"../core/shaderTechnique/ShaderTechnique.js";import{parameter as o}from"../core/shaderTechnique/ShaderTechniqueConfiguration.js";import{CullFaceOptions as s,TransparencyPassType as a}from"../lib/basicInterfaces.js";import{Default3D as n}from"../lib/DefaultVertexAttributeLocations.js";import{bindTextureMaterialPass as p,bindTextureMaterialScale as l}from"../lib/GLTextureMaterial.js";import{oitBlending as c,oitDepthTest as u,oitDepthWrite as h,getOITPolygonOffset as d}from"../lib/OrderIndependentTransparency.js";import{Program as m}from"../lib/Program.js";import{stencilWriteMaskOn as f,stencilToolMaskBaseParams as g,stencilBaseAllZerosParams as b}from"../lib/StencilUtils.js";import{DefaultTechniqueConfiguration as y}from"../materials/DefaultTechniqueConfiguration.js";import{I as T}from"../../../../chunks/ImageMaterial.glsl.js";import{BlendFactor as P}from"../../../webgl/enums.js";import{simpleBlendingParams as O,makePipelineState as S,cullingParams as j,defaultDepthWriteParams as v,defaultColorWriteParams as N}from"../../../webgl/renderState.js";class w extends i{initializeProgram(e){const t=w.shader.get().build(this.configuration);return new m(e.rctx,t,n)}bindPass(e,t){this.program.bindPass(e,t),this.program.setUniform1f("opacity",e.opacity),p(this.program,e),l(this.program,e)}bindDraw(e,t){this.program.bindDraw(e,t),this.program.rebindTextures()}_setPipelineState(e,r){const i=this.configuration,o=e===a.NONE,s=e===a.FrontFace;return S({blending:i.output!==t.Color&&i.output!==t.Alpha||!i.transparent?null:o?_:c(e),culling:j(i.cullFace),depthTest:{func:u(e)},depthWrite:o?i.writeDepth&&v:h(e),colorWrite:N,stencilWrite:i.hasOccludees?f:null,stencilTest:i.hasOccludees?r?g:b:null,polygonOffset:o||s?null:d(i.enableOffset)})}initializePipeline(){return this._occludeePipelineState=this._setPipelineState(this.configuration.transparencyPassType,!0),this._setPipelineState(this.configuration.transparencyPassType,!1)}getPipelineState(e,t){return t?this._occludeePipelineState:super.getPipelineState(e,t)}}w.shader=new r(T,(()=>import("./ImageMaterial.glsl.js")));const _=O(P.ONE,P.ONE_MINUS_SRC_ALPHA);class C extends y{constructor(){super(...arguments),this.output=t.Color,this.cullFace=s.None,this.hasSlicePlane=!1,this.transparent=!1,this.enableOffset=!0,this.writeDepth=!0,this.hasOccludees=!1,this.transparencyPassType=a.NONE,this.hasMultipassTerrain=!1,this.cullAboveGround=!1}}e([o({count:t.COUNT})],C.prototype,"output",void 0),e([o({count:s.COUNT})],C.prototype,"cullFace",void 0),e([o()],C.prototype,"hasSlicePlane",void 0),e([o()],C.prototype,"transparent",void 0),e([o()],C.prototype,"enableOffset",void 0),e([o()],C.prototype,"writeDepth",void 0),e([o()],C.prototype,"hasOccludees",void 0),e([o({count:a.COUNT})],C.prototype,"transparencyPassType",void 0),e([o()],C.prototype,"hasMultipassTerrain",void 0),e([o()],C.prototype,"cullAboveGround",void 0);export{w as ImageMaterialTechnique,C as ImageMaterialTechniqueConfiguration};
5
+ import{_ as e}from"../../../../chunks/tslib.es6.js";import{ShaderOutput as t}from"../core/shaderLibrary/ShaderOutputOptions.js";import{ReloadableShaderModule as r}from"../core/shaderTechnique/ReloadableShaderModule.js";import{ShaderTechnique as i}from"../core/shaderTechnique/ShaderTechnique.js";import{parameter as s}from"../core/shaderTechnique/ShaderTechniqueConfiguration.js";import{CullFaceOptions as o,TransparencyPassType as a}from"../lib/basicInterfaces.js";import{Default3D as n}from"../lib/DefaultVertexAttributeLocations.js";import{bindTextureMaterialPass as l,bindTextureMaterialScale as p}from"../lib/GLTextureMaterial.js";import{oitBlending as c,oitDepthTest as u,oitDepthWrite as h,getOITPolygonOffset as d}from"../lib/OrderIndependentTransparency.js";import{Program as m}from"../lib/Program.js";import{stencilWriteMaskOn as f,stencilToolMaskBaseParams as b,stencilBaseAllZerosParams as g}from"../lib/StencilUtils.js";import{DefaultTechniqueConfiguration as y}from"../materials/DefaultTechniqueConfiguration.js";import{I as T}from"../../../../chunks/ImageMaterial.glsl.js";import{BlendFactor as P}from"../../../webgl/enums.js";import{simpleBlendingParams as O,makePipelineState as S,cullingParams as j,defaultDepthWriteParams as v,defaultColorWriteParams as N}from"../../../webgl/renderState.js";class w extends i{initializeProgram(e){const t=w.shader.get().build(this.configuration);return new m(e.rctx,t,n)}bindPass(e,t){this.program.bindPass(e,t),l(this.program,e),p(this.program,e)}bindDraw(e,t){this.program.bindDraw(e,t),this.program.rebindTextures()}_setPipelineState(e,r){const i=this.configuration,s=e===a.NONE,o=e===a.FrontFace;return S({blending:i.output!==t.Color&&i.output!==t.Alpha||!i.transparent?null:s?_:c(e),culling:j(i.cullFace),depthTest:{func:u(e)},depthWrite:s?i.writeDepth&&v:h(e),colorWrite:N,stencilWrite:i.hasOccludees?f:null,stencilTest:i.hasOccludees?r?b:g:null,polygonOffset:s||o?null:d(i.enableOffset)})}initializePipeline(){return this._occludeePipelineState=this._setPipelineState(this.configuration.transparencyPassType,!0),this._setPipelineState(this.configuration.transparencyPassType,!1)}getPipelineState(e,t){return t?this._occludeePipelineState:super.getPipelineState(e,t)}}w.shader=new r(T,(()=>import("./ImageMaterial.glsl.js")));const _=O(P.ONE,P.ONE_MINUS_SRC_ALPHA);class C extends y{constructor(){super(...arguments),this.output=t.Color,this.cullFace=o.None,this.hasSlicePlane=!1,this.transparent=!1,this.enableOffset=!0,this.writeDepth=!0,this.hasOccludees=!1,this.transparencyPassType=a.NONE,this.hasMultipassTerrain=!1,this.cullAboveGround=!1}}e([s({count:t.COUNT})],C.prototype,"output",void 0),e([s({count:o.COUNT})],C.prototype,"cullFace",void 0),e([s()],C.prototype,"hasSlicePlane",void 0),e([s()],C.prototype,"transparent",void 0),e([s()],C.prototype,"enableOffset",void 0),e([s()],C.prototype,"writeDepth",void 0),e([s()],C.prototype,"hasOccludees",void 0),e([s({count:a.COUNT})],C.prototype,"transparencyPassType",void 0),e([s()],C.prototype,"hasMultipassTerrain",void 0),e([s()],C.prototype,"cullAboveGround",void 0);export{w as ImageMaterialTechnique,C as ImageMaterialTechniqueConfiguration};