@arcgis/core 5.0.0-next.87 → 5.0.0-next.89

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 (238) hide show
  1. package/Map.d.ts +4 -0
  2. package/WebLinkChart.d.ts +6 -3
  3. package/analysis/ShadowCastAnalysis.d.ts +1 -0
  4. package/assets/esri/core/t9n/Units_ar.json +1 -1
  5. package/assets/esri/core/t9n/Units_bg.json +1 -1
  6. package/assets/esri/core/t9n/Units_bs.json +1 -1
  7. package/assets/esri/core/t9n/Units_ca.json +1 -1
  8. package/assets/esri/core/t9n/Units_cs.json +1 -1
  9. package/assets/esri/core/t9n/Units_da.json +1 -1
  10. package/assets/esri/core/t9n/Units_de.json +1 -1
  11. package/assets/esri/core/t9n/Units_el.json +1 -1
  12. package/assets/esri/core/t9n/Units_en.json +1 -1
  13. package/assets/esri/core/t9n/Units_es.json +1 -1
  14. package/assets/esri/core/t9n/Units_et.json +1 -1
  15. package/assets/esri/core/t9n/Units_fi.json +1 -1
  16. package/assets/esri/core/t9n/Units_fr.json +1 -1
  17. package/assets/esri/core/t9n/Units_he.json +1 -1
  18. package/assets/esri/core/t9n/Units_hr.json +1 -1
  19. package/assets/esri/core/t9n/Units_hu.json +1 -1
  20. package/assets/esri/core/t9n/Units_id.json +1 -1
  21. package/assets/esri/core/t9n/Units_it.json +1 -1
  22. package/assets/esri/core/t9n/Units_ja.json +1 -1
  23. package/assets/esri/core/t9n/Units_ko.json +1 -1
  24. package/assets/esri/core/t9n/Units_lt.json +1 -1
  25. package/assets/esri/core/t9n/Units_lv.json +1 -1
  26. package/assets/esri/core/t9n/Units_nl.json +1 -1
  27. package/assets/esri/core/t9n/Units_no.json +1 -1
  28. package/assets/esri/core/t9n/Units_pl.json +1 -1
  29. package/assets/esri/core/t9n/Units_pt-BR.json +1 -1
  30. package/assets/esri/core/t9n/Units_pt-PT.json +1 -1
  31. package/assets/esri/core/t9n/Units_ro.json +1 -1
  32. package/assets/esri/core/t9n/Units_ru.json +1 -1
  33. package/assets/esri/core/t9n/Units_sk.json +1 -1
  34. package/assets/esri/core/t9n/Units_sl.json +1 -1
  35. package/assets/esri/core/t9n/Units_sr.json +1 -1
  36. package/assets/esri/core/t9n/Units_sv.json +1 -1
  37. package/assets/esri/core/t9n/Units_th.json +1 -1
  38. package/assets/esri/core/t9n/Units_tr.json +1 -1
  39. package/assets/esri/core/t9n/Units_uk.json +1 -1
  40. package/assets/esri/core/t9n/Units_vi.json +1 -1
  41. package/assets/esri/core/t9n/Units_zh-CN.json +1 -1
  42. package/assets/esri/core/t9n/Units_zh-HK.json +1 -1
  43. package/assets/esri/core/t9n/Units_zh-TW.json +1 -1
  44. package/assets/esri/core/workers/RemoteClient.js +1 -1
  45. package/assets/esri/core/workers/chunks/{1facc1b45345a095b9a7.js → 149c4181eaea32e9ac15.js} +1 -1
  46. package/assets/esri/core/workers/chunks/{5734aefbce8b6425630c.js → 63b46983155b1672e07a.js} +1 -1
  47. package/assets/esri/core/workers/chunks/731cab5887c05f221279.js +1 -0
  48. package/assets/esri/core/workers/chunks/779fe8ccc4041f0b65a0.js +1 -0
  49. package/assets/esri/core/workers/chunks/{746190bb70aa78ba0bfc.js → 8936f9398414be26b83f.js} +4 -4
  50. package/assets/esri/core/workers/chunks/{8cb13b3776f07536c79f.js → a0d459bdb91ee892d4b6.js} +1 -1
  51. package/assets/esri/core/workers/chunks/c267e57eb7f779115aba.js +1 -0
  52. package/assets/esri/core/workers/chunks/cb6083f7294c8de297e1.js +1 -0
  53. package/assets/esri/core/workers/chunks/{f9bc4edfdb1590be2d92.js → cb6c9469d7c16727cd12.js} +1 -1
  54. package/assets/esri/core/workers/chunks/{3b5f24bb824c95996308.js → feba6c9ae162a0a8ea3a.js} +1 -1
  55. package/assets/esri/libs/lyr3d/lyr3DWorker.wasm +0 -0
  56. package/chunks/{TextureOnly.glsl.js → Texture.glsl.js} +2 -2
  57. package/chunks/{WaterSurface.glsl.js → Water.glsl.js} +6 -6
  58. package/config.js +1 -1
  59. package/core/arrayUtils.js +1 -1
  60. package/effects/FocusAreas.d.ts +1 -0
  61. package/form/FormTemplate.js +1 -1
  62. package/geometry/operators/geodesicBufferOperator.d.ts +1 -0
  63. package/geometry/operators/geodesicProximityOperator.d.ts +1 -0
  64. package/geometry/operators/geodeticAreaOperator.d.ts +1 -0
  65. package/geometry/operators/geodeticDensifyOperator.d.ts +1 -0
  66. package/geometry/operators/geodeticDistanceOperator.d.ts +1 -0
  67. package/geometry/operators/geodeticLengthOperator.d.ts +1 -0
  68. package/geometry/operators/geodeticUtilsOperator.d.ts +1 -0
  69. package/geometry/operators/shapePreservingProjectOperator.d.ts +1 -0
  70. package/geometry/operators/support/geographicTransformationUtils.d.ts +1 -0
  71. package/interfaces.d.ts +2 -2
  72. package/kernel.js +1 -1
  73. package/layers/CatalogLayer.d.ts +1 -0
  74. package/layers/FeatureLayer.d.ts +6 -0
  75. package/layers/GeoJSONLayer.d.ts +1 -0
  76. package/layers/Layer.d.ts +1 -0
  77. package/layers/LinkChartLayer.d.ts +2 -2
  78. package/layers/MediaLayer.d.ts +1 -0
  79. package/layers/OGCFeatureLayer.d.ts +1 -0
  80. package/layers/ParquetLayer.d.ts +6 -0
  81. package/layers/SubtypeGroupLayer.d.ts +1 -0
  82. package/layers/WFSLayer.d.ts +1 -0
  83. package/layers/catalog/CatalogFootprintLayer.d.ts +1 -0
  84. package/layers/mixins/BlendLayer.d.ts +1 -0
  85. package/layers/mixins/FeatureEffectLayer.d.ts +2 -0
  86. package/layers/mixins/ScaleRangeLayer.d.ts +0 -42
  87. package/layers/raster/datasets/RawBlockCache.js +1 -1
  88. package/layers/raster/functions/SpectralConversionFunction.js +1 -1
  89. package/layers/support/FeatureFilter.d.ts +4 -0
  90. package/layers/support/parquetUtils.d.ts +44 -1
  91. package/layers/support/vectorTileLayerLoader.js +1 -1
  92. package/layers/support/wmsUtils.js +1 -1
  93. package/networks/CircuitManager.d.ts +6 -5
  94. package/networks/CircuitManager.js +1 -1
  95. package/networks/Network.d.ts +1 -0
  96. package/networks/UtilityNetwork.js +1 -1
  97. package/networks/support/Circuit.d.ts +2 -4
  98. package/networks/support/CircuitLocation.d.ts +1 -7
  99. package/networks/support/CircuitLocation.js +1 -1
  100. package/networks/support/CircuitPathConnectivityElement.js +1 -1
  101. package/networks/support/CircuitSection.d.ts +2 -4
  102. package/networks/support/Subcircuit.d.ts +2 -2
  103. package/package.json +4 -4
  104. package/renderers/FlowRenderer.d.ts +1 -0
  105. package/renderers/support/colorRampUtils.js +1 -1
  106. package/rest/featureService/types.d.ts +2 -2
  107. package/rest/knowledgeGraph/GraphSearch.d.ts +0 -1
  108. package/rest/knowledgeGraph/GraphSearchStreaming.d.ts +0 -1
  109. package/rest/networks/circuits/support/QueryCircuitsParameters.js +1 -1
  110. package/rest/networks/circuits/support/VerifyCircuitsParameters.d.ts +30 -0
  111. package/rest/networks/circuits/support/VerifyCircuitsParameters.js +1 -1
  112. package/rest/networks/circuits/verifyCircuits.js +1 -1
  113. package/rest/networks/support/Association.js +1 -1
  114. package/rest/networks/support/NetworkElement.d.ts +2 -1
  115. package/rest/networks/support/TelecomNetworkElement.js +1 -1
  116. package/rest/networks/support/TraceLocation.d.ts +1 -1
  117. package/rest/query.d.ts +4 -0
  118. package/rest/support/BinParametersBase.d.ts +9 -28
  119. package/rest/support/DateBinParameters.d.ts +0 -17
  120. package/rest/support/TopFeaturesQuery.d.ts +1 -0
  121. package/support/revision.js +1 -1
  122. package/symbols/CIMSymbol.d.ts +1 -0
  123. package/symbols/LineSymbolMarker.d.ts +2 -2
  124. package/symbols/SimpleFillSymbol.d.ts +2 -1
  125. package/symbols/SimpleLineSymbol.d.ts +4 -4
  126. package/symbols/support/cimSymbolUtils.d.ts +2 -0
  127. package/symbols/types.d.ts +140 -28
  128. package/views/2d/constraints/ZoomConstraint.js +1 -1
  129. package/views/2d/engine/imagery/RasterBitmap.js +1 -1
  130. package/views/2d/engine/webgl/shaderGraph/techniques/raster/RasterProcessorTechnique.js +1 -1
  131. package/views/2d/engine/webgl/shaderGraph/techniques/raster/processor/FocalStatisticsTechnique.js +1 -1
  132. package/views/2d/engine/webgl/shaderGraph/techniques/raster/processor/SpectralConversionTechnique.js +5 -0
  133. package/views/2d/engine/webgl/shaderGraph/techniques/raster/processor/StretchTechnique.js +1 -1
  134. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/raster/processor/SpectralConversionShader.js +5 -0
  135. package/views/2d/engine/webgl/shaders/sources/shaderRepository.js +1 -1
  136. package/views/2d/types.d.ts +6 -1
  137. package/views/3d/analysis/AreaMeasurement/support/AreaMeasurementVisualization.js +1 -1
  138. package/views/3d/analysis/AreaMeasurement/support/MeasurementData.js +1 -1
  139. package/views/3d/analysis/VolumeMeasurement/VolumeMeasurementCutFillController.js +1 -1
  140. package/views/3d/environment/EnvironmentRenderer.js +1 -1
  141. package/views/3d/interactive/visualElements/LaserlineVisualElement.js +1 -1
  142. package/views/3d/layers/I3SMeshViewLabeler.js +1 -1
  143. package/views/3d/layers/SceneLayerWorker.js +1 -1
  144. package/views/3d/layers/i3s/I3SMeshViewFilter.js +1 -1
  145. package/views/3d/state/ViewState.js +1 -1
  146. package/views/3d/support/gaussianSplatting/GaussianSplatFadeHelper.js +1 -1
  147. package/views/3d/terrain/BlendLayers.glsl.js +5 -0
  148. package/views/3d/terrain/BlendLayersTechnique.js +1 -1
  149. package/views/3d/terrain/OverlayRenderer.js +1 -1
  150. package/views/3d/terrain/RasterColorizer.glsl.js +5 -0
  151. package/views/3d/terrain/RasterColorizerTechnique.js +1 -1
  152. package/views/3d/webgl-engine/core/shaderLibrary/Slice.glsl.js +3 -3
  153. package/views/3d/webgl-engine/core/shaderLibrary/shading/{Water.glsl.js → WaterColor.glsl.js} +2 -2
  154. package/views/3d/webgl-engine/core/shaderLibrary/terrain/Overlay.glsl.js +2 -2
  155. package/views/3d/webgl-engine/effects/highlight/Highlight.js +1 -1
  156. package/views/3d/webgl-engine/effects/highlight/HighlightApply.glsl.js +5 -0
  157. package/views/3d/webgl-engine/effects/highlight/HighlightApplyTechnique.js +1 -1
  158. package/views/3d/webgl-engine/effects/highlight/HighlightBlur.glsl.js +5 -0
  159. package/views/3d/webgl-engine/effects/highlight/HighlightBlurTechnique.js +1 -1
  160. package/views/3d/webgl-engine/effects/highlight/HighlightDownsample.glsl.js +5 -0
  161. package/views/3d/webgl-engine/effects/highlight/HighlightDownsampleTechnique.js +1 -1
  162. package/views/3d/webgl-engine/effects/highlight/HighlightToSingle.glsl.js +5 -0
  163. package/views/3d/webgl-engine/effects/highlight/HighlightToSingleTechnique.js +1 -1
  164. package/views/3d/webgl-engine/effects/highlight/ShadowHighlight.glsl.js +5 -0
  165. package/views/3d/webgl-engine/effects/highlight/ShadowHighlightTechnique.js +1 -1
  166. package/views/3d/webgl-engine/effects/laserlines/Laserline.glsl.js +5 -0
  167. package/views/3d/webgl-engine/effects/laserlines/LaserlinePath.glsl.js +5 -0
  168. package/views/3d/webgl-engine/effects/laserlines/LaserlinePathTechnique.js +1 -1
  169. package/views/3d/webgl-engine/effects/laserlines/LaserlineTechnique.js +1 -1
  170. package/views/3d/webgl-engine/effects/magnifier/Magnifier.glsl.js +5 -0
  171. package/views/3d/webgl-engine/effects/magnifier/Magnifier.js +1 -1
  172. package/views/3d/webgl-engine/effects/magnifier/MagnifierTechnique.js +1 -1
  173. package/views/3d/webgl-engine/effects/smaa/BlendWeights.glsl.js +5 -0
  174. package/views/3d/webgl-engine/effects/smaa/Blur.glsl.js +5 -0
  175. package/views/3d/webgl-engine/effects/smaa/EdgeDetect.glsl.js +5 -0
  176. package/views/3d/webgl-engine/effects/smaa/SMAABlendWeightsTechnique.js +1 -1
  177. package/views/3d/webgl-engine/effects/smaa/SMAABlurTechnique.js +1 -1
  178. package/views/3d/webgl-engine/effects/smaa/SMAAEdgeDetectTechnique.js +1 -1
  179. package/views/3d/webgl-engine/effects/ssao/SSAO.glsl.js +5 -0
  180. package/views/3d/webgl-engine/effects/ssao/SSAO.js +1 -1
  181. package/views/3d/webgl-engine/effects/ssao/SSAOBlur.glsl.js +5 -0
  182. package/views/3d/webgl-engine/effects/ssao/SSAOBlurTechnique.js +1 -1
  183. package/views/3d/webgl-engine/effects/ssao/SSAOTechnique.js +1 -1
  184. package/views/3d/webgl-engine/lib/GaussianSplatRenderNode.js +1 -1
  185. package/views/3d/webgl-engine/lib/GeometryUtil.js +1 -1
  186. package/views/3d/webgl-engine/lib/Renderer.js +1 -1
  187. package/views/3d/webgl-engine/lib/Texture.glsl.js +5 -0
  188. package/views/3d/webgl-engine/lib/TextureTechnique.js +1 -1
  189. package/views/3d/webgl-engine/lib/edgeRendering/EdgeShader.glsl.js +5 -0
  190. package/views/3d/webgl-engine/lib/edgeRendering/EdgeShaderTechnique.js +1 -1
  191. package/views/3d/webgl-engine/{shaders → materials}/Path.glsl.js +1 -1
  192. package/views/3d/webgl-engine/materials/PathTechnique.js +1 -1
  193. package/views/3d/webgl-engine/{shaders/WaterSurface.glsl.js → materials/Water.glsl.js} +1 -1
  194. package/views/3d/webgl-engine/materials/WaterTechnique.js +1 -1
  195. package/views/3d/webgl-engine/materials/renderers/MergedBuffer.js +1 -1
  196. package/views/3d/webgl.js +1 -1
  197. package/views/VideoView.d.ts +1 -0
  198. package/views/interactive/snapping/FeatureSnappingLayerSource.d.ts +1 -0
  199. package/views/layers/FeatureLayerViewMixin.d.ts +1 -0
  200. package/views/support/euclideanAreaMeasurementUtils.js +1 -1
  201. package/views/webgl/ShaderBuilder.js +1 -1
  202. package/widgets/Attachments.d.ts +1 -0
  203. package/widgets/BuildingExplorer.d.ts +1 -1
  204. package/widgets/Editor/AddAssociationWorkflow.js +1 -1
  205. package/widgets/ScaleRangeSlider/ScaleRanges.d.ts +43 -1
  206. package/widgets/Slider/SliderViewModel.js +1 -1
  207. package/widgets/Swipe.d.ts +1 -1
  208. package/widgets/TableList.d.ts +1 -0
  209. package/widgets/UtilityNetworkAssociations.d.ts +1 -0
  210. package/widgets/UtilityNetworkTrace/support/GeometryHandler.js +1 -1
  211. package/widgets/UtilityNetworkTrace.d.ts +1 -0
  212. package/widgets/UtilityNetworkValidateTopology.d.ts +1 -0
  213. package/widgets/support/SnappingControls.d.ts +1 -0
  214. package/widgets/support/UtilityNetworkAssociations/FeatureUtilityNetworkAssociationsViewModel.js +1 -1
  215. package/widgets/support/UtilityNetworkAssociations/utils/createAssociation.js +1 -1
  216. package/assets/esri/core/workers/chunks/165cf8031af160c99d70.js +0 -1
  217. package/assets/esri/core/workers/chunks/4f4bdf9f5323fa702e6c.js +0 -1
  218. package/assets/esri/core/workers/chunks/641450da2680ae09b8e7.js +0 -1
  219. package/assets/esri/core/workers/chunks/cb66a74448a6c0c20d5d.js +0 -1
  220. package/layers/graphics/sources/ParquetSource.d.ts +0 -45
  221. package/views/3d/webgl-engine/core/shaderLibrary/raster/RasterColorizer.glsl.js +0 -5
  222. package/views/3d/webgl-engine/core/shaderLibrary/util/BlendLayers.glsl.js +0 -5
  223. package/views/3d/webgl-engine/core/shaderLibrary/util/TextureOnly.glsl.js +0 -5
  224. package/views/3d/webgl-engine/shaders/BlendWeights.glsl.js +0 -5
  225. package/views/3d/webgl-engine/shaders/Blur.glsl.js +0 -5
  226. package/views/3d/webgl-engine/shaders/EdgeDetect.glsl.js +0 -5
  227. package/views/3d/webgl-engine/shaders/HighlightApply.glsl.js +0 -5
  228. package/views/3d/webgl-engine/shaders/HighlightBlur.glsl.js +0 -5
  229. package/views/3d/webgl-engine/shaders/HighlightDownsample.glsl.js +0 -5
  230. package/views/3d/webgl-engine/shaders/HighlightToSingle.glsl.js +0 -5
  231. package/views/3d/webgl-engine/shaders/LaserlinePath.glsl.js +0 -5
  232. package/views/3d/webgl-engine/shaders/Laserlines.glsl.js +0 -5
  233. package/views/3d/webgl-engine/shaders/Magnifier.glsl.js +0 -5
  234. package/views/3d/webgl-engine/shaders/SSAO.glsl.js +0 -5
  235. package/views/3d/webgl-engine/shaders/SSAOBlur.glsl.js +0 -5
  236. package/views/3d/webgl-engine/shaders/ShadowHighlight.glsl.js +0 -5
  237. package/views/3d/webgl-engine/shaders/sources/edgeRenderer/EdgeShader.glsl.js +0 -5
  238. /package/chunks/{Laserlines.glsl.js → Laserline.glsl.js} +0 -0
@@ -2,7 +2,7 @@
2
2
  All material copyright Esri, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/5.0/esri/copyright.txt for details.
4
4
  */
5
- import{__decorate as e}from"tslib";import has from"../../../../../core/has.js";import{translate as s}from"../../../../../core/libs/gl-matrix-2/math/mat4.js";import{create as i}from"../../../../../core/libs/gl-matrix-2/factories/mat4f64.js";import{add as a,transformMat4 as l,subtract as o,set as n}from"../../../../../core/libs/gl-matrix-2/math/vec3.js";import{ZEROS as c,create as r}from"../../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{InstancedDoubleConfiguration as t}from"./attributes/InstancedDoubleConfiguration.js";import{Float3DrawUniform as f}from"../shaderModules/Float3DrawUniform.js";import{Float3PassUniform as d}from"../shaderModules/Float3PassUniform.js";import{glsl as u}from"../shaderModules/glsl.js";import{parameter as p}from"../shaderTechnique/ShaderTechniqueConfiguration.js";import{NoParameters as m}from"../../../../webgl/NoParameters.js";class P extends t{constructor(){super(...arguments),this.hasSlicePlane=!1,this.hasSliceTranslatedView=!1}}e([p()],P.prototype,"hasSlicePlane",void 0);class b extends m{constructor(e){super(),this.slicePlaneLocalOrigin=e}}function v(e,s){g(e,s,new d("slicePlaneOrigin",(e,i)=>x(s,e,i)),new d("slicePlaneBasis1",(e,i)=>O(s,e,i,i.slicePlane?.basis1)),new d("slicePlaneBasis2",(e,i)=>O(s,e,i,i.slicePlane?.basis2)))}function h(e,s){g(e,s,new f("slicePlaneOrigin",(e,i)=>x(s,e,i)),new f("slicePlaneBasis1",(e,i)=>O(s,e,i,i.slicePlane?.basis1)),new f("slicePlaneBasis2",(e,i)=>O(s,e,i,i.slicePlane?.basis2)))}function w(e,s){B(e,s,new f("slicePlaneOrigin",(e,i)=>x(s,e,i)),new f("slicePlaneBasis1",(e,i)=>O(s,e,i,i.slicePlane?.basis1)),new f("slicePlaneBasis2",(e,i)=>O(s,e,i,i.slicePlane?.basis2)))}const S=u`struct SliceFactors {
5
+ import{__decorate as e}from"tslib";import{translate as s}from"../../../../../core/libs/gl-matrix-2/math/mat4.js";import{create as i}from"../../../../../core/libs/gl-matrix-2/factories/mat4f64.js";import{add as a,transformMat4 as l,subtract as o,set as c}from"../../../../../core/libs/gl-matrix-2/math/vec3.js";import{ZEROS as n,create as r}from"../../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{InstancedDoubleConfiguration as t}from"./attributes/InstancedDoubleConfiguration.js";import{Float3DrawUniform as f}from"../shaderModules/Float3DrawUniform.js";import{Float3PassUniform as d}from"../shaderModules/Float3PassUniform.js";import{glsl as u}from"../shaderModules/glsl.js";import{parameter as p}from"../shaderTechnique/ShaderTechniqueConfiguration.js";import{NoParameters as P}from"../../../../webgl/NoParameters.js";class m extends t{constructor(){super(...arguments),this.hasSlicePlane=!1,this.hasSliceTranslatedView=!1}}e([p()],m.prototype,"hasSlicePlane",void 0);class b extends P{constructor(e){super(),this.slicePlaneLocalOrigin=e}}function v(e,s){g(e,s,new d("slicePlaneOrigin",(e,i)=>x(s,e,i)),new d("slicePlaneBasis1",(e,i)=>O(s,e,i,i.slicePlane?.basis1)),new d("slicePlaneBasis2",(e,i)=>O(s,e,i,i.slicePlane?.basis2)))}function h(e,s){g(e,s,new f("slicePlaneOrigin",(e,i)=>x(s,e,i)),new f("slicePlaneBasis1",(e,i)=>O(s,e,i,i.slicePlane?.basis1)),new f("slicePlaneBasis2",(e,i)=>O(s,e,i,i.slicePlane?.basis2)))}function w(e,s){B(e,s,new f("slicePlaneOrigin",(e,i)=>x(s,e,i)),new f("slicePlaneBasis1",(e,i)=>O(s,e,i,i.slicePlane?.basis1)),new f("slicePlaneBasis2",(e,i)=>O(s,e,i,i.slicePlane?.basis2)))}const S=u`struct SliceFactors {
6
6
  float front;
7
7
  float side0;
8
8
  float side1;
@@ -37,5 +37,5 @@ return dot(slicePlaneBasis1, slicePlaneBasis1) != 0.0;
37
37
  }
38
38
  bool rejectBySlice(vec3 pos) {
39
39
  return sliceEnabled() && sliceByFactors(calculateSliceFactors(pos));
40
- }`;function B(e,s,...i){s.hasSlicePlane?(e.uniforms.add(...i),e.code.add(S)):e.code.add("bool rejectBySlice(vec3 pos) { return false; }")}function g(e,s,...i){e.constants.add("groundSliceOpacity","float",has("enable-feature:oit-ground")?.25:.2),B(e,s,...i),s.hasSlicePlane?e.code.add("\n void discardBySlice(vec3 pos) {\n if (rejectBySlice(pos)) {\n discard;\n }\n }\n\n vec4 applySliceOutline(vec4 color, vec3 pos) {\n SliceFactors factors = calculateSliceFactors(pos);\n\n factors.front /= 2.0 * fwidth(factors.front);\n factors.side0 /= 2.0 * fwidth(factors.side0);\n factors.side1 /= 2.0 * fwidth(factors.side1);\n factors.side2 /= 2.0 * fwidth(factors.side2);\n factors.side3 /= 2.0 * fwidth(factors.side3);\n\n // return after calling fwidth, to avoid aliasing caused by discontinuities in the input to fwidth\n if (sliceByFactors(factors)) {\n return color;\n }\n\n float outlineFactor = (1.0 - step(0.5, factors.front))\n * (1.0 - step(0.5, factors.side0))\n * (1.0 - step(0.5, factors.side1))\n * (1.0 - step(0.5, factors.side2))\n * (1.0 - step(0.5, factors.side3));\n\n return mix(color, vec4(vec3(0.0), color.a), outlineFactor * 0.3);\n }\n\n vec4 applySlice(vec4 color, vec3 pos) {\n return sliceEnabled() ? applySliceOutline(color, pos) : color;\n }\n "):e.code.add(u`void discardBySlice(vec3 pos) { }
41
- vec4 applySlice(vec4 color, vec3 pos) { return color; }`)}function y(e,s,i){return e.instancedDoublePrecision?n(D,i.camera.viewInverseTransposeMatrix[3],i.camera.viewInverseTransposeMatrix[7],i.camera.viewInverseTransposeMatrix[11]):s.slicePlaneLocalOrigin}function F(e,s){return null!=e?o(L,s.origin,e):s.origin}function j(e,i,a){return e.hasSliceTranslatedView?null!=i?s(T,a.camera.viewMatrix,i):a.camera.viewMatrix:null}function x(e,s,i){if(null==i.slicePlane)return c;const a=y(e,s,i),o=F(a,i.slicePlane),n=j(e,a,i);return null!=n?l(L,o,n):o}function O(e,s,i,n){if(null==n||null==i.slicePlane)return c;const r=y(e,s,i),t=F(r,i.slicePlane),f=j(e,r,i);return null!=f?(a(M,n,t),l(L,t,f),l(M,M,f),o(M,M,L)):n}const D=r(),L=r(),M=r(),T=i();export{w as RejectBySlice,P as SliceConfiguration,h as SliceDraw,v as SlicePass,b as SlicePlaneParameters};
40
+ }`;function B(e,s,...i){s.hasSlicePlane?(e.uniforms.add(...i),e.code.add(S)):e.code.add("bool rejectBySlice(vec3 pos) { return false; }")}function g(e,s,...i){e.constants.add("groundSliceOpacity","float",.2),B(e,s,...i),s.hasSlicePlane?e.code.add("\n void discardBySlice(vec3 pos) {\n if (rejectBySlice(pos)) {\n discard;\n }\n }\n\n vec4 applySliceOutline(vec4 color, vec3 pos) {\n SliceFactors factors = calculateSliceFactors(pos);\n\n factors.front /= 2.0 * fwidth(factors.front);\n factors.side0 /= 2.0 * fwidth(factors.side0);\n factors.side1 /= 2.0 * fwidth(factors.side1);\n factors.side2 /= 2.0 * fwidth(factors.side2);\n factors.side3 /= 2.0 * fwidth(factors.side3);\n\n // return after calling fwidth, to avoid aliasing caused by discontinuities in the input to fwidth\n if (sliceByFactors(factors)) {\n return color;\n }\n\n float outlineFactor = (1.0 - step(0.5, factors.front))\n * (1.0 - step(0.5, factors.side0))\n * (1.0 - step(0.5, factors.side1))\n * (1.0 - step(0.5, factors.side2))\n * (1.0 - step(0.5, factors.side3));\n\n return mix(color, vec4(vec3(0.0), color.a), outlineFactor * 0.3);\n }\n\n vec4 applySlice(vec4 color, vec3 pos) {\n return sliceEnabled() ? applySliceOutline(color, pos) : color;\n }\n "):e.code.add(u`void discardBySlice(vec3 pos) { }
41
+ vec4 applySlice(vec4 color, vec3 pos) { return color; }`)}function y(e,s,i){return e.instancedDoublePrecision?c(D,i.camera.viewInverseTransposeMatrix[3],i.camera.viewInverseTransposeMatrix[7],i.camera.viewInverseTransposeMatrix[11]):s.slicePlaneLocalOrigin}function F(e,s){return null!=e?o(L,s.origin,e):s.origin}function j(e,i,a){return e.hasSliceTranslatedView?null!=i?s(T,a.camera.viewMatrix,i):a.camera.viewMatrix:null}function x(e,s,i){if(null==i.slicePlane)return n;const a=y(e,s,i),o=F(a,i.slicePlane),c=j(e,a,i);return null!=c?l(L,o,c):o}function O(e,s,i,c){if(null==c||null==i.slicePlane)return n;const r=y(e,s,i),t=F(r,i.slicePlane),f=j(e,r,i);return null!=f?(a(M,c,t),l(L,t,f),l(M,M,f),o(M,M,L)):c}const D=r(),L=r(),M=r(),T=i();export{w as RejectBySlice,m as SliceConfiguration,h as SliceDraw,v as SlicePass,b as SlicePlaneParameters};
@@ -6,7 +6,7 @@ import{FoamColor as e}from"./FoamRendering.glsl.js";import{Gamma as o}from"./Gam
6
6
  vec3 getSkyGradientColor(in float cosTheta, in vec3 horizon, in vec3 zenit) {
7
7
  float exponent = pow((1.0 - cosTheta), fresnelSky[2]);
8
8
  return mix(zenit, horizon, exponent);
9
- }`),u.uniforms.add(new l("lightingSpecularStrength",e=>e.lighting.mainLight.specularStrength),new l("lightingEnvironmentStrength",e=>e.lighting.mainLight.environmentStrength)),u.code.add(d`vec3 getSeaColor(in vec3 n, in vec3 v, in vec3 l, vec3 color, in vec3 lightIntensity, in vec3 localUp, in float shadow, float foamIntensity, vec3 viewPosition, vec3 position) {
9
+ }`),u.uniforms.add(new l("lightingSpecularStrength",e=>e.lighting.mainLight.specularStrength),new l("lightingEnvironmentStrength",e=>e.lighting.mainLight.environmentStrength)),u.code.add(d`vec3 getWaterColor(in vec3 n, in vec3 v, in vec3 l, vec3 color, in vec3 lightIntensity, in vec3 localUp, in float shadow, float foamIntensity, vec3 viewPosition, vec3 position) {
10
10
  float reflectionHit = 0.0;
11
11
  float reflectionHitDiffused = 0.0;
12
12
  vec3 seaWaterColor = linearizeGamma(color);
@@ -66,4 +66,4 @@ vec3 waterRenderedColor = tonemapACES((1.0 - reflectionHitDiffused) * reflSky +
66
66
  reflSea * seaColorMod + specular + foam);`):u.code.add(d`vec3 waterRenderedColor = tonemapACES(reflSky + reflSea * waterSeaColorMod + specular + foam);`),v.cloudReflections?v.screenSpaceReflections?u.code.add(d`return waterRenderedColor * (1.0 - (1.0 - reflectionHit) * cloudsColor.a) + (1.0 - reflectionHit) * cloudsColor.xyz;
67
67
  }`):u.code.add(d`return waterRenderedColor * (1.0 - cloudsColor.a) + cloudsColor.xyz;
68
68
  }`):u.code.add(d`return waterRenderedColor;
69
- }`)}export{m as Water};
69
+ }`)}export{m as WaterColor};
@@ -2,7 +2,7 @@
2
2
  All material copyright Esri, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/5.0/esri/copyright.txt for details.
4
4
  */
5
- import{create as e}from"../../../../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{hasArea as o,width as r,height as t}from"../../../../../../geometry/support/aaBoundingRect.js";import{isColor as l}from"../ShaderOutput.js";import{addMainLightDirection as a,addMainLightIntensity as i}from"../shading/MainLighting.glsl.js";import{Water as c}from"../shading/Water.glsl.js";import{Float4DrawUniform as s}from"../../shaderModules/Float4DrawUniform.js";import{FloatPassUniform as n}from"../../shaderModules/FloatPassUniform.js";import{glsl as v}from"../../shaderModules/glsl.js";import{Texture2DPassUniform as d}from"../../shaderModules/Texture2DPassUniform.js";import{Texture2DUintPassUniform as u}from"../../shaderModules/Texture2DUintPassUniform.js";import{Uniform as x}from"../../../../../webgl/Uniform.js";function y(e,o){const{vertex:r,fragment:t}=e;r.uniforms.add(new s("overlayTexOffset",(e,r)=>h(o.spherical,e,r)),new s("overlayTexScale",(e,r)=>O(o.spherical,e,r))),t.uniforms.add(new s("overlayTexOffset",(e,r)=>h(o.spherical,e,r)),new s("overlayTexScale",(e,r)=>O(o.spherical,e,r))),t.constants.add("overlayOpacity","float",1),t.uniforms.add(new d("ovColorTex",(e,o)=>f(e,o))),g(e,o)}function f(e,o){return 0===e.identifier&&l(e.output)?e.occludedGround?o.overlay?.allSourcesOccluders?o.overlay?.getTexture(1):o.overlay?.getTexture(4):o.overlay?.getTexture(1):0===e.identifier&&9===e.output?o.overlay?.getTexture(5):2===e.identifier?o.overlay?.getTexture(2):null}function m(e,o){const{vertex:r,fragment:t}=e;r.uniforms.add(new V("overlayTexOffset"),new V("overlayTexScale")),t.uniforms.add(new n("overlayOpacity",e=>e.overlayOpacity)),8!==o.output&&t.uniforms.add(new d("ovColorTex",(e,o)=>o.overlay?.getTexture(e.overlayContent))),g(e,o)}function p(e,o){switch(e){case 0:return 10!==o.slot||o.overlay?.allSourcesOccluders?0:4;case 1:case 2:return 0;case 8:return 2;case 3:case 5:case 6:case 7:return null;case 9:return 5}return null}function g(e,o){const{hasWater:r,output:t}=o;r&&e.include(c,o);const{vertex:l,fragment:s,varyings:n}=e;n.add("vtcOverlay","vec4");const d=8===t;l.code.add(v`void setOverlayVTC(in vec2 uv) {
5
+ import{create as e}from"../../../../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{hasArea as o,width as r,height as t}from"../../../../../../geometry/support/aaBoundingRect.js";import{isColor as l}from"../ShaderOutput.js";import{addMainLightDirection as a,addMainLightIntensity as i}from"../shading/MainLighting.glsl.js";import{WaterColor as c}from"../shading/WaterColor.glsl.js";import{Float4DrawUniform as s}from"../../shaderModules/Float4DrawUniform.js";import{FloatPassUniform as n}from"../../shaderModules/FloatPassUniform.js";import{glsl as v}from"../../shaderModules/glsl.js";import{Texture2DPassUniform as d}from"../../shaderModules/Texture2DPassUniform.js";import{Texture2DUintPassUniform as u}from"../../shaderModules/Texture2DUintPassUniform.js";import{Uniform as x}from"../../../../../webgl/Uniform.js";function y(e,o){const{vertex:r,fragment:t}=e;r.uniforms.add(new s("overlayTexOffset",(e,r)=>h(o.spherical,e,r)),new s("overlayTexScale",(e,r)=>O(o.spherical,e,r))),t.uniforms.add(new s("overlayTexOffset",(e,r)=>h(o.spherical,e,r)),new s("overlayTexScale",(e,r)=>O(o.spherical,e,r))),t.constants.add("overlayOpacity","float",1),t.uniforms.add(new d("ovColorTex",(e,o)=>f(e,o))),g(e,o)}function f(e,o){return 0===e.identifier&&l(e.output)?e.occludedGround?o.overlay?.allSourcesOccluders?o.overlay?.getTexture(1):o.overlay?.getTexture(4):o.overlay?.getTexture(1):0===e.identifier&&9===e.output?o.overlay?.getTexture(5):2===e.identifier?o.overlay?.getTexture(2):null}function m(e,o){const{vertex:r,fragment:t}=e;r.uniforms.add(new V("overlayTexOffset"),new V("overlayTexScale")),t.uniforms.add(new n("overlayOpacity",e=>e.overlayOpacity)),8!==o.output&&t.uniforms.add(new d("ovColorTex",(e,o)=>o.overlay?.getTexture(e.overlayContent))),g(e,o)}function p(e,o){switch(e){case 0:return 10!==o.slot||o.overlay?.allSourcesOccluders?0:4;case 1:case 2:return 0;case 8:return 2;case 3:case 5:case 6:case 7:return null;case 9:return 5}return null}function g(e,o){const{hasWater:r,output:t}=o;r&&e.include(c,o);const{vertex:l,fragment:s,varyings:n}=e;n.add("vtcOverlay","vec4");const d=8===t;l.code.add(v`void setOverlayVTC(in vec2 uv) {
6
6
  vtcOverlay = vec4(uv, uv) * overlayTexScale + overlayTexOffset;
7
7
  }`),s.code.add(v`bool isValid(vec2 uv, vec2 dxdy) {
8
8
  return (uv.x >= 0.0 + dxdy.x) && (uv.x <= 1.0 - dxdy.x) && (uv.y >= 0.0 + dxdy.y) && (uv.y <= 1.0 - dxdy.y);
@@ -42,6 +42,6 @@ return mix(color1 * float(isValid1), color0, float(isValid0));
42
42
  float shadow, vec3 localUp, mat3 tbn, vec3 position, vec3 positionWorld) {
43
43
  vec3 n = normalize(tbn * (2.0 * maskInput.rgb - vec3(1.0)));
44
44
  vec3 v = vposEyeDir;
45
- vec3 final = getSeaColor(n, v, mainLightDirection, colorInput.rgb, mainLightIntensity, localUp, 1.0 - shadow, maskInput.w, position, positionWorld);
45
+ vec3 final = getWaterColor(n, v, mainLightDirection, colorInput.rgb, mainLightIntensity, localUp, 1.0 - shadow, maskInput.w, position, positionWorld);
46
46
  return vec4(final, colorInput.w);
47
47
  }`))}function C(e,o){return e.overlay?.overlays[o]?.extent}function h(e,l,a){const i=T,c=e&&!l.useENUForGlobalOverlayUV,s=c?0:l.toMapSpace[0],n=c?0:l.toMapSpace[1],v=(e,l)=>{const c=C(a,l);o(c)&&(i[e+0]=(s-c[0])/r(c),i[e+1]=(n-c[1])/t(c))};return v(0,0),v(2,1),i}function O(e,l,a){const i=T,c=e&&!l.useENUForGlobalOverlayUV,s=c?1:l.toMapSpace[2],n=c?1:l.toMapSpace[3],v=(e,l)=>{const c=C(a,l);o(c)&&(i[e+0]=s/r(c),i[e+1]=n/t(c))};return v(0,0),v(2,1),i}const T=e();class V extends x{constructor(e){super(e,"vec4")}}export{y as OverlayIM,m as OverlayTerrain,f as getIMColorTexture,p as getOverlayContentForOutputTerrain};
@@ -2,4 +2,4 @@
2
2
  All material copyright Esri, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/5.0/esri/copyright.txt for details.
4
4
  */
5
- import{__decorate as e}from"tslib";import"../../../../../core/has.js";import{releaseMaybe as t,disposeMaybe as i}from"../../../../../core/maybe.js";import{watch as r,initial as s}from"../../../../../core/reactiveUtils.js";import{property as o,subclass as h}from"../../../../../core/accessorSupport/decorators.js";import{set as n}from"../../../../../core/libs/gl-matrix-2/math/vec2.js";import{InternalRenderCategory as l}from"../../../webgl.js";import a from"../../../webgl/RenderNode.js";import{HighlightApplyTechnique as g}from"./HighlightApplyTechnique.js";import{HighlightBlurTechnique as c}from"./HighlightBlurTechnique.js";import{HighlightDownsampleTechnique as u}from"./HighlightDownsampleTechnique.js";import{HighlightPassParameters as p}from"./HighlightPassParameters.js";import{HighlightToSingleTechnique as m}from"./HighlightToSingleTechnique.js";import{NoVertex as d}from"../../lib/DefaultVertexBufferLayouts.js";import{VertexArrayObject as f}from"../../lib/VertexArrayObject.js";import{H as b}from"../../../../../chunks/HighlightBlur.glsl.js";import{H as w,g as x}from"../../../../../chunks/HighlightDownsample.glsl.js";import{BufferObject as T}from"../../../../webgl/BufferObject.js";import{PrimitiveType as _,DataType as v}from"../../../../webgl/enums.js";import C from"../../../../webgl/Texture.js";import{TextureDescriptor as H}from"../../../../webgl/TextureDescriptor.js";import{VertexBuffer as j}from"../../../../webgl/VertexBuffer.js";let q=class extends a{constructor(){super(...arguments),this.produces=l.HIGHLIGHTS,this.consumes={required:[l.HIGHLIGHTS,"highlights"]},this._downsampleDrawParameters=new w,this._passParameters=new p,this._highlightBlurDrawParameters=new b,this._grid=new P}initialize(){this.addHandles([r(()=>this._updateOptionsTexture(),()=>{},s)])}destroy(){this._grid.coverage=t(this._grid.coverage),this._grid.vao=i(this._grid.vao),this._passParameters.highlightOptionsTexture=t(this._passParameters.highlightOptionsTexture)}_updateOptionsTexture(){if(null==this._passParameters.highlightOptionsTexture){const e=new H(16,2);e.internalFormat=6408,e.samplingMode=9728,this._passParameters.highlightOptionsTexture=new C(this.renderingContext,e,null)}this._passParameters.highlightOptionsTexture.setData(O(this.view.state.highlights)),this.requestRender(1)}precompile(){this.techniques.precompile(u),this.techniques.precompile(m),this.techniques.precompile(c),this.techniques.precompile(g)}render(e){const t=e.find(({name:e})=>e===l.HIGHLIGHTS),{techniques:i,bindParameters:r}=this;if(!r.decorations)return t;if(!i.get(u).compiled)return this.requestRender(1),t;const s=e.find(({name:e})=>"highlights"===e).getTexture();return this._renderHighlightPostprocess(s,t),t}_prepareAndDownSample(e){this._gridUpdateResources(e);const t=this.techniques.get(u),i=this._gridComputeCoverage(t,e),{horizontalCellCount:r,verticalCellCount:s}=i,o=this._passParameters;return o.horizontalCellCount=r,o.verticalCellCount=s,o.coverageTexture=i.coverage?.getTexture(),i}_renderGrid(e){const t=e.verticalCellCount*e.horizontalCellCount;this.renderingContext.bindVAO(e.vao),this.renderingContext.drawElementsInstanced(_.TRIANGLES,6,v.UNSIGNED_BYTE,0,t)}_renderHighlightPostprocess(e,t){const{fboCache:i,techniques:r,bindParameters:s,_passParameters:o,renderingContext:h}=this,l=r.get(m),a=r.get(c),u=r.get(g);if(!u.compiled||!a.compiled||!l.compiled)return void this.requestRender(1);o.highlightTexture=e;const p=this._prepareAndDownSample(e),{width:d,height:f}=e.descriptor;o.highlightTexture=e;const{camera:b}=s,{fullWidth:w,fullHeight:x,pixelRatio:T,fullViewport:_}=b,v=Math.ceil(w/T),C=Math.ceil(x/T),{_highlightBlurDrawParameters:H}=this,j=this.view.stage.renderView.renderer,{highlights:q}=s;for(let g=0;g<q.length;++g){const{name:e}=q[g];if(!j.hasHighlight(e))continue;o.highlightLevel=g,h.setClearColor(0,0,0,0);const r=i.acquire(d,f,"single highlight",2);h.bindFramebuffer(r.fbo),h.setViewport(0,0,d,f),h.clear(16384),h.bindTechnique(l,s,o),this._renderGrid(p),H.blurInput=r.getTexture(),n(H.blurSize,1/v,0);const c=i.acquire(v,C,"single highlight blur",2);h.unbindTexture(c.fbo?.colorTexture),h.bindFramebuffer(c.fbo),h.setViewport(0,0,v,C),h.clear(16384),h.bindTechnique(a,s,o,H),this._renderGrid(p),r.release(),n(H.blurSize,0,1/C),o.highlightBlurTexture=c.getTexture(),h.bindFramebuffer(t.fbo),h.setViewport4fv(_),h.bindTechnique(u,s,o,H),this._renderGrid(p),c.release()}o.coverageTexture=o.highlightTexture=null}_gridUpdateResources(e){const t=this._grid,{width:i,height:r}=e.descriptor;if(t.horizontalCellCount=Math.ceil(i/x),t.verticalCellCount=Math.ceil(r/x),t.vao)return;const s=this.renderingContext,o=T.createIndex(s,35044,I);t.vao=new f(s,new j(s,d),o)}_gridComputeCoverage(e,t){const i=this.renderingContext,r=this._grid,s=t.descriptor,o=Math.ceil(s.width/x),h=Math.ceil(s.height/x);this._downsampleDrawParameters.input=t;const{highlights:n}=this.bindParameters;r.coverage?.release();const l=this.fboCache.acquire(o,h,"highlight coverage",n.length>G?3:1);return r.coverage=l,i.bindFramebuffer(l.fbo),i.bindTechnique(e,this.bindParameters,this._passParameters,this._downsampleDrawParameters),i.setViewport(0,0,o,h),i.screen.draw(),r}get test(){}};e([o()],q.prototype,"produces",void 0),e([o()],q.prototype,"consumes",void 0),q=e([h("esri.views.3d.webgl-engine.effects.highlight.Highlight")],q);class P{constructor(){this.coverage=null,this.vao=null,this.verticalCellCount=0,this.horizontalCellCount=0,this.viewportWidth=0,this.viewportHeight=0}}function O(e){const t=new Uint8Array(128);let i=0;for(const r of e){const e=4*i,s=4*i+64;++i;const{color:o}=r,h=r.haloColor??o;t[e+0]=o.r,t[e+1]=o.g,t[e+2]=o.b,t[e+3]=r.fillOpacity*o.a*255,t[s+0]=h.r,t[s+1]=h.g,t[s+2]=h.b,t[s+3]=r.haloOpacity*h.a*255}return t}let D=0;function y(e){let t=0;for(const r of e){const{name:e}=r;t+=e.length;const{color:i,fillOpacity:s,haloColor:o,haloOpacity:h}=r;t+=i.r+i.g+i.b+i.a+s,t+=o?o.r+o.g+o.b+o.a+h:0}const i=e.at(0);if(i){const{shadowOpacity:e,shadowDifference:r,shadowColor:s}=i;t+=e+r+s.r+s.g+s.b+s.a}return D+++(t>=0?0:1)}const I=new Uint8Array([0,1,2,2,1,3]);function S(e,t,i,r,s,o=0){const{highlights:h}=r,l=h.length>1?t.acquire(i.width,i.height,"highlight mix",h.length>G?3:1):null,{gl:a}=e;if(l){const t=e.getBoundFramebufferObject();e.bindFramebuffer(l.fbo),a.clearBufferuiv(a.COLOR,0,[0,0,0,0]),e.bindFramebuffer(t)}const g=l?.getTexture();r.highlightMixTexture=g,n(r.highlightMixOrigin,o,0),h.forEach((t,h)=>{if(h>0){const t=C.TEXTURE_UNIT_FOR_UPDATES;e.bindTexture(g,t),e.setActiveTexture(t),a.copyTexSubImage2D(3553,0,0,0,o,0,i.width,i.height),e.bindTexture(null,t)}e.clear(256),r.highlightLevel=h,s()}),r.highlightLevel=null,r.highlightMixTexture=null,l?.release()}const G=4;export{q as Highlight,G as maxHighlightsPerChannel,S as renderHighlightBuffer,y as trackHighlightOptions};
5
+ import{__decorate as e}from"tslib";import"../../../../../core/has.js";import{releaseMaybe as t,disposeMaybe as i}from"../../../../../core/maybe.js";import{watch as r,initial as s}from"../../../../../core/reactiveUtils.js";import{property as o,subclass as h}from"../../../../../core/accessorSupport/decorators.js";import{set as n}from"../../../../../core/libs/gl-matrix-2/math/vec2.js";import{InternalRenderCategory as l}from"../../../webgl.js";import a from"../../../webgl/RenderNode.js";import{HighlightApplyTechnique as g}from"./HighlightApplyTechnique.js";import{H as c}from"../../../../../chunks/HighlightBlur.glsl.js";import{HighlightBlurTechnique as u}from"./HighlightBlurTechnique.js";import{H as p,g as m}from"../../../../../chunks/HighlightDownsample.glsl.js";import{HighlightDownsampleTechnique as d}from"./HighlightDownsampleTechnique.js";import{HighlightPassParameters as f}from"./HighlightPassParameters.js";import{HighlightToSingleTechnique as b}from"./HighlightToSingleTechnique.js";import{NoVertex as w}from"../../lib/DefaultVertexBufferLayouts.js";import{VertexArrayObject as x}from"../../lib/VertexArrayObject.js";import{BufferObject as T}from"../../../../webgl/BufferObject.js";import{PrimitiveType as _,DataType as v}from"../../../../webgl/enums.js";import C from"../../../../webgl/Texture.js";import{TextureDescriptor as H}from"../../../../webgl/TextureDescriptor.js";import{VertexBuffer as j}from"../../../../webgl/VertexBuffer.js";let q=class extends a{constructor(){super(...arguments),this.produces=l.HIGHLIGHTS,this.consumes={required:[l.HIGHLIGHTS,"highlights"]},this._downsampleDrawParameters=new p,this._passParameters=new f,this._highlightBlurDrawParameters=new c,this._grid=new P}initialize(){this.addHandles([r(()=>this._updateOptionsTexture(),()=>{},s)])}destroy(){this._grid.coverage=t(this._grid.coverage),this._grid.vao=i(this._grid.vao),this._passParameters.highlightOptionsTexture=t(this._passParameters.highlightOptionsTexture)}_updateOptionsTexture(){if(null==this._passParameters.highlightOptionsTexture){const e=new H(16,2);e.internalFormat=6408,e.samplingMode=9728,this._passParameters.highlightOptionsTexture=new C(this.renderingContext,e,null)}this._passParameters.highlightOptionsTexture.setData(O(this.view.state.highlights)),this.requestRender(1)}precompile(){this.techniques.precompile(d),this.techniques.precompile(b),this.techniques.precompile(u),this.techniques.precompile(g)}render(e){const t=e.find(({name:e})=>e===l.HIGHLIGHTS),{techniques:i,bindParameters:r}=this;if(!r.decorations)return t;if(!i.get(d).compiled)return this.requestRender(1),t;const s=e.find(({name:e})=>"highlights"===e).getTexture();return this._renderHighlightPostprocess(s,t),t}_prepareAndDownSample(e){this._gridUpdateResources(e);const t=this.techniques.get(d),i=this._gridComputeCoverage(t,e),{horizontalCellCount:r,verticalCellCount:s}=i,o=this._passParameters;return o.horizontalCellCount=r,o.verticalCellCount=s,o.coverageTexture=i.coverage?.getTexture(),i}_renderGrid(e){const t=e.verticalCellCount*e.horizontalCellCount;this.renderingContext.bindVAO(e.vao),this.renderingContext.drawElementsInstanced(_.TRIANGLES,6,v.UNSIGNED_BYTE,0,t)}_renderHighlightPostprocess(e,t){const{fboCache:i,techniques:r,bindParameters:s,_passParameters:o,renderingContext:h}=this,l=r.get(b),a=r.get(u),c=r.get(g);if(!c.compiled||!a.compiled||!l.compiled)return void this.requestRender(1);o.highlightTexture=e;const p=this._prepareAndDownSample(e),{width:m,height:d}=e.descriptor;o.highlightTexture=e;const{camera:f}=s,{fullWidth:w,fullHeight:x,pixelRatio:T,fullViewport:_}=f,v=Math.ceil(w/T),C=Math.ceil(x/T),{_highlightBlurDrawParameters:H}=this,j=this.view.stage.renderView.renderer,{highlights:q}=s;for(let g=0;g<q.length;++g){const{name:e}=q[g];if(!j.hasHighlight(e))continue;o.highlightLevel=g,h.setClearColor(0,0,0,0);const r=i.acquire(m,d,"single highlight",2);h.bindFramebuffer(r.fbo),h.setViewport(0,0,m,d),h.clear(16384),h.bindTechnique(l,s,o),this._renderGrid(p),H.blurInput=r.getTexture(),n(H.blurSize,1/v,0);const u=i.acquire(v,C,"single highlight blur",2);h.unbindTexture(u.fbo?.colorTexture),h.bindFramebuffer(u.fbo),h.setViewport(0,0,v,C),h.clear(16384),h.bindTechnique(a,s,o,H),this._renderGrid(p),r.release(),n(H.blurSize,0,1/C),o.highlightBlurTexture=u.getTexture(),h.bindFramebuffer(t.fbo),h.setViewport4fv(_),h.bindTechnique(c,s,o,H),this._renderGrid(p),u.release()}o.coverageTexture=o.highlightTexture=null}_gridUpdateResources(e){const t=this._grid,{width:i,height:r}=e.descriptor;if(t.horizontalCellCount=Math.ceil(i/m),t.verticalCellCount=Math.ceil(r/m),t.vao)return;const s=this.renderingContext,o=T.createIndex(s,35044,I);t.vao=new x(s,new j(s,w),o)}_gridComputeCoverage(e,t){const i=this.renderingContext,r=this._grid,s=t.descriptor,o=Math.ceil(s.width/m),h=Math.ceil(s.height/m);this._downsampleDrawParameters.input=t;const{highlights:n}=this.bindParameters;r.coverage?.release();const l=this.fboCache.acquire(o,h,"highlight coverage",n.length>G?3:1);return r.coverage=l,i.bindFramebuffer(l.fbo),i.bindTechnique(e,this.bindParameters,this._passParameters,this._downsampleDrawParameters),i.setViewport(0,0,o,h),i.screen.draw(),r}get test(){}};e([o()],q.prototype,"produces",void 0),e([o()],q.prototype,"consumes",void 0),q=e([h("esri.views.3d.webgl-engine.effects.highlight.Highlight")],q);class P{constructor(){this.coverage=null,this.vao=null,this.verticalCellCount=0,this.horizontalCellCount=0,this.viewportWidth=0,this.viewportHeight=0}}function O(e){const t=new Uint8Array(128);let i=0;for(const r of e){const e=4*i,s=4*i+64;++i;const{color:o}=r,h=r.haloColor??o;t[e+0]=o.r,t[e+1]=o.g,t[e+2]=o.b,t[e+3]=r.fillOpacity*o.a*255,t[s+0]=h.r,t[s+1]=h.g,t[s+2]=h.b,t[s+3]=r.haloOpacity*h.a*255}return t}let D=0;function y(e){let t=0;for(const r of e){const{name:e}=r;t+=e.length;const{color:i,fillOpacity:s,haloColor:o,haloOpacity:h}=r;t+=i.r+i.g+i.b+i.a+s,t+=o?o.r+o.g+o.b+o.a+h:0}const i=e.at(0);if(i){const{shadowOpacity:e,shadowDifference:r,shadowColor:s}=i;t+=e+r+s.r+s.g+s.b+s.a}return D+++(t>=0?0:1)}const I=new Uint8Array([0,1,2,2,1,3]);function S(e,t,i,r,s,o=0){const{highlights:h}=r,l=h.length>1?t.acquire(i.width,i.height,"highlight mix",h.length>G?3:1):null,{gl:a}=e;if(l){const t=e.getBoundFramebufferObject();e.bindFramebuffer(l.fbo),a.clearBufferuiv(a.COLOR,0,[0,0,0,0]),e.bindFramebuffer(t)}const g=l?.getTexture();r.highlightMixTexture=g,n(r.highlightMixOrigin,o,0),h.forEach((t,h)=>{if(h>0){const t=C.TEXTURE_UNIT_FOR_UPDATES;e.bindTexture(g,t),e.setActiveTexture(t),a.copyTexSubImage2D(3553,0,0,0,o,0,i.width,i.height),e.bindTexture(null,t)}e.clear(256),r.highlightLevel=h,s()}),r.highlightLevel=null,r.highlightMixTexture=null,l?.release()}const G=4;export{q as Highlight,G as maxHighlightsPerChannel,S as renderHighlightBuffer,y as trackHighlightOptions};
@@ -0,0 +1,5 @@
1
+ /*
2
+ All material copyright Esri, All Rights Reserved, unless otherwise specified.
3
+ See https://js.arcgis.com/5.0/esri/copyright.txt for details.
4
+ */
5
+ import"../../core/shaderLibrary/HighlightCellGridScreenSpacePass.glsl.js";import"../../core/shaderLibrary/HighlightReadBitmap.glsl.js";import"../../core/shaderModules/Float2DrawUniform.js";import"../../core/shaderModules/FloatPassUniform.js";import"../../core/shaderModules/glsl.js";import"../../core/shaderModules/IntegerPassUniform.js";import"../../core/shaderModules/Texture2DPassUniform.js";import"../../core/shaderModules/Texture2DUintPassUniform.js";import"../../../../../chunks/HighlightDownsample.glsl.js";import"../../../../webgl/ShaderBuilder.js";export{b as build}from"../../../../../chunks/HighlightApply.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/5.0/esri/copyright.txt for details.
4
4
  */
5
- import{__decorate as e}from"tslib";import{subclass as r}from"../../../../../core/accessorSupport/decorators.js";import{ReloadableShader as i}from"../../core/shaderTechnique/ReloadableShader.js";import{ShaderTechnique as s}from"../../core/shaderTechnique/ShaderTechnique.js";import{NoVertex as t}from"../../lib/DefaultVertexBufferLayouts.js";import{H as o}from"../../../../../chunks/HighlightApply.glsl.js";import{makePipelineState as l,defaultColorWrite as h,unpremultipliedAlphaToPremultipliedAlpha as p}from"../../../../webgl/renderState.js";let a=class extends s{constructor(e,r){super(e,r,t),this.shader=new i(o,()=>import("../../shaders/HighlightApply.glsl.js"))}initializePipeline(){return l({blending:p,colorWrite:h})}};a=e([r("esri.views.3d.webgl-engine.effects.highlight.HighlightApplyTechnique")],a);export{a as HighlightApplyTechnique};
5
+ import{__decorate as e}from"tslib";import{subclass as r}from"../../../../../core/accessorSupport/decorators.js";import{ReloadableShader as i}from"../../core/shaderTechnique/ReloadableShader.js";import{ShaderTechnique as t}from"../../core/shaderTechnique/ShaderTechnique.js";import{H as o}from"../../../../../chunks/HighlightApply.glsl.js";import{NoVertex as s}from"../../lib/DefaultVertexBufferLayouts.js";import{makePipelineState as l,defaultColorWrite as h,unpremultipliedAlphaToPremultipliedAlpha as p}from"../../../../webgl/renderState.js";let c=class extends t{constructor(e,r){super(e,r,s),this.shader=new i(o,()=>import("./HighlightApply.glsl.js"))}initializePipeline(){return l({blending:p,colorWrite:h})}};c=e([r("esri.views.3d.webgl-engine.effects.highlight.HighlightApplyTechnique")],c);export{c as HighlightApplyTechnique};
@@ -0,0 +1,5 @@
1
+ /*
2
+ All material copyright Esri, All Rights Reserved, unless otherwise specified.
3
+ See https://js.arcgis.com/5.0/esri/copyright.txt for details.
4
+ */
5
+ import"../../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import"../../core/shaderLibrary/HighlightCellGridScreenSpacePass.glsl.js";import"../../core/shaderModules/Float2DrawUniform.js";import"../../core/shaderModules/glsl.js";import"../../core/shaderModules/Texture2DDrawUniform.js";import"../../../../webgl/NoParameters.js";import"../../../../webgl/ShaderBuilder.js";export{H as HighlightBlurDrawParameters,b as build}from"../../../../../chunks/HighlightBlur.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/5.0/esri/copyright.txt for details.
4
4
  */
5
- import{__decorate as e}from"tslib";import{subclass as r}from"../../../../../core/accessorSupport/decorators.js";import{ReloadableShader as i}from"../../core/shaderTechnique/ReloadableShader.js";import{ShaderTechnique as s}from"../../core/shaderTechnique/ShaderTechnique.js";import{NoVertex as t}from"../../lib/DefaultVertexBufferLayouts.js";import{a as o}from"../../../../../chunks/HighlightBlur.glsl.js";import{makePipelineState as l,defaultColorWrite as h}from"../../../../webgl/renderState.js";let a=class extends s{constructor(e,r){super(e,r,t),this.shader=new i(o,()=>import("../../shaders/HighlightBlur.glsl.js"))}initializePipeline(){return l({colorWrite:h})}};a=e([r("esri.views.3d.webgl-engine.effects.highlight.HighlightBlurTechnique")],a);export{a as HighlightBlurTechnique};
5
+ import{__decorate as e}from"tslib";import{subclass as r}from"../../../../../core/accessorSupport/decorators.js";import{ReloadableShader as i}from"../../core/shaderTechnique/ReloadableShader.js";import{ShaderTechnique as t}from"../../core/shaderTechnique/ShaderTechnique.js";import{a as o}from"../../../../../chunks/HighlightBlur.glsl.js";import{NoVertex as s}from"../../lib/DefaultVertexBufferLayouts.js";import{makePipelineState as l,defaultColorWrite as h}from"../../../../webgl/renderState.js";let a=class extends t{constructor(e,r){super(e,r,s),this.shader=new i(o,()=>import("./HighlightBlur.glsl.js"))}initializePipeline(){return l({colorWrite:h})}};a=e([r("esri.views.3d.webgl-engine.effects.highlight.HighlightBlurTechnique")],a);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/5.0/esri/copyright.txt for details.
4
+ */
5
+ import"../../core/shaderLibrary/ScreenSpacePass.glsl.js";import"../../core/shaderModules/glsl.js";import"../../core/shaderModules/Texture2DUintPassUniform.js";import"../../../../webgl/NoParameters.js";import"../../../../webgl/ShaderBuilder.js";export{H as HighlightDownsampleDrawParameters,b as blurSize,c as build,g as gridCellPixelSize,o as outlineSize}from"../../../../../chunks/HighlightDownsample.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/5.0/esri/copyright.txt for details.
4
4
  */
5
- import{__decorate as e}from"tslib";import{subclass as r}from"../../../../../core/accessorSupport/decorators.js";import{ReloadableShader as i}from"../../core/shaderTechnique/ReloadableShader.js";import{ShaderTechnique as s}from"../../core/shaderTechnique/ShaderTechnique.js";import{a as o}from"../../../../../chunks/HighlightDownsample.glsl.js";import{makePipelineState as t,defaultColorWrite as h}from"../../../../webgl/renderState.js";let l=class extends s{constructor(){super(...arguments),this.shader=new i(o,()=>import("../../shaders/HighlightDownsample.glsl.js"))}initializePipeline(){return t({colorWrite:h})}};l=e([r("esri.views.3d.webgl-engine.effects.highlight.HighlightDownsampleTechnique")],l);export{l as HighlightDownsampleTechnique};
5
+ import{__decorate as e}from"tslib";import{subclass as r}from"../../../../../core/accessorSupport/decorators.js";import{ReloadableShader as i}from"../../core/shaderTechnique/ReloadableShader.js";import{ShaderTechnique as o}from"../../core/shaderTechnique/ShaderTechnique.js";import{a as s}from"../../../../../chunks/HighlightDownsample.glsl.js";import{makePipelineState as t,defaultColorWrite as l}from"../../../../webgl/renderState.js";let h=class extends o{constructor(){super(...arguments),this.shader=new i(s,()=>import("./HighlightDownsample.glsl.js"))}initializePipeline(){return t({colorWrite:l})}};h=e([r("esri.views.3d.webgl-engine.effects.highlight.HighlightDownsampleTechnique")],h);export{h as HighlightDownsampleTechnique};
@@ -0,0 +1,5 @@
1
+ /*
2
+ All material copyright Esri, All Rights Reserved, unless otherwise specified.
3
+ See https://js.arcgis.com/5.0/esri/copyright.txt for details.
4
+ */
5
+ import"../../core/shaderLibrary/HighlightCellGridScreenSpacePass.glsl.js";import"../../core/shaderLibrary/HighlightReadBitmap.glsl.js";import"../../core/shaderModules/glsl.js";import"../../core/shaderModules/IntegerPassUniform.js";import"../../core/shaderModules/Texture2DUintPassUniform.js";import"../../../../webgl/ShaderBuilder.js";export{b as build}from"../../../../../chunks/HighlightToSingle.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/5.0/esri/copyright.txt for details.
4
4
  */
5
- import{__decorate as e}from"tslib";import{subclass as r}from"../../../../../core/accessorSupport/decorators.js";import{ReloadableShader as i}from"../../core/shaderTechnique/ReloadableShader.js";import{ShaderTechnique as o}from"../../core/shaderTechnique/ShaderTechnique.js";import{NoVertex as s}from"../../lib/DefaultVertexBufferLayouts.js";import{H as t}from"../../../../../chunks/HighlightToSingle.glsl.js";import{makePipelineState as l,defaultColorWrite as h}from"../../../../webgl/renderState.js";let n=class extends o{constructor(e,r){super(e,r,s),this.shader=new i(t,()=>import("../../shaders/HighlightToSingle.glsl.js"))}initializePipeline(){return l({colorWrite:h})}};n=e([r("esri.views.3d.webgl-engine.effects.highlight.HighlightToSingleTechnique")],n);export{n as HighlightToSingleTechnique};
5
+ import{__decorate as e}from"tslib";import{subclass as r}from"../../../../../core/accessorSupport/decorators.js";import{ReloadableShader as i}from"../../core/shaderTechnique/ReloadableShader.js";import{ShaderTechnique as o}from"../../core/shaderTechnique/ShaderTechnique.js";import{H as t}from"../../../../../chunks/HighlightToSingle.glsl.js";import{NoVertex as s}from"../../lib/DefaultVertexBufferLayouts.js";import{makePipelineState as l,defaultColorWrite as h}from"../../../../webgl/renderState.js";let n=class extends o{constructor(e,r){super(e,r,s),this.shader=new i(t,()=>import("./HighlightToSingle.glsl.js"))}initializePipeline(){return l({colorWrite:h})}};n=e([r("esri.views.3d.webgl-engine.effects.highlight.HighlightToSingleTechnique")],n);export{n as HighlightToSingleTechnique};
@@ -0,0 +1,5 @@
1
+ /*
2
+ All material copyright Esri, All Rights Reserved, unless otherwise specified.
3
+ See https://js.arcgis.com/5.0/esri/copyright.txt for details.
4
+ */
5
+ import"../../../../../core/libs/gl-matrix-2/math/vec3.js";import"../../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import"../../core/shaderLibrary/NormalFromDepth.glsl.js";import"../../core/shaderLibrary/ScreenSpacePass.glsl.js";import"../../core/shaderLibrary/shading/calculateUVZShadowFromDepth.glsl.js";import"../../core/shaderLibrary/shading/ShadowmapFiltering.glsl.js";import"../../core/shaderModules/Float3BindUniform.js";import"../../core/shaderModules/Float4PassUniform.js";import"../../core/shaderModules/FloatPassUniform.js";import"../../core/shaderModules/glsl.js";import"../../core/shaderModules/Texture2DBindUniform.js";import"../../core/shaderModules/Texture2DShadowBindUniform.js";import"../../core/shaderModules/Texture2DUintPassUniform.js";import"../../../../webgl/ShaderBuilder.js";export{b as build}from"../../../../../chunks/ShadowHighlight.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/5.0/esri/copyright.txt for details.
4
4
  */
5
- import{__decorate as e}from"tslib";import{subclass as r}from"../../../../../core/accessorSupport/decorators.js";import{fromValues as i}from"../../../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{ReadShadowMapPassParameters as s}from"../../core/shaderLibrary/shading/ReadShadowMap.glsl.js";import{ReloadableShader as t}from"../../core/shaderTechnique/ReloadableShader.js";import{ShaderTechnique as o}from"../../core/shaderTechnique/ShaderTechnique.js";import{S as h}from"../../../../../chunks/ShadowHighlight.glsl.js";import{PrimitiveType as a}from"../../../../webgl/enums.js";import{makePipelineState as l,defaultColorWrite as c,unpremultipliedAlphaToPremultipliedAlpha as d}from"../../../../webgl/renderState.js";class n extends s{constructor(){super(...arguments),this.shadowColor=i(1,0,1,1),this.shadowOpacity=.2,this.occludedShadowOpacity=.1,this.opacityElevation=1,this.dayNightTerminator=1}}let p=class extends o{constructor(){super(...arguments),this.shader=new t(h,()=>import("../../shaders/ShadowHighlight.glsl.js")),this.primitiveType=a.TRIANGLE_STRIP}initializePipeline(){return l({blending:d,colorWrite:c,depthTest:null,depthWrite:null})}};p=e([r("esri.views.3d.webgl-engine.effects.highlight.ShadowHighlightTechnique")],p);export{n as ShadowHighlightPassParameters,p as ShadowHighlightTechnique};
5
+ import{__decorate as e}from"tslib";import{subclass as r}from"../../../../../core/accessorSupport/decorators.js";import{fromValues as i}from"../../../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{ReadShadowMapPassParameters as t}from"../../core/shaderLibrary/shading/ReadShadowMap.glsl.js";import{ReloadableShader as o}from"../../core/shaderTechnique/ReloadableShader.js";import{ShaderTechnique as s}from"../../core/shaderTechnique/ShaderTechnique.js";import{S as h}from"../../../../../chunks/ShadowHighlight.glsl.js";import{PrimitiveType as a}from"../../../../webgl/enums.js";import{makePipelineState as l,defaultColorWrite as c,unpremultipliedAlphaToPremultipliedAlpha as d}from"../../../../webgl/renderState.js";class n extends t{constructor(){super(...arguments),this.shadowColor=i(1,0,1,1),this.shadowOpacity=.2,this.occludedShadowOpacity=.1,this.opacityElevation=1,this.dayNightTerminator=1}}let p=class extends s{constructor(){super(...arguments),this.shader=new o(h,()=>import("./ShadowHighlight.glsl.js")),this.primitiveType=a.TRIANGLE_STRIP}initializePipeline(){return l({blending:d,colorWrite:c,depthTest:null,depthWrite:null})}};p=e([r("esri.views.3d.webgl-engine.effects.highlight.ShadowHighlightTechnique")],p);export{n as ShadowHighlightPassParameters,p as ShadowHighlightTechnique};
@@ -0,0 +1,5 @@
1
+ /*
2
+ All material copyright Esri, All Rights Reserved, unless otherwise specified.
3
+ See https://js.arcgis.com/5.0/esri/copyright.txt for details.
4
+ */
5
+ import"../../../../../core/mathUtils.js";import"../../../../../core/libs/gl-matrix-2/math/vec2.js";import"../../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import"../../../../../core/libs/gl-matrix-2/math/vec3.js";import"../../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import"../../../../../core/libs/gl-matrix-2/math/vec4.js";import"../../../../../core/libs/gl-matrix-2/factories/vec4f64.js";import"../../../../../geometry/support/lineSegment.js";import"../../../../../geometry/support/plane.js";import"../../core/shaderLibrary/Laserline.glsl.js";import"../../core/shaderLibrary/ScreenSpacePass.glsl.js";import"../../core/shaderModules/Float2PassUniform.js";import"../../core/shaderModules/Float3BindUniform.js";import"../../core/shaderModules/Float3PassUniform.js";import"../../core/shaderModules/Float4PassUniform.js";import"../../core/shaderModules/FloatBindUniform.js";import"../../core/shaderModules/FloatPassUniform.js";import"../../core/shaderModules/glsl.js";import"../../../../webgl/ShaderBuilder.js";export{b as build,d as defaultAngleCutoff}from"../../../../../chunks/Laserline.glsl.js";
@@ -0,0 +1,5 @@
1
+ /*
2
+ All material copyright Esri, All Rights Reserved, unless otherwise specified.
3
+ See https://js.arcgis.com/5.0/esri/copyright.txt for details.
4
+ */
5
+ import"../../../../../core/libs/gl-matrix-2/math/mat4.js";import"../../../../../core/libs/gl-matrix-2/factories/mat4f64.js";import"../../../../../core/libs/gl-matrix-2/math/vec2.js";import"../../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import"../../core/shaderLibrary/Laserline.glsl.js";import"../../core/shaderModules/Float2BindUniform.js";import"../../core/shaderModules/FloatBindUniform.js";import"../../core/shaderModules/FloatPassUniform.js";import"../../core/shaderModules/glsl.js";import"../../core/shaderModules/Matrix4BindUniform.js";import"../../core/shaderModules/Matrix4PassUniform.js";import"../../../../webgl/ShaderBuilder.js";export{b as build}from"../../../../../chunks/LaserlinePath.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/5.0/esri/copyright.txt for details.
4
4
  */
5
- import{__decorate as e}from"tslib";import{subclass as r}from"../../../../../core/accessorSupport/decorators.js";import{create as s}from"../../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{glLayout as t}from"../../../support/buffer/glUtil.js";import{newLayout as o}from"../../../support/buffer/InterleavedLayout.js";import{ReloadableShader as i}from"../../core/shaderTechnique/ReloadableShader.js";import{ShaderTechnique as c}from"../../core/shaderTechnique/ShaderTechnique.js";import{LaserlinePassParameters as a}from"./LaserlineTechnique.js";import{L as f}from"../../../../../chunks/LaserlinePath.glsl.js";class n extends a{constructor(){super(...arguments),this.origin=s()}}let l=class extends c{constructor(e,r){super(e,r,t(r.spherical?p:m)),this.shader=new i(f,()=>import("../../shaders/LaserlinePath.glsl.js"))}};l=e([r("esri.views.3d.webgl-engine.effects.laserlines.LaserlinePathTechnique")],l);const p=o().vec3f("start").vec3f("end").vec2f("extrude").vec3f("startUp").vec3f("endUp"),m=o().vec3f("start").vec3f("end").vec2f("extrude");export{n as LaserlinePathPassParameters,l as LaserlinePathTechnique,m as layoutPlanar,p as layoutSpherical};
5
+ import{__decorate as e}from"tslib";import{subclass as r}from"../../../../../core/accessorSupport/decorators.js";import{create as s}from"../../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{glLayout as t}from"../../../support/buffer/glUtil.js";import{newLayout as o}from"../../../support/buffer/InterleavedLayout.js";import{ReloadableShader as i}from"../../core/shaderTechnique/ReloadableShader.js";import{ShaderTechnique as c}from"../../core/shaderTechnique/ShaderTechnique.js";import{L as a}from"../../../../../chunks/LaserlinePath.glsl.js";import{LaserlinePassParameters as f}from"./LaserlineTechnique.js";class n extends f{constructor(){super(...arguments),this.origin=s()}}let l=class extends c{constructor(e,r){super(e,r,t(r.spherical?p:m)),this.shader=new i(a,()=>import("./LaserlinePath.glsl.js"))}};l=e([r("esri.views.3d.webgl-engine.effects.laserlines.LaserlinePathTechnique")],l);const p=o().vec3f("start").vec3f("end").vec2f("extrude").vec3f("startUp").vec3f("endUp"),m=o().vec3f("start").vec3f("end").vec2f("extrude");export{n as LaserlinePathPassParameters,l as LaserlinePathTechnique,m as layoutPlanar,p as layoutSpherical};
@@ -2,4 +2,4 @@
2
2
  All material copyright Esri, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/5.0/esri/copyright.txt for details.
4
4
  */
5
- import{__decorate as e}from"tslib";import{deg2rad as s}from"../../../../../core/mathUtils.js";import{subclass as t}from"../../../../../core/accessorSupport/decorators.js";import{fromValues as r,create as i}from"../../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{create as o}from"../../../../../geometry/support/lineSegment.js";import{ReloadableShader as l}from"../../core/shaderTechnique/ReloadableShader.js";import{ShaderTechnique as n}from"../../core/shaderTechnique/ShaderTechnique.js";import{L as a}from"../../../../../chunks/Laserlines.glsl.js";import{NoParameters as h}from"../../../../webgl/NoParameters.js";class c extends h{constructor(){super(...arguments),this.innerColor=r(1,1,1),this.innerWidth=1,this.glowColor=r(1,.5,0),this.glowWidth=8,this.glowFalloff=8,this.globalAlpha=.75,this.globalAlphaContrastBoost=2,this.angleCutoff=s(6),this.pointDistanceOrigin=i(),this.pointDistanceTarget=i(),this.lineVerticalPlaneSegment=o(),this.intersectsLineSegment=o(),this.intersectsLineRadius=3,this.heightManifoldTarget=i(),this.lineStartWorld=i(),this.lineEndWorld=i()}}let m=class extends n{constructor(){super(...arguments),this.shader=new l(a,()=>import("../../shaders/Laserlines.glsl.js"))}};m=e([t("esri.views.3d.webgl-engine.effects.laserlines.LaserlineTechnique")],m);export{c as LaserlinePassParameters,m as LaserlineTechnique};
5
+ import{__decorate as e}from"tslib";import{deg2rad as s}from"../../../../../core/mathUtils.js";import{subclass as t}from"../../../../../core/accessorSupport/decorators.js";import{fromValues as r,create as i}from"../../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{create as o}from"../../../../../geometry/support/lineSegment.js";import{ReloadableShader as l}from"../../core/shaderTechnique/ReloadableShader.js";import{ShaderTechnique as n}from"../../core/shaderTechnique/ShaderTechnique.js";import{L as a}from"../../../../../chunks/Laserline.glsl.js";import{NoParameters as h}from"../../../../webgl/NoParameters.js";class c extends h{constructor(){super(...arguments),this.innerColor=r(1,1,1),this.innerWidth=1,this.glowColor=r(1,.5,0),this.glowWidth=8,this.glowFalloff=8,this.globalAlpha=.75,this.globalAlphaContrastBoost=2,this.angleCutoff=s(6),this.pointDistanceOrigin=i(),this.pointDistanceTarget=i(),this.lineVerticalPlaneSegment=o(),this.intersectsLineSegment=o(),this.intersectsLineRadius=3,this.heightManifoldTarget=i(),this.lineStartWorld=i(),this.lineEndWorld=i()}}let m=class extends n{constructor(){super(...arguments),this.shader=new l(a,()=>import("./Laserline.glsl.js"))}};m=e([t("esri.views.3d.webgl-engine.effects.laserlines.LaserlineTechnique")],m);export{c as LaserlinePassParameters,m as LaserlineTechnique};
@@ -0,0 +1,5 @@
1
+ /*
2
+ All material copyright Esri, All Rights Reserved, unless otherwise specified.
3
+ See https://js.arcgis.com/5.0/esri/copyright.txt for details.
4
+ */
5
+ import"../../../../../core/screenUtils.js";import"../../../../../core/libs/gl-matrix-2/math/vec4.js";import"../../../../../core/libs/gl-matrix-2/factories/vec4f64.js";import"../../core/shaderModules/BooleanPassUniform.js";import"../../core/shaderModules/Float4PassUniform.js";import"../../core/shaderModules/glsl.js";import"../../core/shaderModules/Texture2DPassUniform.js";import"../../../../webgl/NoParameters.js";import"../../../../webgl/ShaderBuilder.js";export{M as MagnifierPassParameters,b as build}from"../../../../../chunks/Magnifier.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/5.0/esri/copyright.txt for details.
4
4
  */
5
- import{__decorate as e}from"tslib";import{createTask as s}from"../../../../../core/asyncUtils.js";import{clamp as i}from"../../../../../core/mathUtils.js";import{disposeMaybe as r}from"../../../../../core/maybe.js";import{watch as t,syncAndInitial as a}from"../../../../../core/reactiveUtils.js";import{createScreenPointArray as o,createRenderScreenPointArray as m,screenPointObjectToArray as n}from"../../../../../core/screenUtils.js";import{isSVG as h}from"../../../../../core/urlUtils.js";import{property as l,subclass as u}from"../../../../../core/accessorSupport/decorators.js";import{requestImage as p}from"../../../../../request/image.js";import{InternalRenderCategory as c}from"../../../webgl.js";import _ from"../../../webgl/RenderNode.js";import{MagnifierTechnique as g}from"./MagnifierTechnique.js";import{createQuadVAO as d}from"../../lib/glUtil3D.js";import{M as f}from"../../../../../chunks/Magnifier.glsl.js";import{loadMagnifierResources as v}from"../../../../magnifier/resources.js";import{PrimitiveType as T}from"../../../../webgl/enums.js";import k from"../../../../webgl/Texture.js";import{TextureDescriptor as P}from"../../../../webgl/TextureDescriptor.js";let y=class extends _{constructor(){super(...arguments),this.produces=c.MAGNIFIER,this.consumes={required:[c.MAGNIFIER]},this._imageSources=null,this._imageLoadTask=null,this._passParameters=new f,this._magnifier=null,this._tmpScreenPoint=o(),this._tmpRenderPoint=m()}initialize(){this.addHandles([t(()=>this.view.magnifier,e=>this._update(e),a)])}_update(e){if(e===this._magnifier)return;this.removeAllHandles(),this._magnifier=e;const s=()=>{const e=this._validMagnifier;e?(this._loadResources(e),this.produces=c.MAGNIFIER):this.produces="disabled",this.requestRender()};this._magnifier&&this.addHandles(t(()=>this._magnifier?.version,s)),s()}get _validMagnifier(){return this._magnifier?.visible&&this._magnifier?.position&&this._magnifier?.size>0?this._magnifier:null}get _factor(){return this._magnifier?.factor||1}destroy(){this._magnifier=null,null!=this._imageLoadTask&&(this._imageLoadTask.task.abort(),this._imageLoadTask=null),this._disposeTextures(),this._vao=r(this._vao)}_disposeTextures(){this._passParameters.mask=r(this._passParameters.mask),this._passParameters.overlay=r(this._passParameters.overlay),this._passParameters.input=r(this._passParameters.input)}precompile(){this._imageSources&&this.techniques.precompile(g)}render(e){const s=this._validMagnifier,r=e.find(({name:e})=>e===c.MAGNIFIER);if(null==s)return r;if(null==this._imageSources)return this.requestRender(1),r;const t=this.renderingContext,a=this.camera.pixelRatio,o=Math.ceil(a*s.size);this._vao??=d(t,0,0,1);const m=this.techniques.get(g);if(this._ensureTextureResources(t,o),!m.compiled||!this._passParameters.input)return this.requestRender(1),r;const h=Math.ceil(1/this._factor*o),l=this._passParameters.input;l.resize(h,h),n(s.position,this._tmpScreenPoint);const u=this.camera.screenToRender(this._tmpScreenPoint,this._tmpRenderPoint),p=this.camera.fullWidth,_=this.camera.fullHeight,f=.5*h,v=.5*h;u[0]=i(u[0],f,p-f-1),u[1]=i(u[1],v,_-v-1);const k=Math.floor(u[0]-f),P=Math.floor(u[1]-v);t.bindFramebuffer(r.fbo);return m.program.bindTexture("textureInput",l),t.gl.copyTexImage2D(l.descriptor.target,0,l.descriptor.pixelFormat,k,P,h,h,0),this._passParameters.magnifier=s,t.bindTechnique(m,this.bindParameters,this._passParameters),t.bindVAO(this._vao),t.drawArrays(T.TRIANGLE_STRIP,0,4),r}_loadResources(e){const{maskUrl:i,overlayUrl:r}=e;this._imageLoadTask?.maskUrl===i&&this._imageLoadTask?.overlayUrl===r||(this._imageLoadTask?.task.abort(),this._imageLoadTask=this._imageSources=null),this._imageSources||this._imageLoadTask||(this._imageLoadTask={maskUrl:i,overlayUrl:r,task:s(async e=>{const s=null==i||null==r?v(e):null,t=null!=i?p(i,{signal:e}):s.then(e=>e.mask),a=null!=r?p(r,{signal:e}):s.then(e=>e.overlay);this._imageSources={mask:await t,overlay:await a}})})}_ensureTextureResources(e,s){null==this._imageSources||this._passParameters.size===s&&this._passParameters.input&&this._passParameters.mask&&this._passParameters.overlay||(this._disposeTextures(),this._imageSources.overlay.width=this._imageSources.mask.width=s,this._imageSources.overlay.height=this._imageSources.mask.height=s,this._passParameters.overlay=new k(e,this._createTextureDescriptor(s,6408,this._imageSources.overlay),this._imageSources.overlay),this._passParameters.mask=new k(e,this._createTextureDescriptor(s,6406,this._imageSources.mask),this._imageSources.mask),this._passParameters.input=new k(e,this._createTextureDescriptor(s,6408,null)))}_createTextureDescriptor(e,s,i){const r=this.renderingContext,t=new P(e);return t.pixelFormat=t.internalFormat=s,t.wrapMode=33071,t.flipped=!!i,t.preMultiplyAlpha=!(6408!==s||!i||h(i.src)&&r.driverTest.svgPremultipliesAlpha.result),t}};e([l()],y.prototype,"produces",void 0),e([l()],y.prototype,"consumes",void 0),e([l()],y.prototype,"_imageSources",void 0),e([l()],y.prototype,"_imageLoadTask",void 0),y=e([u("esri.views.3d.webgl-engine.effects.magnifier.Magnifier")],y);export{y as Magnifier};
5
+ import{__decorate as e}from"tslib";import{createTask as s}from"../../../../../core/asyncUtils.js";import{clamp as i}from"../../../../../core/mathUtils.js";import{disposeMaybe as r}from"../../../../../core/maybe.js";import{watch as t,syncAndInitial as a}from"../../../../../core/reactiveUtils.js";import{createScreenPointArray as o,createRenderScreenPointArray as m,screenPointObjectToArray as n}from"../../../../../core/screenUtils.js";import{isSVG as h}from"../../../../../core/urlUtils.js";import{property as l,subclass as u}from"../../../../../core/accessorSupport/decorators.js";import{requestImage as p}from"../../../../../request/image.js";import{InternalRenderCategory as c}from"../../../webgl.js";import _ from"../../../webgl/RenderNode.js";import{M as g}from"../../../../../chunks/Magnifier.glsl.js";import{MagnifierTechnique as d}from"./MagnifierTechnique.js";import{createQuadVAO as f}from"../../lib/glUtil3D.js";import{loadMagnifierResources as v}from"../../../../magnifier/resources.js";import{PrimitiveType as T}from"../../../../webgl/enums.js";import k from"../../../../webgl/Texture.js";import{TextureDescriptor as P}from"../../../../webgl/TextureDescriptor.js";let y=class extends _{constructor(){super(...arguments),this.produces=c.MAGNIFIER,this.consumes={required:[c.MAGNIFIER]},this._imageSources=null,this._imageLoadTask=null,this._passParameters=new g,this._magnifier=null,this._tmpScreenPoint=o(),this._tmpRenderPoint=m()}initialize(){this.addHandles([t(()=>this.view.magnifier,e=>this._update(e),a)])}_update(e){if(e===this._magnifier)return;this.removeAllHandles(),this._magnifier=e;const s=()=>{const e=this._validMagnifier;e?(this._loadResources(e),this.produces=c.MAGNIFIER):this.produces="disabled",this.requestRender()};this._magnifier&&this.addHandles(t(()=>this._magnifier?.version,s)),s()}get _validMagnifier(){return this._magnifier?.visible&&this._magnifier?.position&&this._magnifier?.size>0?this._magnifier:null}get _factor(){return this._magnifier?.factor||1}destroy(){this._magnifier=null,null!=this._imageLoadTask&&(this._imageLoadTask.task.abort(),this._imageLoadTask=null),this._disposeTextures(),this._vao=r(this._vao)}_disposeTextures(){this._passParameters.mask=r(this._passParameters.mask),this._passParameters.overlay=r(this._passParameters.overlay),this._passParameters.input=r(this._passParameters.input)}precompile(){this._imageSources&&this.techniques.precompile(d)}render(e){const s=this._validMagnifier,r=e.find(({name:e})=>e===c.MAGNIFIER);if(null==s)return r;if(null==this._imageSources)return this.requestRender(1),r;const t=this.renderingContext,a=this.camera.pixelRatio,o=Math.ceil(a*s.size);this._vao??=f(t,0,0,1);const m=this.techniques.get(d);if(this._ensureTextureResources(t,o),!m.compiled||!this._passParameters.input)return this.requestRender(1),r;const h=Math.ceil(1/this._factor*o),l=this._passParameters.input;l.resize(h,h),n(s.position,this._tmpScreenPoint);const u=this.camera.screenToRender(this._tmpScreenPoint,this._tmpRenderPoint),p=this.camera.fullWidth,_=this.camera.fullHeight,g=.5*h,v=.5*h;u[0]=i(u[0],g,p-g-1),u[1]=i(u[1],v,_-v-1);const k=Math.floor(u[0]-g),P=Math.floor(u[1]-v);t.bindFramebuffer(r.fbo);return m.program.bindTexture("textureInput",l),t.gl.copyTexImage2D(l.descriptor.target,0,l.descriptor.pixelFormat,k,P,h,h,0),this._passParameters.magnifier=s,t.bindTechnique(m,this.bindParameters,this._passParameters),t.bindVAO(this._vao),t.drawArrays(T.TRIANGLE_STRIP,0,4),r}_loadResources(e){const{maskUrl:i,overlayUrl:r}=e;this._imageLoadTask?.maskUrl===i&&this._imageLoadTask?.overlayUrl===r||(this._imageLoadTask?.task.abort(),this._imageLoadTask=this._imageSources=null),this._imageSources||this._imageLoadTask||(this._imageLoadTask={maskUrl:i,overlayUrl:r,task:s(async e=>{const s=null==i||null==r?v(e):null,t=null!=i?p(i,{signal:e}):s.then(e=>e.mask),a=null!=r?p(r,{signal:e}):s.then(e=>e.overlay);this._imageSources={mask:await t,overlay:await a}})})}_ensureTextureResources(e,s){null==this._imageSources||this._passParameters.size===s&&this._passParameters.input&&this._passParameters.mask&&this._passParameters.overlay||(this._disposeTextures(),this._imageSources.overlay.width=this._imageSources.mask.width=s,this._imageSources.overlay.height=this._imageSources.mask.height=s,this._passParameters.overlay=new k(e,this._createTextureDescriptor(s,6408,this._imageSources.overlay),this._imageSources.overlay),this._passParameters.mask=new k(e,this._createTextureDescriptor(s,6406,this._imageSources.mask),this._imageSources.mask),this._passParameters.input=new k(e,this._createTextureDescriptor(s,6408,null)))}_createTextureDescriptor(e,s,i){const r=this.renderingContext,t=new P(e);return t.pixelFormat=t.internalFormat=s,t.wrapMode=33071,t.flipped=!!i,t.preMultiplyAlpha=!(6408!==s||!i||h(i.src)&&r.driverTest.svgPremultipliesAlpha.result),t}};e([l()],y.prototype,"produces",void 0),e([l()],y.prototype,"consumes",void 0),e([l()],y.prototype,"_imageSources",void 0),e([l()],y.prototype,"_imageLoadTask",void 0),y=e([u("esri.views.3d.webgl-engine.effects.magnifier.Magnifier")],y);export{y as Magnifier};
@@ -2,4 +2,4 @@
2
2
  All material copyright Esri, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/5.0/esri/copyright.txt for details.
4
4
  */
5
- import{__decorate as e}from"tslib";import{subclass as r}from"../../../../../core/accessorSupport/decorators.js";import{ReloadableShader as i}from"../../core/shaderTechnique/ReloadableShader.js";import{ShaderTechnique as s}from"../../core/shaderTechnique/ShaderTechnique.js";import{a as t}from"../../../../../chunks/Magnifier.glsl.js";import{PrimitiveType as o}from"../../../../webgl/enums.js";import{makePipelineState as n,defaultColorWrite as l,premultipliedAlpha as a}from"../../../../webgl/renderState.js";let m=class extends s{constructor(){super(...arguments),this.shader=new i(t,()=>import("../../shaders/Magnifier.glsl.js")),this.primitiveType=o.TRIANGLE_STRIP}initializePipeline(){return n({blending:a,depthTest:null,depthWrite:null,colorWrite:l})}};m=e([r("esri.views.3d.webgl-engine.effects.magnifier.MagnifierTechnique")],m);export{m as MagnifierTechnique};
5
+ import{__decorate as e}from"tslib";import{subclass as r}from"../../../../../core/accessorSupport/decorators.js";import{ReloadableShader as i}from"../../core/shaderTechnique/ReloadableShader.js";import{ShaderTechnique as s}from"../../core/shaderTechnique/ShaderTechnique.js";import{a as t}from"../../../../../chunks/Magnifier.glsl.js";import{PrimitiveType as o}from"../../../../webgl/enums.js";import{makePipelineState as n,defaultColorWrite as l,premultipliedAlpha as a}from"../../../../webgl/renderState.js";let m=class extends s{constructor(){super(...arguments),this.shader=new i(t,()=>import("./Magnifier.glsl.js")),this.primitiveType=o.TRIANGLE_STRIP}initializePipeline(){return n({blending:a,depthTest:null,depthWrite:null,colorWrite:l})}};m=e([r("esri.views.3d.webgl-engine.effects.magnifier.MagnifierTechnique")],m);export{m as MagnifierTechnique};
@@ -0,0 +1,5 @@
1
+ /*
2
+ All material copyright Esri, All Rights Reserved, unless otherwise specified.
3
+ See https://js.arcgis.com/5.0/esri/copyright.txt for details.
4
+ */
5
+ import"../../core/shaderLibrary/ScreenSpacePass.glsl.js";import"../../core/shaderModules/glsl.js";import"../../core/shaderModules/Texture2DPassUniform.js";import"../../../../webgl/ShaderBuilder.js";export{b as build}from"../../../../../chunks/BlendWeights.glsl.js";
@@ -0,0 +1,5 @@
1
+ /*
2
+ All material copyright Esri, All Rights Reserved, unless otherwise specified.
3
+ See https://js.arcgis.com/5.0/esri/copyright.txt for details.
4
+ */
5
+ import"../../core/shaderLibrary/ScreenSpacePass.glsl.js";import"../../core/shaderModules/glsl.js";import"../../core/shaderModules/Texture2DPassUniform.js";import"../../../../webgl/ShaderBuilder.js";export{b as build}from"../../../../../chunks/Blur.glsl.js";
@@ -0,0 +1,5 @@
1
+ /*
2
+ All material copyright Esri, All Rights Reserved, unless otherwise specified.
3
+ See https://js.arcgis.com/5.0/esri/copyright.txt for details.
4
+ */
5
+ import"../../core/shaderLibrary/ScreenSpacePass.glsl.js";import"../../core/shaderModules/glsl.js";import"../../core/shaderModules/Texture2DPassUniform.js";import"../../../../webgl/ShaderBuilder.js";export{b as build}from"../../../../../chunks/EdgeDetect.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/5.0/esri/copyright.txt for details.
4
4
  */
5
- import{__decorate as e}from"tslib";import{subclass as r}from"../../../../../core/accessorSupport/decorators.js";import{ReloadableShader as s}from"../../core/shaderTechnique/ReloadableShader.js";import{ShaderTechnique as i}from"../../core/shaderTechnique/ShaderTechnique.js";import{B as o}from"../../../../../chunks/BlendWeights.glsl.js";import{makePipelineState as t,defaultColorWrite as l}from"../../../../webgl/renderState.js";let n=class extends i{constructor(){super(...arguments),this.shader=new s(o,()=>import("../../shaders/BlendWeights.glsl.js"))}initializePipeline(){return t({colorWrite:l})}};n=e([r("esri.views.3d.webgl-engine.effects.smaa.SMAABlendWeightsTechnique")],n);export{n as SMAABlendWeightsTechnique};
5
+ import{__decorate as e}from"tslib";import{subclass as r}from"../../../../../core/accessorSupport/decorators.js";import{ReloadableShader as s}from"../../core/shaderTechnique/ReloadableShader.js";import{ShaderTechnique as i}from"../../core/shaderTechnique/ShaderTechnique.js";import{B as o}from"../../../../../chunks/BlendWeights.glsl.js";import{makePipelineState as t,defaultColorWrite as l}from"../../../../webgl/renderState.js";let n=class extends i{constructor(){super(...arguments),this.shader=new s(o,()=>import("./BlendWeights.glsl.js"))}initializePipeline(){return t({colorWrite:l})}};n=e([r("esri.views.3d.webgl-engine.effects.smaa.SMAABlendWeightsTechnique")],n);export{n as SMAABlendWeightsTechnique};
@@ -2,4 +2,4 @@
2
2
  All material copyright Esri, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/5.0/esri/copyright.txt for details.
4
4
  */
5
- import{__decorate as e}from"tslib";import{subclass as r}from"../../../../../core/accessorSupport/decorators.js";import{ReloadableShader as s}from"../../core/shaderTechnique/ReloadableShader.js";import{ShaderTechnique as o}from"../../core/shaderTechnique/ShaderTechnique.js";import{B as i}from"../../../../../chunks/Blur.glsl.js";import{makePipelineState as t,defaultColorWrite as l}from"../../../../webgl/renderState.js";let a=class extends o{constructor(){super(...arguments),this.shader=new s(i,()=>import("../../shaders/Blur.glsl.js"))}initializePipeline(){return t({colorWrite:l})}};a=e([r("esri.views.3d.webgl-engine.effects.smaa.SMAABlurTechnique")],a);export{a as SMAABlurTechnique};
5
+ import{__decorate as e}from"tslib";import{subclass as r}from"../../../../../core/accessorSupport/decorators.js";import{ReloadableShader as s}from"../../core/shaderTechnique/ReloadableShader.js";import{ShaderTechnique as o}from"../../core/shaderTechnique/ShaderTechnique.js";import{B as i}from"../../../../../chunks/Blur.glsl.js";import{makePipelineState as t,defaultColorWrite as l}from"../../../../webgl/renderState.js";let c=class extends o{constructor(){super(...arguments),this.shader=new s(i,()=>import("./Blur.glsl.js"))}initializePipeline(){return t({colorWrite:l})}};c=e([r("esri.views.3d.webgl-engine.effects.smaa.SMAABlurTechnique")],c);export{c as SMAABlurTechnique};
@@ -2,4 +2,4 @@
2
2
  All material copyright Esri, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/5.0/esri/copyright.txt for details.
4
4
  */
5
- import{__decorate as e}from"tslib";import{subclass as r}from"../../../../../core/accessorSupport/decorators.js";import{ReloadableShader as s}from"../../core/shaderTechnique/ReloadableShader.js";import{ShaderTechnique as t}from"../../core/shaderTechnique/ShaderTechnique.js";import{E as o}from"../../../../../chunks/EdgeDetect.glsl.js";import{makePipelineState as i,defaultColorWrite as c}from"../../../../webgl/renderState.js";let a=class extends t{constructor(){super(...arguments),this.shader=new s(o,()=>import("../../shaders/EdgeDetect.glsl.js"))}initializePipeline(){return i({colorWrite:c})}};a=e([r("esri.views.3d.webgl-engine.effects.smaa.SMAAEdgeDetectTechnique")],a);export{a as SMAAEdgeDetectTechnique};
5
+ import{__decorate as e}from"tslib";import{subclass as r}from"../../../../../core/accessorSupport/decorators.js";import{ReloadableShader as t}from"../../core/shaderTechnique/ReloadableShader.js";import{ShaderTechnique as s}from"../../core/shaderTechnique/ShaderTechnique.js";import{E as o}from"../../../../../chunks/EdgeDetect.glsl.js";import{makePipelineState as i,defaultColorWrite as c}from"../../../../webgl/renderState.js";let a=class extends s{constructor(){super(...arguments),this.shader=new t(o,()=>import("./EdgeDetect.glsl.js"))}initializePipeline(){return i({colorWrite:c})}};a=e([r("esri.views.3d.webgl-engine.effects.smaa.SMAAEdgeDetectTechnique")],a);export{a as SMAAEdgeDetectTechnique};
@@ -0,0 +1,5 @@
1
+ /*
2
+ All material copyright Esri, All Rights Reserved, unless otherwise specified.
3
+ See https://js.arcgis.com/5.0/esri/copyright.txt for details.
4
+ */
5
+ import"../../../../../core/libs/gl-matrix-2/math/vec2.js";import"../../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import"../../core/shaderLibrary/ScreenSpacePass.glsl.js";import"../../core/shaderLibrary/output/ReadDepth.glsl.js";import"../../core/shaderLibrary/util/CameraSpace.glsl.js";import"../../core/shaderModules/Float2BindUniform.js";import"../../core/shaderModules/Float2PassUniform.js";import"../../core/shaderModules/FloatBindUniform.js";import"../../core/shaderModules/FloatPassUniform.js";import"../../core/shaderModules/glsl.js";import"../../core/shaderModules/Texture2DPassUniform.js";import"../../../../webgl/ShaderBuilder.js";export{b as build,g as getRadius}from"../../../../../chunks/SSAO.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/5.0/esri/copyright.txt for details.
4
4
  */
5
- import{__decorate as e}from"tslib";import{clamp as r}from"../../../../../core/mathUtils.js";import{disposeMaybe as t}from"../../../../../core/maybe.js";import{watch as s}from"../../../../../core/reactiveUtils.js";import{Milliseconds as i}from"../../../../../core/time.js";import{property as a,subclass as o}from"../../../../../core/accessorSupport/decorators.js";import{set as n}from"../../../../../core/libs/gl-matrix-2/math/vec2.js";import{InternalRenderCategory as m}from"../../../webgl.js";import p from"../../../webgl/RenderNode.js";import{distanceFadeEnd as c,distanceFadeStart as h}from"../../core/shaderLibrary/shading/ScreenSpaceConstants.js";import{SSAOBlurTechnique as l}from"./SSAOBlurTechnique.js";import{noiseData as u}from"./SSAONoiseData.js";import{SSAOPassParameters as d,BlurDrawParameters as f}from"./SSAOParameters.js";import{SSAOTechnique as b}from"./SSAOTechnique.js";import{g as w}from"../../../../../chunks/SSAO.glsl.js";import{DepthStencilAttachment as S}from"../../../../webgl/enums.js";import _ from"../../../../webgl/Texture.js";import{TextureDescriptor as T}from"../../../../webgl/TextureDescriptor.js";const P=2;let g=class extends p{constructor(e){super(e),this.consumes={required:["normals"]},this.produces=m.SSAO,this.isEnabled=()=>!1,this._enableTime=i(0),this._passParameters=new d,this._drawParameters=new f}initialize(){const e=Uint8Array.from(atob(u),e=>e.charCodeAt(0)),r=new T(32);r.wrapMode=33071,r.pixelFormat=6407,r.wrapMode=10497,r.hasMipmap=!0,this._passParameters.noiseTexture=new _(this.renderingContext,r,e),this.techniques.precompile(b),this.techniques.precompile(l),this.addHandles(s(()=>this.isEnabled(),()=>this._enableTime=i(0)))}destroy(){this._passParameters.noiseTexture=t(this._passParameters.noiseTexture)}render(e){const t=e.find(({name:e})=>"normals"===e),s=t?.getTexture(),a=t?.getTexture(S);if(!s||!a)return;const o=this.techniques.get(b),p=this.techniques.get(l);if(!o.compiled||!p.compiled)return this._enableTime=i(performance.now()),void this.requestRender(1);0===this._enableTime&&(this._enableTime=i(performance.now()));const u=this.renderingContext,d=this.view.qualitySettings.fadeDuration,f=this.bindParameters,_=f.camera,T=_.relativeElevation,g=r((c-T)/(c-h),0,1),j=d>0?Math.min(d,performance.now()-this._enableTime)/d:1,q=j*g;this._passParameters.normalTexture=s,this._passParameters.depthTexture=a,this._passParameters.projScale=1/_.computeScreenPixelSizeAtDist(1),this._passParameters.intensity=4*x/w(_)**6*q;const v=_.fullViewport[2],A=_.fullViewport[3],y=this.fboCache.acquire(v,A,"ssao input",2);u.bindFramebuffer(y.fbo),u.setViewport(0,0,v,A),u.bindTechnique(o,f,this._passParameters,this._drawParameters),u.screen.draw();const C=Math.round(v/P),O=Math.round(A/P),V=this.fboCache.acquire(C,O,"ssao blur",0);u.bindFramebuffer(V.fbo),this._drawParameters.colorTexture=y.getTexture(),n(this._drawParameters.blurSize,0,P/A),u.bindTechnique(p,f,this._passParameters,this._drawParameters),u.setViewport(0,0,C,O),u.screen.draw(),y.release();const M=this.fboCache.acquire(C,O,m.SSAO,0);return u.bindFramebuffer(M.fbo),u.setViewport(0,0,v,A),u.setClearColor(1,1,1,0),u.clear(16384),this._drawParameters.colorTexture=V.getTexture(),n(this._drawParameters.blurSize,P/v,0),u.bindTechnique(p,f,this._passParameters,this._drawParameters),u.setViewport(0,0,C,O),u.screen.draw(),u.setViewport4fv(_.fullViewport),V.release(),j<1&&this.requestRender(2),M}};e([a()],g.prototype,"consumes",void 0),e([a()],g.prototype,"produces",void 0),e([a({constructOnly:!0})],g.prototype,"isEnabled",void 0),g=e([o("esri.views.3d.webgl-engine.effects.ssao.SSAO")],g);const x=.5;export{g as SSAO,P as blurSizePixels};
5
+ import{__decorate as e}from"tslib";import{clamp as r}from"../../../../../core/mathUtils.js";import{disposeMaybe as t}from"../../../../../core/maybe.js";import{watch as s}from"../../../../../core/reactiveUtils.js";import{Milliseconds as i}from"../../../../../core/time.js";import{property as a,subclass as o}from"../../../../../core/accessorSupport/decorators.js";import{set as n}from"../../../../../core/libs/gl-matrix-2/math/vec2.js";import{InternalRenderCategory as m}from"../../../webgl.js";import p from"../../../webgl/RenderNode.js";import{distanceFadeEnd as c,distanceFadeStart as h}from"../../core/shaderLibrary/shading/ScreenSpaceConstants.js";import{g as l}from"../../../../../chunks/SSAO.glsl.js";import{SSAOBlurTechnique as u}from"./SSAOBlurTechnique.js";import{noiseData as d}from"./SSAONoiseData.js";import{SSAOPassParameters as f,BlurDrawParameters as b}from"./SSAOParameters.js";import{SSAOTechnique as w}from"./SSAOTechnique.js";import{DepthStencilAttachment as S}from"../../../../webgl/enums.js";import _ from"../../../../webgl/Texture.js";import{TextureDescriptor as T}from"../../../../webgl/TextureDescriptor.js";const P=2;let g=class extends p{constructor(e){super(e),this.consumes={required:["normals"]},this.produces=m.SSAO,this.isEnabled=()=>!1,this._enableTime=i(0),this._passParameters=new f,this._drawParameters=new b}initialize(){const e=Uint8Array.from(atob(d),e=>e.charCodeAt(0)),r=new T(32);r.wrapMode=33071,r.pixelFormat=6407,r.wrapMode=10497,r.hasMipmap=!0,this._passParameters.noiseTexture=new _(this.renderingContext,r,e),this.techniques.precompile(w),this.techniques.precompile(u),this.addHandles(s(()=>this.isEnabled(),()=>this._enableTime=i(0)))}destroy(){this._passParameters.noiseTexture=t(this._passParameters.noiseTexture)}render(e){const t=e.find(({name:e})=>"normals"===e),s=t?.getTexture(),a=t?.getTexture(S);if(!s||!a)return;const o=this.techniques.get(w),p=this.techniques.get(u);if(!o.compiled||!p.compiled)return this._enableTime=i(performance.now()),void this.requestRender(1);0===this._enableTime&&(this._enableTime=i(performance.now()));const d=this.renderingContext,f=this.view.qualitySettings.fadeDuration,b=this.bindParameters,_=b.camera,T=_.relativeElevation,g=r((c-T)/(c-h),0,1),j=f>0?Math.min(f,performance.now()-this._enableTime)/f:1,q=j*g;this._passParameters.normalTexture=s,this._passParameters.depthTexture=a,this._passParameters.projScale=1/_.computeScreenPixelSizeAtDist(1),this._passParameters.intensity=4*x/l(_)**6*q;const v=_.fullViewport[2],A=_.fullViewport[3],y=this.fboCache.acquire(v,A,"ssao input",2);d.bindFramebuffer(y.fbo),d.setViewport(0,0,v,A),d.bindTechnique(o,b,this._passParameters,this._drawParameters),d.screen.draw();const C=Math.round(v/P),O=Math.round(A/P),V=this.fboCache.acquire(C,O,"ssao blur",0);d.bindFramebuffer(V.fbo),this._drawParameters.colorTexture=y.getTexture(),n(this._drawParameters.blurSize,0,P/A),d.bindTechnique(p,b,this._passParameters,this._drawParameters),d.setViewport(0,0,C,O),d.screen.draw(),y.release();const M=this.fboCache.acquire(C,O,m.SSAO,0);return d.bindFramebuffer(M.fbo),d.setViewport(0,0,v,A),d.setClearColor(1,1,1,0),d.clear(16384),this._drawParameters.colorTexture=V.getTexture(),n(this._drawParameters.blurSize,P/v,0),d.bindTechnique(p,b,this._passParameters,this._drawParameters),d.setViewport(0,0,C,O),d.screen.draw(),d.setViewport4fv(_.fullViewport),V.release(),j<1&&this.requestRender(2),M}};e([a()],g.prototype,"consumes",void 0),e([a()],g.prototype,"produces",void 0),e([a({constructOnly:!0})],g.prototype,"isEnabled",void 0),g=e([o("esri.views.3d.webgl-engine.effects.ssao.SSAO")],g);const x=.5;export{g as SSAO,P as blurSizePixels};
@@ -0,0 +1,5 @@
1
+ /*
2
+ All material copyright Esri, All Rights Reserved, unless otherwise specified.
3
+ See https://js.arcgis.com/5.0/esri/copyright.txt for details.
4
+ */
5
+ import"../../core/shaderLibrary/ScreenSpacePass.glsl.js";import"../../core/shaderLibrary/output/ReadDepth.glsl.js";import"../../core/shaderModules/Float2DrawUniform.js";import"../../core/shaderModules/FloatPassUniform.js";import"../../core/shaderModules/glsl.js";import"../../core/shaderModules/Texture2DDrawUniform.js";import"../../core/shaderModules/Texture2DPassUniform.js";import"../../../../webgl/ShaderBuilder.js";export{b as build}from"../../../../../chunks/SSAOBlur.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/5.0/esri/copyright.txt for details.
4
4
  */
5
- import{__decorate as e}from"tslib";import{subclass as r}from"../../../../../core/accessorSupport/decorators.js";import{ReloadableShader as s}from"../../core/shaderTechnique/ReloadableShader.js";import{ShaderTechnique as o}from"../../core/shaderTechnique/ShaderTechnique.js";import{S as i}from"../../../../../chunks/SSAOBlur.glsl.js";import{makePipelineState as t,defaultColorWrite as l}from"../../../../webgl/renderState.js";let c=class extends o{constructor(){super(...arguments),this.shader=new s(i,()=>import("../../shaders/SSAOBlur.glsl.js"))}initializePipeline(){return t({colorWrite:l})}};c=e([r("esri.views.3d.webgl-engine.effects.ssao.SSAOBlurTechnique")],c);export{c as SSAOBlurTechnique};
5
+ import{__decorate as e}from"tslib";import{subclass as r}from"../../../../../core/accessorSupport/decorators.js";import{ReloadableShader as s}from"../../core/shaderTechnique/ReloadableShader.js";import{ShaderTechnique as o}from"../../core/shaderTechnique/ShaderTechnique.js";import{S as i}from"../../../../../chunks/SSAOBlur.glsl.js";import{makePipelineState as t,defaultColorWrite as l}from"../../../../webgl/renderState.js";let c=class extends o{constructor(){super(...arguments),this.shader=new s(i,()=>import("./SSAOBlur.glsl.js"))}initializePipeline(){return t({colorWrite:l})}};c=e([r("esri.views.3d.webgl-engine.effects.ssao.SSAOBlurTechnique")],c);export{c as SSAOBlurTechnique};
@@ -2,4 +2,4 @@
2
2
  All material copyright Esri, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/5.0/esri/copyright.txt for details.
4
4
  */
5
- import{__decorate as e}from"tslib";import{subclass as r}from"../../../../../core/accessorSupport/decorators.js";import{ReloadableShader as s}from"../../core/shaderTechnique/ReloadableShader.js";import{ShaderTechnique as o}from"../../core/shaderTechnique/ShaderTechnique.js";import{S as i}from"../../../../../chunks/SSAO.glsl.js";import{makePipelineState as t,defaultColorWrite as c}from"../../../../webgl/renderState.js";let a=class extends o{constructor(){super(...arguments),this.shader=new s(i,()=>import("../../shaders/SSAO.glsl.js"))}initializePipeline(){return t({colorWrite:c})}};a=e([r("esri.views.3d.webgl-engine.effects.ssao.SSAOTechnique")],a);export{a as SSAOTechnique};
5
+ import{__decorate as e}from"tslib";import{subclass as r}from"../../../../../core/accessorSupport/decorators.js";import{ReloadableShader as s}from"../../core/shaderTechnique/ReloadableShader.js";import{ShaderTechnique as o}from"../../core/shaderTechnique/ShaderTechnique.js";import{S as i}from"../../../../../chunks/SSAO.glsl.js";import{makePipelineState as t,defaultColorWrite as c}from"../../../../webgl/renderState.js";let a=class extends o{constructor(){super(...arguments),this.shader=new s(i,()=>import("./SSAO.glsl.js"))}initializePipeline(){return t({colorWrite:c})}};a=e([r("esri.views.3d.webgl-engine.effects.ssao.SSAOTechnique")],a);export{a as SSAOTechnique};
@@ -2,4 +2,4 @@
2
2
  All material copyright Esri, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/5.0/esri/copyright.txt for details.
4
4
  */
5
- import{__decorate as t}from"tslib";import{watch as e}from"../../../../core/reactiveUtils.js";import{property as s,subclass as i}from"../../../../core/accessorSupport/decorators.js";import{set as a}from"../../../../core/libs/gl-matrix-2/math/vec2.js";import{subtract as r,length as n,scale as o,negate as l,dot as h,squaredLength as m,copy as p,floor as u}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as c,clone as d}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{set as f}from"../../../../core/libs/gl-matrix-2/math/vec4.js";import{create as _}from"../../../../geometry/support/plane.js";import{fromPoints as g}from"../../../../geometry/support/ray.js";import{Sphere as P}from"../../../../geometry/support/sphere.js";import{RenderNodeOutput as b}from"../../webgl.js";import{GaussianSplatTarget as C}from"../../layers/i3s/Intersector.js";import{GaussianSplatDataStore as v}from"../../support/gaussianSplatting/GaussianSplatDataStore.js";import w from"../../webgl/RenderNode.js";import{IntersectorResult as x}from"./IntersectorResult.js";import{G as y}from"../../../../chunks/GaussianSplat.glsl.js";import{G as S}from"../../../../chunks/GaussianSplatComposition.glsl.js";import{GaussianSplatCompositionTechnique as q}from"../shaders/GaussianSplatCompositionTechnique.js";import{G as j}from"../../../../chunks/GaussianSplatDepthComposition.glsl.js";import{GaussianSplatDepthCompositionTechnique as D}from"../shaders/GaussianSplatDepthCompositionTechnique.js";import{GaussianSplatTechnique as T}from"../shaders/GaussianSplatTechnique.js";import{GaussianSplatTechniqueConfiguration as G}from"../shaders/GaussianSplatTechniqueConfiguration.js";import{DepthStencilAttachment as A,ColorAttachment1 as F,PrimitiveType as R}from"../../../webgl/enums.js";var E;let H=class extends w{static{E=this}constructor(t){super(t),this.gaussianPosition=c(),this.intersectionRayDir=c(),this.intersectionPlane=_(),this._slicePlaneEnabled=!1,this._data=null,this.produces=b.OPAQUE,this.type=0,this.isGround=!1,this.layerViewUid="",this._passParameters=new y,this._compositionPassParameters=new S,this._depthCompositionPassParameters=new j,this._previousCameraPosition=c(),this._previousCameraDirection=c(),this.fadeHelper=null,this._configuration=new G(t.view.state.isGlobal)}async initialize(){this._data=new v(this),this.view.sceneIntersectionHelper.addIntersectionHandler(this),this.addHandles([e(()=>this.view.state.camera,()=>this._onCameraChange())])}precompile(){this._configuration.alphaCutoff=this.view.qualitySettings.gaussianSplat.minimumOpacity,this._configuration.terrainDepthTest=this.bindParameters.terrainDepthTest,this._configuration.fadingEnabled=this.fadeHelper.fadingEnabled,this.techniques.precompile(T,this._configuration),this.techniques.precompile(q),this.techniques.precompile(D)}render(t){const e=t.find(({name:t})=>t===b.OPAQUE);if(this._handleFading(),!this._data.visibleGaussians||!this._data.orderTexture.texture||!this._data.textureAtlas.texture)return e;const s=this.techniques.get(T,this._configuration),i=this.techniques.get(q),a=this.techniques.get(D);if(!s.compiled||!a.compiled||!i.compiled)return this.requestRender(1),e;const{fullWidth:r,fullHeight:n}=this.bindParameters.camera;this._prepareParameters(n,r);const o=this.renderingContext,l=this.fboCache,h=l.acquire(r,n,"gaussian color output"),m=e.getAttachment(A);h.attachDepth(m),this._renderGaussianColorAndDepth(h,s);const p=l.acquire(r,n,this.produces);return this._depthCompositionPassParameters.splatDepth=h.getTexture(F),p.attachDepth(e.getAttachment(A)),o.bindFramebuffer(p.fbo),o.bindTechnique(a,this.bindParameters,this._depthCompositionPassParameters),o.screen.draw(),this._compositionPassParameters.color=e.getTexture(),this._compositionPassParameters.splatColor=h.getTexture(),o.bindFramebuffer(p.fbo),o.bindTechnique(i,this.bindParameters,this._compositionPassParameters),o.screen.draw(),h.release(),p}intersect(t,e,s,i){const{gaussianPosition:a,intersectionRayDir:p,intersectionPlane:u,layerViewUid:_}=this,b=g(s,i);r(p,i,s);const v=1/n(p);o(p,p,v);const w=c();l(w,p),f(u,p[0],p[1],p[2],-h(p,s));const y=new I,S=new I,q=new Array;this._data.visibleGaussianTiles.forEach(r=>{const{maxScale:n}=r,o=r.obb.minimumDistancePlane(u),l=r.obb.maximumDistancePlane(u),c=l<0,f=null!=y.dist&&null!=S.dist&&y.dist<o*v&&S.dist>l*v;if(c||f)return;if(!new P(r.obb.center,r.obb.radius+n).intersectRay(b,null))return;if(!r.obb.intersectRay(s,p,n))return;const{positions:g,squaredScales:C,gaussianAtlasIndices:x}=r,j=x.length;for(let u=0;u<j;u++){const r=3*u;a[0]=g[r]-s[0],a[1]=g[r+1]-s[1],a[2]=g[r+2]-s[2];const n=C[u],o=h(a,p),l=o*o;if(m(a)-l>n)continue;const c=o*v,f=t=>(t.point=t.point?t.point.fill(a[0],a[1],a[2]):d(a),t.dist=c,t.normal=w,t.layerViewUid=_,t);if((null==y.dist||c<y.dist)&&(null==e||e(s,i,c))&&f(y),0!==t.options.store&&(null==S.dist||c>S.dist)&&(null==e||e(s,i,c))&&f(S),2===t.options.store&&(null==e||e(s,i,c))){const t=new I;q.push(f(t))}}});const j=(t,e)=>{const{layerViewUid:s}=e,i=new C(e.point,s);t.set(0,i,e.dist,e.normal)};if(M(y)){const e=t.results.min;(null==e.distance||y.dist<e.distance)&&j(e,y)}if(M(S)&&0!==t.options.store){const e=t.results.max;(null==e.distance||S.dist>e.distance)&&j(e,S)}if(2===t.options.store)for(const r of q){const e=new x(b);j(e,r),t.results.all.push(e)}}get slicePlaneEnabled(){return this._slicePlaneEnabled}set slicePlaneEnabled(t){this._slicePlaneEnabled!==t&&(this._slicePlaneEnabled=t,this.requestRender(1))}get data(){return this._data}destroy(){this._data.destroy(),super.destroy()}_onCameraChange(){const t=this.view.state.camera.eye,e=this.view.state.camera.ray.direction,s=.001;(Math.abs(t[0]-this._previousCameraPosition[0])>s||Math.abs(t[1]-this._previousCameraPosition[1])>s||Math.abs(t[2]-this._previousCameraPosition[2])>s||Math.abs(e[0]-this._previousCameraDirection[0])>s||Math.abs(e[1]-this._previousCameraDirection[1])>s||Math.abs(e[2]-this._previousCameraDirection[2])>s)&&(p(this._previousCameraPosition,t),p(this._previousCameraDirection,e),this._data.requestSort())}_prepareParameters(t,e){this._passParameters.splatOrder=this._data.orderTexture.texture,this._passParameters.splatFading=this._data.fadingTexture.texture,this._passParameters.splatAtlas=this._data.textureAtlas.texture;const s=Math.tan(.5*this.camera.fovY),i=s/t*e;a(this._passParameters.tanFov,i,s),this._passParameters.focalLength=t/(2*s);const r=this.view.qualitySettings.gaussianSplat.minimumSplatPixelRadius;this._passParameters.minSplatRadius=r*Math.sqrt(e*t)/Math.sqrt(2073600),this._prepareHighPrecisionCameraPosition()}_renderGaussianColorAndDepth(t,e){const s=this.renderingContext;t.acquireColor(F,8,"gaussian depth output"),s.bindFramebuffer(t.fbo),s.setClearColor(0,0,0,0),s.clear(16384),this.renderingContext.bindTechnique(e,this.bindParameters,this._passParameters),this.renderingContext.drawArraysInstanced(R.TRIANGLE_STRIP,0,4,this._data.visibleGaussians)}_prepareHighPrecisionCameraPosition(){o(this._passParameters.tileCameraPosition,this.camera.eye,1/E.tileSize),u(this._passParameters.tileCameraPosition,this._passParameters.tileCameraPosition),o(this._passParameters.cameraDelta,this._passParameters.tileCameraPosition,E.tileSize),r(this._passParameters.cameraDelta,this.camera.eye,this._passParameters.cameraDelta)}_handleFading(){if(0===this.fadeHelper.numFadingTiles)return void(this._previousFrameStart=null);this._previousFrameStart??=this.view.stage.renderer.renderContext.time;const t=this.view.stage?.renderer.renderContext.time-this._previousFrameStart;this.fadeHelper.updateAllTileFading(t),this._previousFrameStart=this.view.stage.renderer.renderContext.time,this._data.fadingTexture.updateTexture(this._data.textureAtlas.pageAllocator.pageCount)}static{this.tileSize=2.048}};function M(t){return null!=t.dist&&null!=t.point}t([s({constructOnly:!0})],H.prototype,"fadeHelper",void 0),H=E=t([i("esri.views.3d.webgl-engine.lib.GaussianSplatRenderNode")],H);class I{constructor(){this.point=null,this.dist=null,this.normal=null,this.layerViewUid=""}}export{H as GaussianSplatRenderNode};
5
+ import{__decorate as t}from"tslib";import{watch as e}from"../../../../core/reactiveUtils.js";import{property as s,subclass as i}from"../../../../core/accessorSupport/decorators.js";import{set as a}from"../../../../core/libs/gl-matrix-2/math/vec2.js";import{subtract as r,length as n,scale as o,negate as l,dot as h,squaredLength as m,copy as p,floor as u}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as c,clone as d}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{set as f}from"../../../../core/libs/gl-matrix-2/math/vec4.js";import{create as _}from"../../../../geometry/support/plane.js";import{fromPoints as g}from"../../../../geometry/support/ray.js";import{Sphere as P}from"../../../../geometry/support/sphere.js";import{InternalRenderCategory as b}from"../../webgl.js";import{GaussianSplatTarget as C}from"../../layers/i3s/Intersector.js";import{GaussianSplatDataStore as v}from"../../support/gaussianSplatting/GaussianSplatDataStore.js";import w from"../../webgl/RenderNode.js";import{IntersectorResult as S}from"./IntersectorResult.js";import{G as x}from"../../../../chunks/GaussianSplat.glsl.js";import{G as y}from"../../../../chunks/GaussianSplatComposition.glsl.js";import{GaussianSplatCompositionTechnique as q}from"../shaders/GaussianSplatCompositionTechnique.js";import{G as T}from"../../../../chunks/GaussianSplatDepthComposition.glsl.js";import{GaussianSplatDepthCompositionTechnique as j}from"../shaders/GaussianSplatDepthCompositionTechnique.js";import{GaussianSplatTechnique as D}from"../shaders/GaussianSplatTechnique.js";import{GaussianSplatTechniqueConfiguration as G}from"../shaders/GaussianSplatTechniqueConfiguration.js";import{DepthStencilAttachment as A,ColorAttachment1 as F,PrimitiveType as R}from"../../../webgl/enums.js";var H;let E=class extends w{static{H=this}constructor(t){super(t),this.gaussianPosition=c(),this.intersectionRayDir=c(),this.intersectionPlane=_(),this._slicePlaneEnabled=!1,this._data=null,this.produces=b.GAUSSIAN_SPLAT,this.type=0,this.isGround=!1,this.layerViewUid="",this._passParameters=new x,this._compositionPassParameters=new y,this._depthCompositionPassParameters=new T,this._previousCameraPosition=c(),this._previousCameraDirection=c(),this.fadeHelper=null,this._configuration=new G(t.view.state.isGlobal)}async initialize(){this._data=new v(this),this.view.sceneIntersectionHelper.addIntersectionHandler(this),this.addHandles([e(()=>this.view.state.camera,()=>this._onCameraChange())])}precompile(){this._configuration.alphaCutoff=this.view.qualitySettings.gaussianSplat.minimumOpacity,this._configuration.terrainDepthTest=this.bindParameters.terrainDepthTest,this._configuration.fadingEnabled=this.fadeHelper.fadingEnabled,this.techniques.precompile(D,this._configuration),this.techniques.precompile(q),this.techniques.precompile(j)}render(t){const e=t.find(({name:t})=>t===b.GAUSSIAN_SPLAT);if(this._handleFading(),!this._data.visibleGaussians||!this._data.orderTexture.texture||!this._data.textureAtlas.texture)return e;const s=this.techniques.get(D,this._configuration),i=this.techniques.get(q),a=this.techniques.get(j);if(!s.compiled||!a.compiled||!i.compiled)return this.requestRender(1),e;const{fullWidth:r,fullHeight:n}=this.bindParameters.camera;this._prepareParameters(n,r);const o=this.renderingContext,l=this.fboCache,h=l.acquire(r,n,"gaussian color output"),m=e.getAttachment(A);h.attachDepth(m),this._renderGaussianColorAndDepth(h,s);const p=l.acquire(r,n,this.produces);return this._depthCompositionPassParameters.splatDepth=h.getTexture(F),p.attachDepth(e.getAttachment(A)),o.bindFramebuffer(p.fbo),o.bindTechnique(a,this.bindParameters,this._depthCompositionPassParameters),o.screen.draw(),this._compositionPassParameters.color=e.getTexture(),this._compositionPassParameters.splatColor=h.getTexture(),o.bindFramebuffer(p.fbo),o.bindTechnique(i,this.bindParameters,this._compositionPassParameters),o.screen.draw(),h.release(),p}intersect(t,e,s,i){const{gaussianPosition:a,intersectionRayDir:p,intersectionPlane:u,layerViewUid:_}=this,b=g(s,i);r(p,i,s);const v=1/n(p);o(p,p,v);const w=c();l(w,p),f(u,p[0],p[1],p[2],-h(p,s));const x=new M,y=new M,q=new Array;this._data.visibleGaussianTiles.forEach(r=>{const{maxScale:n}=r,o=r.obb.minimumDistancePlane(u),l=r.obb.maximumDistancePlane(u),c=l<0,f=null!=x.dist&&null!=y.dist&&x.dist<o*v&&y.dist>l*v;if(c||f)return;if(!new P(r.obb.center,r.obb.radius+n).intersectRay(b,null))return;if(!r.obb.intersectRay(s,p,n))return;const{positions:g,squaredScales:C,gaussianAtlasIndices:S}=r,T=S.length;for(let u=0;u<T;u++){const r=3*u;a[0]=g[r]-s[0],a[1]=g[r+1]-s[1],a[2]=g[r+2]-s[2];const n=C[u],o=h(a,p),l=o*o;if(m(a)-l>n)continue;const c=o*v,f=t=>(t.point=t.point?t.point.fill(a[0],a[1],a[2]):d(a),t.dist=c,t.normal=w,t.layerViewUid=_,t);if((null==x.dist||c<x.dist)&&(null==e||e(s,i,c))&&f(x),0!==t.options.store&&(null==y.dist||c>y.dist)&&(null==e||e(s,i,c))&&f(y),2===t.options.store&&(null==e||e(s,i,c))){const t=new M;q.push(f(t))}}});const T=(t,e)=>{const{layerViewUid:s}=e,i=new C(e.point,s);t.set(0,i,e.dist,e.normal)};if(I(x)){const e=t.results.min;(null==e.distance||x.dist<e.distance)&&T(e,x)}if(I(y)&&0!==t.options.store){const e=t.results.max;(null==e.distance||y.dist>e.distance)&&T(e,y)}if(2===t.options.store)for(const r of q){const e=new S(b);T(e,r),t.results.all.push(e)}}get slicePlaneEnabled(){return this._slicePlaneEnabled}set slicePlaneEnabled(t){this._slicePlaneEnabled!==t&&(this._slicePlaneEnabled=t,this.requestRender(1))}get data(){return this._data}destroy(){this._data.destroy(),super.destroy()}_onCameraChange(){const t=this.view.state.camera.eye,e=this.view.state.camera.ray.direction,s=.001;(Math.abs(t[0]-this._previousCameraPosition[0])>s||Math.abs(t[1]-this._previousCameraPosition[1])>s||Math.abs(t[2]-this._previousCameraPosition[2])>s||Math.abs(e[0]-this._previousCameraDirection[0])>s||Math.abs(e[1]-this._previousCameraDirection[1])>s||Math.abs(e[2]-this._previousCameraDirection[2])>s)&&(p(this._previousCameraPosition,t),p(this._previousCameraDirection,e),this._data.requestSort())}_prepareParameters(t,e){this._passParameters.splatOrder=this._data.orderTexture.texture,this._passParameters.splatFading=this._data.fadingTexture.texture,this._passParameters.splatAtlas=this._data.textureAtlas.texture;const s=Math.tan(.5*this.camera.fovY),i=s/t*e;a(this._passParameters.tanFov,i,s),this._passParameters.focalLength=t/(2*s);const r=this.view.qualitySettings.gaussianSplat.minimumSplatPixelRadius;this._passParameters.minSplatRadius=r*Math.sqrt(e*t)/Math.sqrt(2073600),this._prepareHighPrecisionCameraPosition()}_renderGaussianColorAndDepth(t,e){const s=this.renderingContext;t.acquireColor(F,8,"gaussian depth output"),s.bindFramebuffer(t.fbo),s.setClearColor(0,0,0,0),s.clear(16384),this.renderingContext.bindTechnique(e,this.bindParameters,this._passParameters),this.renderingContext.drawArraysInstanced(R.TRIANGLE_STRIP,0,4,this._data.visibleGaussians)}_prepareHighPrecisionCameraPosition(){o(this._passParameters.tileCameraPosition,this.camera.eye,1/H.tileSize),u(this._passParameters.tileCameraPosition,this._passParameters.tileCameraPosition),o(this._passParameters.cameraDelta,this._passParameters.tileCameraPosition,H.tileSize),r(this._passParameters.cameraDelta,this.camera.eye,this._passParameters.cameraDelta)}_handleFading(){if(0===this.fadeHelper.numFadingTiles)return void(this._previousFrameStart=null);this._previousFrameStart??=this.view.stage.renderer.renderContext.time;const t=this.view.stage?.renderer.renderContext.time-this._previousFrameStart;this.fadeHelper.updateAllTileFading(t),this._previousFrameStart=this.view.stage.renderer.renderContext.time,this._data.fadingTexture.updateTexture(this._data.textureAtlas.pageAllocator.pageCount)}static{this.tileSize=2.048}};function I(t){return null!=t.dist&&null!=t.point}t([s()],E.prototype,"produces",void 0),t([s({constructOnly:!0})],E.prototype,"fadeHelper",void 0),E=H=t([i("esri.views.3d.webgl-engine.lib.GaussianSplatRenderNode")],E);class M{constructor(){this.point=null,this.dist=null,this.normal=null,this.layerViewUid=""}}export{E as GaussianSplatRenderNode};
@@ -2,4 +2,4 @@
2
2
  All material copyright Esri, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/5.0/esri/copyright.txt for details.
4
4
  */
5
- import{set as t,subtract as n,normalize as o,copy as e,scale as s,add as r,cross as l,transformMat4 as h,dot as u}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{fromValues as a,clone as i,create as c}from"../../../../core/libs/gl-matrix-2/factories/vec3f32.js";import{create as p,clone as f,fromValues as w}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{newDoubleArray as g}from"../../../../geometry/support/DoubleArray.js";import{newFloatArray as m,floatArrayFrom as M}from"../../../../geometry/support/FloatArray.js";import{getContinuousIndexArray as A,getZeroIndexArray as y}from"../../../../geometry/support/Indices.js";import{create as b,fromPositionAndNormal as j,intersectRay as d}from"../../../../geometry/support/plane.js";import{wrap as v}from"../../../../geometry/support/ray.js";import{timeStampsToAttribute as I,numTimeStampValuesPerVertex as P}from"../../support/engineContent/line.js";import{Attribute as x}from"./Attribute.js";import{scale as D,length as z,normalize as S,add as q}from"./bufferVectorMath.js";import{Geometry as C}from"./Geometry.js";import{assert as F}from"./Util.js";import{getHUDMaterialBaseInstance as O}from"../materials/HUDMaterialBaseInstance.js";const U=[[-.5,-.5,.5],[.5,-.5,.5],[.5,.5,.5],[-.5,.5,.5],[-.5,-.5,-.5],[.5,-.5,-.5],[.5,.5,-.5],[-.5,.5,-.5]],V=[0,0,1,-1,0,0,1,0,0,0,-1,0,0,1,0,0,0,-1],B=[0,0,1,0,1,1,0,1],G=[0,1,2,2,3,0,4,0,3,3,7,4,1,5,6,6,2,1,1,0,4,4,5,1,3,2,6,6,7,3,5,4,7,7,6,5],H=new Array(36);for(let Pt=0;Pt<6;Pt++)for(let t=0;t<6;t++)H[6*Pt+t]=Pt;const k=new Array(36);for(let Pt=0;Pt<6;Pt++)k[6*Pt]=0,k[6*Pt+1]=1,k[6*Pt+2]=2,k[6*Pt+3]=2,k[6*Pt+4]=3,k[6*Pt+5]=0;function E(t,n){Array.isArray(n)||(n=[n,n,n]);const o=new Array(24);for(let e=0;e<8;e++)o[3*e]=U[e][0]*n[0],o[3*e+1]=U[e][1]*n[1],o[3*e+2]=U[e][2]*n[2];return new C(t,[["position",new x(o,G,3,!0)],["normal",new x(V,H,3)],["uv0",new x(B,k,2)]])}const J=[[-.5,0,-.5],[.5,0,-.5],[.5,0,.5],[-.5,0,.5],[0,-.5,0],[0,.5,0]],K=[0,1,-1,1,1,0,0,1,1,-1,1,0,0,-1,-1,1,-1,0,0,-1,1,-1,-1,0],L=[5,1,0,5,2,1,5,3,2,5,0,3,4,0,1,4,1,2,4,2,3,4,3,0],N=[0,0,0,1,1,1,2,2,2,3,3,3,4,4,4,5,5,5,6,6,6,7,7,7];function Q(t,n){Array.isArray(n)||(n=[n,n,n]);const o=new Array(18);for(let e=0;e<6;e++)o[3*e]=J[e][0]*n[0],o[3*e+1]=J[e][1]*n[1],o[3*e+2]=J[e][2]*n[2];return new C(t,[["position",new x(o,L,3,!0)],["normal",new x(K,N,3)]])}const R=a(-.5,0,-.5),T=a(.5,0,-.5),W=a(0,0,.5),X=a(0,.5,0),Y=c(),Z=c(),$=c(),_=c(),tt=c();n(Y,R,X),n(Z,R,T),l($,Y,Z),o($,$),n(Y,T,X),n(Z,T,W),l(_,Y,Z),o(_,_),n(Y,W,X),n(Z,W,R),l(tt,Y,Z),o(tt,tt);const nt=[R,T,W,X],ot=[0,-1,0,$[0],$[1],$[2],_[0],_[1],_[2],tt[0],tt[1],tt[2]],et=[0,1,2,3,1,0,3,2,1,3,0,2],st=[0,0,0,1,1,1,2,2,2,3,3,3];function rt(t,n){Array.isArray(n)||(n=[n,n,n]);const o=new Array(12);for(let e=0;e<4;e++)o[3*e]=nt[e][0]*n[0],o[3*e+1]=nt[e][1]*n[1],o[3*e+2]=nt[e][2]*n[2];return new C(t,[["position",new x(o,et,3,!0)],["normal",new x(ot,st,3)]])}function lt(t,n,o,e,s={uv:!0}){const r=-Math.PI,l=2*Math.PI,h=-Math.PI/2,u=Math.PI,a=Math.max(3,Math.floor(o)),i=Math.max(2,Math.floor(e)),c=(a+1)*(i+1),p=m(3*c),f=m(3*c),w=m(2*c),g=[];let M=0;for(let m=0;m<=i;m++){const t=[],o=m/i,e=h+o*u,s=Math.cos(e);for(let h=0;h<=a;h++){const u=h/a,i=r+u*l,c=Math.cos(i)*s,g=Math.sin(e),m=-Math.sin(i)*s;p[3*M]=c*n,p[3*M+1]=g*n,p[3*M+2]=m*n,f[3*M]=c,f[3*M+1]=g,f[3*M+2]=m,w[2*M]=u,w[2*M+1]=o,t.push(M),++M}g.push(t)}const A=new Array;for(let m=0;m<i;m++)for(let t=0;t<a;t++){const n=g[m][t],o=g[m][t+1],e=g[m+1][t+1],s=g[m+1][t];0===m?(A.push(n),A.push(e),A.push(s)):m===i-1?(A.push(n),A.push(o),A.push(e)):(A.push(n),A.push(o),A.push(e),A.push(e),A.push(s),A.push(n))}const b=[["position",new x(p,A,3,!0)],["normal",new x(f,A,3,!0)]];return s.uv&&b.push(["uv0",new x(w,A,2,!0)]),s.offset&&(b[0][0]="offset",b.push(["position",new x(Float64Array.from(s.offset),y(A.length),3,!0)])),new C(t,b)}function ht(t,n,o,e){const s=ut(n,o,e);return new C(t,s)}function ut(t,n,o){const e=t;let s,r;if(o)s=[0,-1,0,1,0,0,0,0,1,-1,0,0,0,0,-1,0,1,0],r=[0,1,2,0,2,3,0,3,4,0,4,1,1,5,2,2,5,3,3,5,4,4,5,1];else{const t=e*(1+Math.sqrt(5))/2;s=[-e,t,0,e,t,0,-e,-t,0,e,-t,0,0,-e,t,0,e,t,0,-e,-t,0,e,-t,t,0,-e,t,0,e,-t,0,-e,-t,0,e],r=[0,11,5,0,5,1,0,1,7,0,7,10,0,10,11,1,5,9,5,11,4,11,10,2,10,7,6,7,1,8,3,9,4,3,4,2,3,2,6,3,6,8,3,8,9,4,9,5,2,4,11,6,2,10,8,6,7,9,8,1]}for(let a=0;a<s.length;a+=3)D(s,a,t/z(s,a));let l={};function h(n,o){n>o&&([n,o]=[o,n]);const e=n.toString()+"."+o.toString();if(l[e])return l[e];let r=s.length;return s.length+=3,q(s,3*n,s,3*o,s,r),D(s,r,t/z(s,r)),r/=3,l[e]=r,r}for(let a=0;a<n;a++){const t=r.length,n=new Array(4*t);for(let o=0;o<t;o+=3){const t=r[o],e=r[o+1],s=r[o+2],l=h(t,e),u=h(e,s),a=h(s,t),i=4*o;n[i]=t,n[i+1]=l,n[i+2]=a,n[i+3]=e,n[i+4]=u,n[i+5]=l,n[i+6]=s,n[i+7]=a,n[i+8]=u,n[i+9]=l,n[i+10]=u,n[i+11]=a}r=n,l={}}const u=M(s);for(let a=0;a<u.length;a+=3)S(u,a);return[["position",new x(M(s),r,3,!0)],["normal",new x(u,r,3,!0)]]}function at(t,{normal:n,position:o,color:e,rotation:s,size:r,centerOffsetAndDistance:l,uvi:h,featureAttribute:u,olidColor:a=null}={}){const i=o?f(o):p(),c=n?f(n):w(0,0,1),g=e?[e[0],e[1],e[2],e.length>3?e[3]:255]:[255,255,255,255],m=null!=r&&2===r.length?r:[1,1],M=null!=s?[s]:[0],A=y(1),b=[["position",new x(i,A,3,!0)],["normal",new x(c,A,3,!0)],["color",new x(g,A,4,!0)],["size",new x(m,A,2)],["rotation",new x(M,A,1,!0)]];if(h&&b.push(["uvi",new x(h,A,h.length)]),null!=l){const t=[l[0],l[1],l[2],l[3]];b.push(["centerOffsetAndDistance",new x(t,A,4)])}if(u){const t=[u[0],u[1],u[2],u[3]];b.push(["featureAttribute",new x(t,A,4)])}return new C(t,b,null,1,a,void 0,O())}const it=[[-1,-1,0],[1,-1,0],[1,1,0],[-1,1,0]];function ct(t,n=it){const o=new Array(12);for(let a=0;a<4;a++)for(let t=0;t<3;t++)o[3*a+t]=n[a][t];const e=[0,1,2,2,3,0],s=[0,0,1],r=[0,0,0,0,0,0],l=[0,0,1,0,1,1,0,1],h=[255,255,255,255],u=[["position",new x(o,e,3,!0)],["normal",new x(s,r,3,!0)],["uv0",new x(l,e,2,!0)],["color",new x(h,r,4,!0)]];return new C(t,u)}function pt(t,n,o,e,s=!0,r=!0){let l=0;const h=n,u=t;let i=a(0,l,0),c=a(0,l+u,0),p=a(0,-1,0),f=a(0,1,0);e&&(l=u,c=a(0,0,0),i=a(0,l,0),p=a(0,1,0),f=a(0,-1,0));const w=[c,i],g=[p,f],M=o+2,A=Math.sqrt(u*u+h*h);if(e)for(let m=o-1;m>=0;m--){const t=m*(2*Math.PI/o),n=a(Math.cos(t)*h,l,Math.sin(t)*h);w.push(n);const e=a(u*Math.cos(t)/A,-h/A,u*Math.sin(t)/A);g.push(e)}else for(let m=0;m<o;m++){const t=m*(2*Math.PI/o),n=a(Math.cos(t)*h,l,Math.sin(t)*h);w.push(n);const e=a(u*Math.cos(t)/A,h/A,u*Math.sin(t)/A);g.push(e)}const y=new Array,b=new Array;if(s){for(let t=3;t<w.length;t++)y.push(1),y.push(t-1),y.push(t),b.push(0),b.push(0),b.push(0);y.push(w.length-1),y.push(2),y.push(1),b.push(0),b.push(0),b.push(0)}if(r){for(let t=3;t<w.length;t++)y.push(t),y.push(t-1),y.push(0),b.push(t),b.push(t-1),b.push(1);y.push(0),y.push(2),y.push(w.length-1),b.push(1),b.push(2),b.push(g.length-1)}const j=m(3*M);for(let a=0;a<M;a++)j[3*a]=w[a][0],j[3*a+1]=w[a][1],j[3*a+2]=w[a][2];const d=m(3*M);for(let a=0;a<M;a++)d[3*a]=g[a][0],d[3*a+1]=g[a][1],d[3*a+2]=g[a][2];return[["position",new x(j,y,3,!0)],["normal",new x(d,b,3,!0)]]}function ft(t,n,o,e,s,r=!0,l=!0){return new C(t,pt(n,o,e,s,r,l))}function wt(n,e,h,p,f,w,g){const M=f?i(f):a(1,0,0),A=w?i(w):a(0,0,0);g??=!0;const y=c();o(y,M);const b=c();s(b,y,Math.abs(e));const j=c();s(j,b,-.5),r(j,j,A);const d=a(0,1,0);Math.abs(1-u(y,d))<.2&&t(d,0,0,1);const v=c();l(v,y,d),o(v,v),l(d,v,y);const I=2*p+(g?2:0),P=p+(g?2:0),D=m(3*I),z=m(3*P),S=m(2*I),q=new Array(3*p*(g?4:2)),F=new Array(3*p*(g?4:2));g&&(D[3*(I-2)]=j[0],D[3*(I-2)+1]=j[1],D[3*(I-2)+2]=j[2],S[2*(I-2)]=0,S[2*(I-2)+1]=0,D[3*(I-1)]=D[3*(I-2)]+b[0],D[3*(I-1)+1]=D[3*(I-2)+1]+b[1],D[3*(I-1)+2]=D[3*(I-2)+2]+b[2],S[2*(I-1)]=1,S[2*(I-1)+1]=1,z[3*(P-2)]=-y[0],z[3*(P-2)+1]=-y[1],z[3*(P-2)+2]=-y[2],z[3*(P-1)]=y[0],z[3*(P-1)+1]=y[1],z[3*(P-1)+2]=y[2]);const O=(t,n,o)=>{q[t]=n,F[t]=o};let U=0;const V=c(),B=c();for(let t=0;t<p;t++){const n=t*(2*Math.PI/p);s(V,d,Math.sin(n)),s(B,v,Math.cos(n)),r(V,V,B),z[3*t]=V[0],z[3*t+1]=V[1],z[3*t+2]=V[2],s(V,V,h),r(V,V,j),D[3*t]=V[0],D[3*t+1]=V[1],D[3*t+2]=V[2],S[2*t]=t/p,S[2*t+1]=0,D[3*(t+p)]=D[3*t]+b[0],D[3*(t+p)+1]=D[3*t+1]+b[1],D[3*(t+p)+2]=D[3*t+2]+b[2],S[2*(t+p)]=t/p,S[2*t+1]=1;const o=(t+1)%p;O(U++,t,t),O(U++,t+p,t),O(U++,o,o),O(U++,o,o),O(U++,t+p,t),O(U++,o+p,o)}if(g){for(let t=0;t<p;t++){const n=(t+1)%p;O(U++,I-2,P-2),O(U++,t,P-2),O(U++,n,P-2)}for(let t=0;t<p;t++){const n=(t+1)%p;O(U++,t+p,P-1),O(U++,I-1,P-1),O(U++,n+p,P-1)}}const G=[["position",new x(D,q,3,!0)],["normal",new x(z,F,3,!0)],["uv0",new x(S,q,2,!0)]];return new C(n,G)}function gt(t,n,o,e,s,r){e=e||10,s=null==s||s,F(n.length>1);const l=[[0,0,0]],h=[],u=[];for(let a=0;a<e;a++){h.push([0,-a-1,-(a+1)%e-1]);const t=a/e*2*Math.PI;u.push([Math.cos(t)*o,Math.sin(t)*o])}return mt(t,u,n,l,h,s,r)}function mt(h,u,i,c,f,w,g=a(0,0,0)){const M=u.length,A=m(i.length*M*3+(6*c.length||0)),y=m(i.length*M*3+(c?6:0)),I=new Array,P=new Array;let D=0,z=0;const S=p(),q=p(),F=p(),O=p(),U=p(),V=p(),B=p(),G=p(),H=p(),k=p(),E=p(),J=p(),K=p(),L=b();t(H,0,1,0),n(q,i[1],i[0]),o(q,q),w?(r(G,i[0],g),o(F,G)):t(F,0,0,1),dt(q,F,H,H,U,F,vt),e(O,F),e(J,U);for(let t=0;t<c.length;t++)s(V,U,c[t][0]),s(G,F,c[t][2]),r(V,V,G),r(V,V,i[0]),A[D++]=V[0],A[D++]=V[1],A[D++]=V[2];y[z++]=-q[0],y[z++]=-q[1],y[z++]=-q[2];for(let t=0;t<f.length;t++)I.push(f[t][0]>0?f[t][0]:-f[t][0]-1+c.length),I.push(f[t][1]>0?f[t][1]:-f[t][1]-1+c.length),I.push(f[t][2]>0?f[t][2]:-f[t][2]-1+c.length),P.push(0),P.push(0),P.push(0);let N=c.length;const Q=c.length-1;for(let t=0;t<i.length;t++){let h=!1;if(t>0){e(S,q),t<i.length-1?(n(q,i[t+1],i[t]),o(q,q)):h=!0,r(k,S,q),o(k,k),r(E,i[t-1],O),j(i[t],k,L);d(L,v(E,S),G)?(n(G,G,i[t]),o(F,G),l(U,k,F),o(U,U)):dt(k,O,J,H,U,F,vt),e(O,F),e(J,U)}w&&(r(G,i[t],g),o(K,G));for(let n=0;n<M;n++)if(s(V,U,u[n][0]),s(G,F,u[n][1]),r(V,V,G),o(B,V),y[z++]=B[0],y[z++]=B[1],y[z++]=B[2],r(V,V,i[t]),A[D++]=V[0],A[D++]=V[1],A[D++]=V[2],!h){const t=(n+1)%M;I.push(N+n),I.push(N+M+n),I.push(N+t),I.push(N+t),I.push(N+M+n),I.push(N+M+t);for(let n=0;n<6;n++){const t=I.length-6;P.push(I[t+n]-Q)}}N+=M}const R=i[i.length-1];for(let t=0;t<c.length;t++)s(V,U,c[t][0]),s(G,F,c[t][1]),r(V,V,G),r(V,V,R),A[D++]=V[0],A[D++]=V[1],A[D++]=V[2];const T=z/3;y[z++]=q[0],y[z++]=q[1],y[z++]=q[2];const W=N-M;for(let t=0;t<f.length;t++)I.push(f[t][0]>=0?N+f[t][0]:-f[t][0]-1+W),I.push(f[t][2]>=0?N+f[t][2]:-f[t][2]-1+W),I.push(f[t][1]>=0?N+f[t][1]:-f[t][1]-1+W),P.push(T),P.push(T),P.push(T);const X=[["position",new x(A,I,3,!0)],["normal",new x(y,P,3,!0)]];return new C(h,X)}function Mt(t,n,o,e,s){const r=g(3*n.length),l=new Array(2*(n.length-1));let h=0,u=0;for(let i=0;i<n.length;i++){for(let t=0;t<3;t++)r[h++]=n[i][t];i>0&&(l[u++]=i-1,l[u++]=i)}const a=[["position",new x(r,l,3,!0)]];if(o&&o.length===n.length&&3===o[0].length){const t=m(3*o.length);let e=0;for(let s=0;s<n.length;s++)for(let n=0;n<3;n++)t[e++]=o[s][n];a.push(["normal",new x(t,l,3,!0)])}if(e&&a.push(["color",new x(e,A(e.length/4),4)]),s&&s.length===n.length){const t=I(s,1);a.push(["timeStamps",new x(t,l,P,!0)])}return new C(t,a,null,2)}function At(t,n,o,e,s,r=0){const l=new Array(18),h=[[-o,r,s/2],[e,r,s/2],[0,n+r,s/2],[-o,r,-s/2],[e,r,-s/2],[0,n+r,-s/2]],u=[0,1,2,3,0,2,2,5,3,1,4,5,5,2,1,1,0,3,3,4,1,4,3,5];for(let a=0;a<6;a++)l[3*a]=h[a][0],l[3*a+1]=h[a][1],l[3*a+2]=h[a][2];return new C(t,[["position",new x(l,u,3,!0)]])}function yt(n,o){const e=n.getMutableAttribute("position").data;for(let s=0;s<e.length;s+=3){const n=e[s],r=e[s+1],l=e[s+2];t(It,n,r,l),h(It,It,o),e[s]=It[0],e[s+1]=It[1],e[s+2]=It[2]}}function bt(t,n=t){const o=t.attributes,e=o.get("position").data,s=o.get("normal").data;if(s){const t=n.getMutableAttribute("normal").data;for(let n=0;n<s.length;n+=3){const o=s[n+1];t[n+1]=-s[n+2],t[n+2]=o}}if(e){const t=n.getMutableAttribute("position").data;for(let n=0;n<e.length;n+=3){const o=e[n+1];t[n+1]=-e[n+2],t[n+2]=o}}}function jt(t,n,e,s,r){return!(Math.abs(u(n,t))>r)&&(l(e,t,n),o(e,e),l(s,e,t),o(s,s),!0)}function dt(t,n,o,e,s,r,l){return jt(t,n,s,r,l)||jt(t,o,s,r,l)||jt(t,e,s,r,l)}const vt=.99619469809,It=p();export{bt as cgToGIS,E as createBoxGeometry,ft as createConeGeometry,pt as createConeGeometryData,wt as createCylinderGeometry,Q as createDiamondGeometry,At as createExtrudedTriangle,mt as createPathExtrusionGeometry,at as createPointGeometry,ut as createPolySphereData,ht as createPolySphereGeometry,Mt as createPolylineGeometry,lt as createSphereGeometry,ct as createSquareGeometry,rt as createTetrahedronGeometry,gt as createTubeGeometry,dt as makeOrthoBasisDirUpFallback,yt as transformInPlace};
5
+ import{set as t,subtract as n,normalize as o,copy as e,scale as s,add as r,cross as l,transformMat4 as h,dot as u}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{fromValues as a,clone as i,create as c}from"../../../../core/libs/gl-matrix-2/factories/vec3f32.js";import{create as p,clone as f,fromValues as w}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{newDoubleArray as g}from"../../../../geometry/support/DoubleArray.js";import{newFloatArray as m,floatArrayFrom as M}from"../../../../geometry/support/FloatArray.js";import{getContinuousIndexArray as A,getZeroIndexArray as y}from"../../../../geometry/support/Indices.js";import{create as b,fromPositionAndNormal as j,intersectRay as d}from"../../../../geometry/support/plane.js";import{wrap as v}from"../../../../geometry/support/ray.js";import{timeStampsToAttribute as I,numTimeStampValuesPerVertex as P}from"../../support/engineContent/line.js";import{Attribute as x}from"./Attribute.js";import{scale as D,length as z,normalize as S,add as q}from"./bufferVectorMath.js";import{Geometry as C}from"./Geometry.js";import{assert as F}from"./Util.js";import{getHUDMaterialBaseInstance as O}from"../materials/HUDMaterialBaseInstance.js";const U=[[-.5,-.5,.5],[.5,-.5,.5],[.5,.5,.5],[-.5,.5,.5],[-.5,-.5,-.5],[.5,-.5,-.5],[.5,.5,-.5],[-.5,.5,-.5]],V=[0,0,1,-1,0,0,1,0,0,0,-1,0,0,1,0,0,0,-1],B=[0,0,1,0,1,1,0,1],G=[0,1,2,2,3,0,4,0,3,3,7,4,1,5,6,6,2,1,1,0,4,4,5,1,3,2,6,6,7,3,5,4,7,7,6,5],H=new Array(36);for(let Pt=0;Pt<6;Pt++)for(let t=0;t<6;t++)H[6*Pt+t]=Pt;const k=new Array(36);for(let Pt=0;Pt<6;Pt++)k[6*Pt]=0,k[6*Pt+1]=1,k[6*Pt+2]=2,k[6*Pt+3]=2,k[6*Pt+4]=3,k[6*Pt+5]=0;function E(t,n){Array.isArray(n)||(n=[n,n,n]);const o=new Array(24);for(let e=0;e<8;e++)o[3*e]=U[e][0]*n[0],o[3*e+1]=U[e][1]*n[1],o[3*e+2]=U[e][2]*n[2];return new C(t,[["position",new x(o,G,3,!0)],["normal",new x(V,H,3)],["uv0",new x(B,k,2)]])}const J=[[-.5,0,-.5],[.5,0,-.5],[.5,0,.5],[-.5,0,.5],[0,-.5,0],[0,.5,0]],K=[0,1,-1,1,1,0,0,1,1,-1,1,0,0,-1,-1,1,-1,0,0,-1,1,-1,-1,0],L=[5,1,0,5,2,1,5,3,2,5,0,3,4,0,1,4,1,2,4,2,3,4,3,0],N=[0,0,0,1,1,1,2,2,2,3,3,3,4,4,4,5,5,5,6,6,6,7,7,7];function Q(t,n){Array.isArray(n)||(n=[n,n,n]);const o=new Array(18);for(let e=0;e<6;e++)o[3*e]=J[e][0]*n[0],o[3*e+1]=J[e][1]*n[1],o[3*e+2]=J[e][2]*n[2];return new C(t,[["position",new x(o,L,3,!0)],["normal",new x(K,N,3)]])}const R=a(-.5,0,-.5),T=a(.5,0,-.5),W=a(0,0,.5),X=a(0,.5,0),Y=c(),Z=c(),$=c(),_=c(),tt=c();n(Y,R,X),n(Z,R,T),l($,Y,Z),o($,$),n(Y,T,X),n(Z,T,W),l(_,Y,Z),o(_,_),n(Y,W,X),n(Z,W,R),l(tt,Y,Z),o(tt,tt);const nt=[R,T,W,X],ot=[0,-1,0,$[0],$[1],$[2],_[0],_[1],_[2],tt[0],tt[1],tt[2]],et=[0,1,2,3,1,0,3,2,1,3,0,2],st=[0,0,0,1,1,1,2,2,2,3,3,3];function rt(t,n){Array.isArray(n)||(n=[n,n,n]);const o=new Array(12);for(let e=0;e<4;e++)o[3*e]=nt[e][0]*n[0],o[3*e+1]=nt[e][1]*n[1],o[3*e+2]=nt[e][2]*n[2];return new C(t,[["position",new x(o,et,3,!0)],["normal",new x(ot,st,3)]])}function lt(t,n,o,e,s={uv:!0}){const r=-Math.PI,l=2*Math.PI,h=-Math.PI/2,u=Math.PI,a=Math.max(3,Math.floor(o)),i=Math.max(2,Math.floor(e)),c=(a+1)*(i+1),p=m(3*c),f=m(3*c),w=m(2*c),g=[];let M=0;for(let m=0;m<=i;m++){const t=[],o=m/i,e=h+o*u,s=Math.cos(e);for(let h=0;h<=a;h++){const u=h/a,i=r+u*l,c=Math.cos(i)*s,g=Math.sin(e),m=-Math.sin(i)*s;p[3*M]=c*n,p[3*M+1]=g*n,p[3*M+2]=m*n,f[3*M]=c,f[3*M+1]=g,f[3*M+2]=m,w[2*M]=u,w[2*M+1]=o,t.push(M),++M}g.push(t)}const A=new Array;for(let m=0;m<i;m++)for(let t=0;t<a;t++){const n=g[m][t],o=g[m][t+1],e=g[m+1][t+1],s=g[m+1][t];0===m?(A.push(n),A.push(e),A.push(s)):m===i-1?(A.push(n),A.push(o),A.push(e)):(A.push(n),A.push(o),A.push(e),A.push(e),A.push(s),A.push(n))}const b=[["position",new x(p,A,3,!0)],["normal",new x(f,A,3,!0)]];return s.uv&&b.push(["uv0",new x(w,A,2,!0)]),s.offset&&(b[0][0]="offset",b.push(["position",new x(Float64Array.from(s.offset),y(A.length),3,!0)])),new C(t,b)}function ht(t,n,o,e){const s=ut(n,o,e);return new C(t,s)}function ut(t,n,o){const e=t;let s,r;if(o)s=[0,-1,0,1,0,0,0,0,1,-1,0,0,0,0,-1,0,1,0],r=[0,1,2,0,2,3,0,3,4,0,4,1,1,5,2,2,5,3,3,5,4,4,5,1];else{const t=e*(1+Math.sqrt(5))/2;s=[-e,t,0,e,t,0,-e,-t,0,e,-t,0,0,-e,t,0,e,t,0,-e,-t,0,e,-t,t,0,-e,t,0,e,-t,0,-e,-t,0,e],r=[0,11,5,0,5,1,0,1,7,0,7,10,0,10,11,1,5,9,5,11,4,11,10,2,10,7,6,7,1,8,3,9,4,3,4,2,3,2,6,3,6,8,3,8,9,4,9,5,2,4,11,6,2,10,8,6,7,9,8,1]}for(let a=0;a<s.length;a+=3)D(s,a,t/z(s,a));let l={};function h(n,o){n>o&&([n,o]=[o,n]);const e=n.toString()+"."+o.toString();if(l[e])return l[e];let r=s.length;return s.length+=3,q(s,3*n,s,3*o,s,r),D(s,r,t/z(s,r)),r/=3,l[e]=r,r}for(let a=0;a<n;a++){const t=r.length,n=new Array(4*t);for(let o=0;o<t;o+=3){const t=r[o],e=r[o+1],s=r[o+2],l=h(t,e),u=h(e,s),a=h(s,t),i=4*o;n[i]=t,n[i+1]=l,n[i+2]=a,n[i+3]=e,n[i+4]=u,n[i+5]=l,n[i+6]=s,n[i+7]=a,n[i+8]=u,n[i+9]=l,n[i+10]=u,n[i+11]=a}r=n,l={}}const u=M(s);for(let a=0;a<u.length;a+=3)S(u,a);return[["position",new x(M(s),r,3,!0)],["normal",new x(u,r,3,!0)]]}function at(t,{normal:n,position:o,color:e,rotation:s,size:r,centerOffsetAndDistance:l,uvi:h,featureAttribute:u,olidColor:a=null}={}){const i=o?f(o):p(),c=n?f(n):w(0,0,1),g=e?[e[0],e[1],e[2],e.length>3?e[3]:255]:[255,255,255,255],m=null!=r&&2===r.length?r:[1,1],M=null!=s?[s]:[0],A=y(1),b=[["position",new x(i,A,3,!0)],["normal",new x(c,A,3,!0)],["color",new x(g,A,4,!0)],["size",new x(m,A,2)],["rotation",new x(M,A,1,!0)]];if(h&&b.push(["uvi",new x(h,A,h.length)]),null!=l){const t=[l[0],l[1],l[2],l[3]];b.push(["centerOffsetAndDistance",new x(t,A,4)])}if(u){const t=[u[0],u[1],u[2],u[3]];b.push(["featureAttribute",new x(t,A,4)])}return new C(t,b,null,1,a,void 0,O())}const it=[[-1,-1,0],[1,-1,0],[1,1,0],[-1,1,0]];function ct(t,n=it){const o=new Array(12);for(let a=0;a<4;a++)for(let t=0;t<3;t++)o[3*a+t]=n[a][t];const e=[0,1,2,2,3,0],s=[0,0,1],r=[0,0,0,0,0,0],l=[0,0,1,0,1,1,0,1],h=[255,255,255,255],u=[["position",new x(o,e,3,!0)],["normal",new x(s,r,3,!0)],["uv0",new x(l,e,2,!0)],["color",new x(h,r,4,!0)]];return new C(t,u)}function pt(t,n,o,e,s=!0,r=!0){let l=0;const h=n,u=t;let i=a(0,l,0),c=a(0,l+u,0),p=a(0,-1,0),f=a(0,1,0);e&&(l=u,c=a(0,0,0),i=a(0,l,0),p=a(0,1,0),f=a(0,-1,0));const w=[c,i],g=[p,f],M=o+2,A=Math.sqrt(u*u+h*h);if(e)for(let m=o-1;m>=0;m--){const t=m*(2*Math.PI/o),n=a(Math.cos(t)*h,l,Math.sin(t)*h);w.push(n);const e=a(u*Math.cos(t)/A,-h/A,u*Math.sin(t)/A);g.push(e)}else for(let m=0;m<o;m++){const t=m*(2*Math.PI/o),n=a(Math.cos(t)*h,l,Math.sin(t)*h);w.push(n);const e=a(u*Math.cos(t)/A,h/A,u*Math.sin(t)/A);g.push(e)}const y=new Array,b=new Array;if(s){for(let t=3;t<w.length;t++)y.push(1),y.push(t-1),y.push(t),b.push(0),b.push(0),b.push(0);y.push(w.length-1),y.push(2),y.push(1),b.push(0),b.push(0),b.push(0)}if(r){for(let t=3;t<w.length;t++)y.push(t),y.push(t-1),y.push(0),b.push(t),b.push(t-1),b.push(1);y.push(0),y.push(2),y.push(w.length-1),b.push(1),b.push(2),b.push(g.length-1)}const j=m(3*M);for(let a=0;a<M;a++)j[3*a]=w[a][0],j[3*a+1]=w[a][1],j[3*a+2]=w[a][2];const d=m(3*M);for(let a=0;a<M;a++)d[3*a]=g[a][0],d[3*a+1]=g[a][1],d[3*a+2]=g[a][2];return[["position",new x(j,y,3,!0)],["normal",new x(d,b,3,!0)]]}function ft(t,n,o,e,s,r=!0,l=!0){return new C(t,pt(n,o,e,s,r,l))}function wt(n,e,h,p,f,w,g){const M=f?i(f):a(1,0,0),A=w?i(w):a(0,0,0);g??=!0;const y=c();o(y,M);const b=c();s(b,y,Math.abs(e));const j=c();s(j,b,-.5),r(j,j,A);const d=a(0,1,0);Math.abs(1-u(y,d))<.2&&t(d,0,0,1);const v=c();l(v,y,d),o(v,v),l(d,v,y);const I=2*p+(g?2:0),P=p+(g?2:0),D=m(3*I),z=m(3*P),S=m(2*I),q=new Array(3*p*(g?4:2)),F=new Array(3*p*(g?4:2));g&&(D[3*(I-2)]=j[0],D[3*(I-2)+1]=j[1],D[3*(I-2)+2]=j[2],S[2*(I-2)]=0,S[2*(I-2)+1]=0,D[3*(I-1)]=D[3*(I-2)]+b[0],D[3*(I-1)+1]=D[3*(I-2)+1]+b[1],D[3*(I-1)+2]=D[3*(I-2)+2]+b[2],S[2*(I-1)]=1,S[2*(I-1)+1]=1,z[3*(P-2)]=-y[0],z[3*(P-2)+1]=-y[1],z[3*(P-2)+2]=-y[2],z[3*(P-1)]=y[0],z[3*(P-1)+1]=y[1],z[3*(P-1)+2]=y[2]);const O=(t,n,o)=>{q[t]=n,F[t]=o};let U=0;const V=c(),B=c();for(let t=0;t<p;t++){const n=t*(2*Math.PI/p);s(V,d,Math.sin(n)),s(B,v,Math.cos(n)),r(V,V,B),z[3*t]=V[0],z[3*t+1]=V[1],z[3*t+2]=V[2],s(V,V,h),r(V,V,j),D[3*t]=V[0],D[3*t+1]=V[1],D[3*t+2]=V[2],S[2*t]=t/p,S[2*t+1]=0,D[3*(t+p)]=D[3*t]+b[0],D[3*(t+p)+1]=D[3*t+1]+b[1],D[3*(t+p)+2]=D[3*t+2]+b[2],S[2*(t+p)]=t/p,S[2*t+1]=1;const o=(t+1)%p;O(U++,t,t),O(U++,t+p,t),O(U++,o,o),O(U++,o,o),O(U++,t+p,t),O(U++,o+p,o)}if(g){for(let t=0;t<p;t++){const n=(t+1)%p;O(U++,I-2,P-2),O(U++,t,P-2),O(U++,n,P-2)}for(let t=0;t<p;t++){const n=(t+1)%p;O(U++,t+p,P-1),O(U++,I-1,P-1),O(U++,n+p,P-1)}}const G=[["position",new x(D,q,3,!0)],["normal",new x(z,F,3,!0)],["uv0",new x(S,q,2,!0)]];return new C(n,G)}function gt(t,n,o,e,s,r){e=e||10,s=null==s||s,F(n.length>1);const l=[[0,0,0]],h=[],u=[];for(let a=0;a<e;a++){h.push([0,-a-1,-(a+1)%e-1]);const t=a/e*2*Math.PI;u.push([Math.cos(t)*o,Math.sin(t)*o])}return mt(t,u,n,l,h,s,r)}function mt(h,u,i,c,f,w,g=a(0,0,0)){const M=u.length,A=m(i.length*M*3+(6*c.length||0)),y=m(i.length*M*3+(c?6:0)),I=new Array,P=new Array;let D=0,z=0;const S=p(),q=p(),F=p(),O=p(),U=p(),V=p(),B=p(),G=p(),H=p(),k=p(),E=p(),J=p(),K=p(),L=b();t(H,0,1,0),n(q,i[1],i[0]),o(q,q),w?(r(G,i[0],g),o(F,G)):t(F,0,0,1),dt(q,F,H,H,U,F,vt),e(O,F),e(J,U);for(let t=0;t<c.length;t++)s(V,U,c[t][0]),s(G,F,c[t][2]),r(V,V,G),r(V,V,i[0]),A[D++]=V[0],A[D++]=V[1],A[D++]=V[2];y[z++]=-q[0],y[z++]=-q[1],y[z++]=-q[2];for(let t=0;t<f.length;t++)I.push(f[t][0]>0?f[t][0]:-f[t][0]-1+c.length),I.push(f[t][1]>0?f[t][1]:-f[t][1]-1+c.length),I.push(f[t][2]>0?f[t][2]:-f[t][2]-1+c.length),P.push(0),P.push(0),P.push(0);let N=c.length;const Q=c.length-1;for(let t=0;t<i.length;t++){let h=!1;if(t>0){e(S,q),t<i.length-1?(n(q,i[t+1],i[t]),o(q,q)):h=!0,r(k,S,q),o(k,k),r(E,i[t-1],O),j(i[t],k,L);d(L,v(E,S),G)?(n(G,G,i[t]),o(F,G),l(U,k,F),o(U,U)):dt(k,O,J,H,U,F,vt),e(O,F),e(J,U)}w&&(r(G,i[t],g),o(K,G));for(let n=0;n<M;n++)if(s(V,U,u[n][0]),s(G,F,u[n][1]),r(V,V,G),o(B,V),y[z++]=B[0],y[z++]=B[1],y[z++]=B[2],r(V,V,i[t]),A[D++]=V[0],A[D++]=V[1],A[D++]=V[2],!h){const t=(n+1)%M;I.push(N+n),I.push(N+M+n),I.push(N+t),I.push(N+t),I.push(N+M+n),I.push(N+M+t);for(let n=0;n<6;n++){const t=I.length-6;P.push(I[t+n]-Q)}}N+=M}const R=i[i.length-1];for(let t=0;t<c.length;t++)s(V,U,c[t][0]),s(G,F,c[t][1]),r(V,V,G),r(V,V,R),A[D++]=V[0],A[D++]=V[1],A[D++]=V[2];const T=z/3;y[z++]=q[0],y[z++]=q[1],y[z++]=q[2];const W=N-M;for(let t=0;t<f.length;t++)I.push(f[t][0]>=0?N+f[t][0]:-f[t][0]-1+W),I.push(f[t][2]>=0?N+f[t][2]:-f[t][2]-1+W),I.push(f[t][1]>=0?N+f[t][1]:-f[t][1]-1+W),P.push(T),P.push(T),P.push(T);const X=[["position",new x(A,I,3,!0)],["normal",new x(y,P,3,!0)]];return new C(h,X)}function Mt(t,n,o,e,s){const r=g(3*n.length),l=new Array(2*(n.length-1));let h=0,u=0;for(let i=0;i<n.length;i++){for(let t=0;t<3;t++)r[h++]=n[i][t];i>0&&(l[u++]=i-1,l[u++]=i)}const a=[["position",new x(r,l,3,!0)]];if(o?.length===n.length&&3===o[0].length){const t=m(3*o.length);let e=0;for(let s=0;s<n.length;s++)for(let n=0;n<3;n++)t[e++]=o[s][n];a.push(["normal",new x(t,l,3,!0)])}if(e&&a.push(["color",new x(e,A(e.length/4),4)]),s?.length===n.length){const t=I(s,1);a.push(["timeStamps",new x(t,l,P,!0)])}return new C(t,a,null,2)}function At(t,n,o,e,s,r=0){const l=new Array(18),h=[[-o,r,s/2],[e,r,s/2],[0,n+r,s/2],[-o,r,-s/2],[e,r,-s/2],[0,n+r,-s/2]],u=[0,1,2,3,0,2,2,5,3,1,4,5,5,2,1,1,0,3,3,4,1,4,3,5];for(let a=0;a<6;a++)l[3*a]=h[a][0],l[3*a+1]=h[a][1],l[3*a+2]=h[a][2];return new C(t,[["position",new x(l,u,3,!0)]])}function yt(n,o){const e=n.getMutableAttribute("position").data;for(let s=0;s<e.length;s+=3){const n=e[s],r=e[s+1],l=e[s+2];t(It,n,r,l),h(It,It,o),e[s]=It[0],e[s+1]=It[1],e[s+2]=It[2]}}function bt(t,n=t){const o=t.attributes,e=o.get("position").data,s=o.get("normal").data;if(s){const t=n.getMutableAttribute("normal").data;for(let n=0;n<s.length;n+=3){const o=s[n+1];t[n+1]=-s[n+2],t[n+2]=o}}if(e){const t=n.getMutableAttribute("position").data;for(let n=0;n<e.length;n+=3){const o=e[n+1];t[n+1]=-e[n+2],t[n+2]=o}}}function jt(t,n,e,s,r){return!(Math.abs(u(n,t))>r)&&(l(e,t,n),o(e,e),l(s,e,t),o(s,s),!0)}function dt(t,n,o,e,s,r,l){return jt(t,n,s,r,l)||jt(t,o,s,r,l)||jt(t,e,s,r,l)}const vt=.99619469809,It=p();export{bt as cgToGIS,E as createBoxGeometry,ft as createConeGeometry,pt as createConeGeometryData,wt as createCylinderGeometry,Q as createDiamondGeometry,At as createExtrudedTriangle,mt as createPathExtrusionGeometry,at as createPointGeometry,ut as createPolySphereData,ht as createPolySphereGeometry,Mt as createPolylineGeometry,lt as createSphereGeometry,ct as createSquareGeometry,rt as createTetrahedronGeometry,gt as createTubeGeometry,dt as makeOrthoBasisDirUpFallback,yt as transformInPlace};