@geoblocks/cesium-post-process 0.3.0 → 0.5.0

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 (505) hide show
  1. package/README.md +6 -1
  2. package/dist/analog-video.d.ts +71 -0
  3. package/dist/analog-video.d.ts.map +1 -0
  4. package/dist/analog-video.js +128 -0
  5. package/dist/analog-video.js.map +1 -0
  6. package/dist/blur.d.ts +13 -0
  7. package/dist/blur.d.ts.map +1 -0
  8. package/dist/blur.js +36 -0
  9. package/dist/blur.js.map +1 -0
  10. package/dist/cesium-post-process.d.ts +30 -0
  11. package/dist/cesium-post-process.d.ts.map +1 -0
  12. package/dist/cesium-post-process.js +31 -0
  13. package/dist/cesium-post-process.js.map +1 -0
  14. package/dist/cloud-cover.d.ts +28 -0
  15. package/dist/cloud-cover.d.ts.map +1 -0
  16. package/dist/cloud-cover.js +45 -0
  17. package/dist/cloud-cover.js.map +1 -0
  18. package/dist/cloud-map.d.ts +7 -0
  19. package/dist/cloud-map.d.ts.map +1 -0
  20. package/dist/cloud-map.js +118 -0
  21. package/dist/cloud-map.js.map +1 -0
  22. package/dist/cloud-noise.d.ts +13 -0
  23. package/dist/cloud-noise.d.ts.map +1 -0
  24. package/dist/cloud-noise.js +222 -0
  25. package/dist/cloud-noise.js.map +1 -0
  26. package/dist/clouds.d.ts +275 -0
  27. package/dist/clouds.d.ts.map +1 -0
  28. package/dist/clouds.js +642 -0
  29. package/dist/clouds.js.map +1 -0
  30. package/dist/color-isolation.d.ts +38 -0
  31. package/dist/color-isolation.d.ts.map +1 -0
  32. package/dist/color-isolation.js +61 -0
  33. package/dist/color-isolation.js.map +1 -0
  34. package/dist/depth-test.d.ts +9 -0
  35. package/dist/depth-test.d.ts.map +1 -0
  36. package/dist/depth-test.js +35 -0
  37. package/dist/depth-test.js.map +1 -0
  38. package/dist/digital-video.d.ts +47 -0
  39. package/dist/digital-video.d.ts.map +1 -0
  40. package/dist/digital-video.js +102 -0
  41. package/dist/digital-video.js.map +1 -0
  42. package/dist/drone-display.d.ts +70 -0
  43. package/dist/drone-display.d.ts.map +1 -0
  44. package/dist/drone-display.js +158 -0
  45. package/dist/drone-display.js.map +1 -0
  46. package/dist/dufour.d.ts +108 -0
  47. package/dist/dufour.d.ts.map +1 -0
  48. package/dist/dufour.js +201 -0
  49. package/dist/dufour.js.map +1 -0
  50. package/dist/effect.d.ts +33 -0
  51. package/dist/effect.d.ts.map +1 -0
  52. package/dist/effect.js +60 -0
  53. package/dist/effect.js.map +1 -0
  54. package/dist/focus.d.ts +11 -0
  55. package/dist/focus.d.ts.map +1 -0
  56. package/dist/focus.js +23 -0
  57. package/dist/focus.js.map +1 -0
  58. package/dist/frame-clock.d.ts +11 -0
  59. package/dist/frame-clock.d.ts.map +1 -0
  60. package/dist/frame-clock.js +57 -0
  61. package/dist/frame-clock.js.map +1 -0
  62. package/dist/height.d.ts +12 -0
  63. package/dist/height.d.ts.map +1 -0
  64. package/dist/height.js +22 -0
  65. package/dist/height.js.map +1 -0
  66. package/dist/infrared.d.ts +23 -0
  67. package/dist/infrared.d.ts.map +1 -0
  68. package/dist/infrared.js +36 -0
  69. package/dist/infrared.js.map +1 -0
  70. package/dist/jello.d.ts +52 -0
  71. package/dist/jello.d.ts.map +1 -0
  72. package/dist/jello.js +136 -0
  73. package/dist/jello.js.map +1 -0
  74. package/dist/lens-distortion.d.ts +33 -0
  75. package/dist/lens-distortion.d.ts.map +1 -0
  76. package/dist/lens-distortion.js +61 -0
  77. package/dist/lens-distortion.js.map +1 -0
  78. package/dist/lightning.d.ts +124 -0
  79. package/dist/lightning.d.ts.map +1 -0
  80. package/dist/lightning.js +301 -0
  81. package/dist/lightning.js.map +1 -0
  82. package/dist/local-frame.d.ts +38 -0
  83. package/dist/local-frame.d.ts.map +1 -0
  84. package/dist/local-frame.js +52 -0
  85. package/dist/local-frame.js.map +1 -0
  86. package/dist/motion-blur.d.ts +50 -0
  87. package/dist/motion-blur.d.ts.map +1 -0
  88. package/dist/motion-blur.js +108 -0
  89. package/dist/motion-blur.js.map +1 -0
  90. package/dist/precipitation.d.ts +146 -0
  91. package/dist/precipitation.d.ts.map +1 -0
  92. package/dist/precipitation.js +454 -0
  93. package/dist/precipitation.js.map +1 -0
  94. package/dist/rain-rings.d.ts +100 -0
  95. package/dist/rain-rings.d.ts.map +1 -0
  96. package/dist/rain-rings.js +181 -0
  97. package/dist/rain-rings.js.map +1 -0
  98. package/dist/shaders/Alpenglow.d.ts +3 -0
  99. package/dist/shaders/Alpenglow.d.ts.map +1 -0
  100. package/dist/shaders/Alpenglow.js +3 -0
  101. package/dist/shaders/Alpenglow.js.map +1 -0
  102. package/dist/shaders/AnalogVideo.d.ts +3 -0
  103. package/dist/shaders/AnalogVideo.d.ts.map +1 -0
  104. package/dist/shaders/AnalogVideo.js +3 -0
  105. package/dist/shaders/AnalogVideo.js.map +1 -0
  106. package/dist/shaders/Beam.d.ts +3 -0
  107. package/dist/shaders/Beam.d.ts.map +1 -0
  108. package/dist/shaders/Beam.js +3 -0
  109. package/dist/shaders/Beam.js.map +1 -0
  110. package/dist/shaders/CloudsBlur.d.ts +3 -0
  111. package/dist/shaders/CloudsBlur.d.ts.map +1 -0
  112. package/dist/shaders/CloudsBlur.js +3 -0
  113. package/dist/shaders/CloudsBlur.js.map +1 -0
  114. package/dist/shaders/CloudsComposite.d.ts +3 -0
  115. package/dist/shaders/CloudsComposite.d.ts.map +1 -0
  116. package/dist/shaders/CloudsComposite.js +3 -0
  117. package/dist/shaders/CloudsComposite.js.map +1 -0
  118. package/dist/shaders/CloudsDensity.d.ts +3 -0
  119. package/dist/shaders/CloudsDensity.d.ts.map +1 -0
  120. package/dist/shaders/CloudsDensity.js +3 -0
  121. package/dist/shaders/CloudsDensity.js.map +1 -0
  122. package/dist/shaders/CloudsDepth.d.ts +3 -0
  123. package/dist/shaders/CloudsDepth.d.ts.map +1 -0
  124. package/dist/shaders/CloudsDepth.js +3 -0
  125. package/dist/shaders/CloudsDepth.js.map +1 -0
  126. package/dist/shaders/CloudsMarch.d.ts +3 -0
  127. package/dist/shaders/CloudsMarch.d.ts.map +1 -0
  128. package/dist/shaders/CloudsMarch.js +3 -0
  129. package/dist/shaders/CloudsMarch.js.map +1 -0
  130. package/dist/shaders/CloudsResolve.d.ts +3 -0
  131. package/dist/shaders/CloudsResolve.d.ts.map +1 -0
  132. package/dist/shaders/CloudsResolve.js +3 -0
  133. package/dist/shaders/CloudsResolve.js.map +1 -0
  134. package/dist/shaders/CloudsShadow.d.ts +3 -0
  135. package/dist/shaders/CloudsShadow.d.ts.map +1 -0
  136. package/dist/shaders/CloudsShadow.js +3 -0
  137. package/dist/shaders/CloudsShadow.js.map +1 -0
  138. package/dist/shaders/CloudsShadowMap.d.ts +3 -0
  139. package/dist/shaders/CloudsShadowMap.d.ts.map +1 -0
  140. package/dist/shaders/CloudsShadowMap.js +3 -0
  141. package/dist/shaders/CloudsShadowMap.js.map +1 -0
  142. package/dist/shaders/CloudsSlab.d.ts +3 -0
  143. package/dist/shaders/CloudsSlab.d.ts.map +1 -0
  144. package/dist/shaders/CloudsSlab.js +3 -0
  145. package/dist/shaders/CloudsSlab.js.map +1 -0
  146. package/dist/shaders/ColorIsolation.d.ts +3 -0
  147. package/dist/shaders/ColorIsolation.d.ts.map +1 -0
  148. package/dist/shaders/ColorIsolation.js +3 -0
  149. package/dist/shaders/ColorIsolation.js.map +1 -0
  150. package/dist/shaders/DepthEdges.d.ts +3 -0
  151. package/dist/shaders/DepthEdges.d.ts.map +1 -0
  152. package/dist/shaders/DepthEdges.js +3 -0
  153. package/dist/shaders/DepthEdges.js.map +1 -0
  154. package/dist/shaders/DigitalVideo.d.ts +3 -0
  155. package/dist/shaders/DigitalVideo.d.ts.map +1 -0
  156. package/dist/shaders/DigitalVideo.js +3 -0
  157. package/dist/shaders/DigitalVideo.js.map +1 -0
  158. package/dist/shaders/DroneDisplay.d.ts +3 -0
  159. package/dist/shaders/DroneDisplay.d.ts.map +1 -0
  160. package/dist/shaders/DroneDisplay.js +3 -0
  161. package/dist/shaders/DroneDisplay.js.map +1 -0
  162. package/dist/shaders/Dufour.d.ts +3 -0
  163. package/dist/shaders/Dufour.d.ts.map +1 -0
  164. package/dist/shaders/Dufour.js +3 -0
  165. package/dist/shaders/Dufour.js.map +1 -0
  166. package/dist/shaders/EyeFromDepth.d.ts +3 -0
  167. package/dist/shaders/EyeFromDepth.d.ts.map +1 -0
  168. package/dist/shaders/EyeFromDepth.js +3 -0
  169. package/dist/shaders/EyeFromDepth.js.map +1 -0
  170. package/dist/shaders/Filmic.d.ts +3 -0
  171. package/dist/shaders/Filmic.d.ts.map +1 -0
  172. package/dist/shaders/Filmic.js +3 -0
  173. package/dist/shaders/Filmic.js.map +1 -0
  174. package/dist/shaders/Flashlight.d.ts +3 -0
  175. package/dist/shaders/Flashlight.d.ts.map +1 -0
  176. package/dist/shaders/Flashlight.js +3 -0
  177. package/dist/shaders/Flashlight.js.map +1 -0
  178. package/dist/shaders/Fog.d.ts +3 -0
  179. package/dist/shaders/Fog.d.ts.map +1 -0
  180. package/dist/shaders/Fog.js +3 -0
  181. package/dist/shaders/Fog.js.map +1 -0
  182. package/dist/shaders/Frame.d.ts +3 -0
  183. package/dist/shaders/Frame.d.ts.map +1 -0
  184. package/dist/shaders/Frame.js +3 -0
  185. package/dist/shaders/Frame.js.map +1 -0
  186. package/dist/shaders/Hash.d.ts +3 -0
  187. package/dist/shaders/Hash.d.ts.map +1 -0
  188. package/dist/shaders/Hash.js +3 -0
  189. package/dist/shaders/Hash.js.map +1 -0
  190. package/dist/shaders/Height.d.ts +3 -0
  191. package/dist/shaders/Height.d.ts.map +1 -0
  192. package/dist/shaders/Height.js +3 -0
  193. package/dist/shaders/Height.js.map +1 -0
  194. package/dist/shaders/Infrared.d.ts +3 -0
  195. package/dist/shaders/Infrared.d.ts.map +1 -0
  196. package/dist/shaders/Infrared.js +3 -0
  197. package/dist/shaders/Infrared.js.map +1 -0
  198. package/dist/shaders/Jello.d.ts +3 -0
  199. package/dist/shaders/Jello.d.ts.map +1 -0
  200. package/dist/shaders/Jello.js +3 -0
  201. package/dist/shaders/Jello.js.map +1 -0
  202. package/dist/shaders/LensDistortion.d.ts +3 -0
  203. package/dist/shaders/LensDistortion.d.ts.map +1 -0
  204. package/dist/shaders/LensDistortion.js +3 -0
  205. package/dist/shaders/LensDistortion.js.map +1 -0
  206. package/dist/shaders/Lightning.d.ts +3 -0
  207. package/dist/shaders/Lightning.d.ts.map +1 -0
  208. package/dist/shaders/Lightning.js +3 -0
  209. package/dist/shaders/Lightning.js.map +1 -0
  210. package/dist/shaders/MotionBlur.d.ts +3 -0
  211. package/dist/shaders/MotionBlur.d.ts.map +1 -0
  212. package/dist/shaders/MotionBlur.js +3 -0
  213. package/dist/shaders/MotionBlur.js.map +1 -0
  214. package/dist/shaders/MotionBlurVelocity.d.ts +3 -0
  215. package/dist/shaders/MotionBlurVelocity.d.ts.map +1 -0
  216. package/dist/shaders/MotionBlurVelocity.js +3 -0
  217. package/dist/shaders/MotionBlurVelocity.js.map +1 -0
  218. package/dist/shaders/Noise.d.ts +3 -0
  219. package/dist/shaders/Noise.d.ts.map +1 -0
  220. package/dist/shaders/Noise.js +3 -0
  221. package/dist/shaders/Noise.js.map +1 -0
  222. package/dist/shaders/Normal.d.ts +3 -0
  223. package/dist/shaders/Normal.d.ts.map +1 -0
  224. package/dist/shaders/Normal.js +3 -0
  225. package/dist/shaders/Normal.js.map +1 -0
  226. package/dist/shaders/Phase.d.ts +3 -0
  227. package/dist/shaders/Phase.d.ts.map +1 -0
  228. package/dist/shaders/Phase.js +3 -0
  229. package/dist/shaders/Phase.js.map +1 -0
  230. package/dist/shaders/Precipitation.d.ts +3 -0
  231. package/dist/shaders/Precipitation.d.ts.map +1 -0
  232. package/dist/shaders/Precipitation.js +3 -0
  233. package/dist/shaders/Precipitation.js.map +1 -0
  234. package/dist/shaders/PrecipitationShaftBlur.d.ts +3 -0
  235. package/dist/shaders/PrecipitationShaftBlur.d.ts.map +1 -0
  236. package/dist/shaders/PrecipitationShaftBlur.js +3 -0
  237. package/dist/shaders/PrecipitationShaftBlur.js.map +1 -0
  238. package/dist/shaders/PrecipitationShafts.d.ts +3 -0
  239. package/dist/shaders/PrecipitationShafts.d.ts.map +1 -0
  240. package/dist/shaders/PrecipitationShafts.js +3 -0
  241. package/dist/shaders/PrecipitationShafts.js.map +1 -0
  242. package/dist/shaders/PrecipitationWind.d.ts +3 -0
  243. package/dist/shaders/PrecipitationWind.d.ts.map +1 -0
  244. package/dist/shaders/PrecipitationWind.js +3 -0
  245. package/dist/shaders/PrecipitationWind.js.map +1 -0
  246. package/dist/shaders/RainHaze.d.ts +3 -0
  247. package/dist/shaders/RainHaze.d.ts.map +1 -0
  248. package/dist/shaders/RainHaze.js +3 -0
  249. package/dist/shaders/RainHaze.js.map +1 -0
  250. package/dist/shaders/RainRings.d.ts +3 -0
  251. package/dist/shaders/RainRings.d.ts.map +1 -0
  252. package/dist/shaders/RainRings.js +3 -0
  253. package/dist/shaders/RainRings.js.map +1 -0
  254. package/dist/shaders/Shockwave.d.ts +3 -0
  255. package/dist/shaders/Shockwave.d.ts.map +1 -0
  256. package/dist/shaders/Shockwave.js +3 -0
  257. package/dist/shaders/Shockwave.js.map +1 -0
  258. package/dist/shaders/SkyTable.d.ts +3 -0
  259. package/dist/shaders/SkyTable.d.ts.map +1 -0
  260. package/dist/shaders/SkyTable.js +3 -0
  261. package/dist/shaders/SkyTable.js.map +1 -0
  262. package/dist/shaders/SnowLine.d.ts +3 -0
  263. package/dist/shaders/SnowLine.d.ts.map +1 -0
  264. package/dist/shaders/SnowLine.js +3 -0
  265. package/dist/shaders/SnowLine.js.map +1 -0
  266. package/dist/shaders/SpeedLines.d.ts +3 -0
  267. package/dist/shaders/SpeedLines.d.ts.map +1 -0
  268. package/dist/shaders/SpeedLines.js +3 -0
  269. package/dist/shaders/SpeedLines.js.map +1 -0
  270. package/dist/shaders/Spotlight.d.ts +3 -0
  271. package/dist/shaders/Spotlight.d.ts.map +1 -0
  272. package/dist/shaders/Spotlight.js +3 -0
  273. package/dist/shaders/Spotlight.js.map +1 -0
  274. package/dist/shaders/SpotlightBeam.d.ts +3 -0
  275. package/dist/shaders/SpotlightBeam.d.ts.map +1 -0
  276. package/dist/shaders/SpotlightBeam.js +3 -0
  277. package/dist/shaders/SpotlightBeam.js.map +1 -0
  278. package/dist/shaders/SpotlightBeamBlur.d.ts +3 -0
  279. package/dist/shaders/SpotlightBeamBlur.d.ts.map +1 -0
  280. package/dist/shaders/SpotlightBeamBlur.js +3 -0
  281. package/dist/shaders/SpotlightBeamBlur.js.map +1 -0
  282. package/dist/shaders/SpotlightCone.d.ts +3 -0
  283. package/dist/shaders/SpotlightCone.d.ts.map +1 -0
  284. package/dist/shaders/SpotlightCone.js +3 -0
  285. package/dist/shaders/SpotlightCone.js.map +1 -0
  286. package/dist/shaders/Super8.d.ts +3 -0
  287. package/dist/shaders/Super8.d.ts.map +1 -0
  288. package/dist/shaders/Super8.js +3 -0
  289. package/dist/shaders/Super8.js.map +1 -0
  290. package/dist/shaders/Technicolor.d.ts +3 -0
  291. package/dist/shaders/Technicolor.d.ts.map +1 -0
  292. package/dist/shaders/Technicolor.js +3 -0
  293. package/dist/shaders/Technicolor.js.map +1 -0
  294. package/dist/shaders/TiltShift.d.ts +3 -0
  295. package/dist/shaders/TiltShift.d.ts.map +1 -0
  296. package/dist/shaders/TiltShift.js +3 -0
  297. package/dist/shaders/TiltShift.js.map +1 -0
  298. package/dist/shaders/Toy.d.ts +3 -0
  299. package/dist/shaders/Toy.d.ts.map +1 -0
  300. package/dist/shaders/Toy.js +3 -0
  301. package/dist/shaders/Toy.js.map +1 -0
  302. package/dist/shaders/Trails.d.ts +3 -0
  303. package/dist/shaders/Trails.d.ts.map +1 -0
  304. package/dist/shaders/Trails.js +3 -0
  305. package/dist/shaders/Trails.js.map +1 -0
  306. package/dist/shaders/ValleyFog.d.ts +3 -0
  307. package/dist/shaders/ValleyFog.d.ts.map +1 -0
  308. package/dist/shaders/ValleyFog.js +3 -0
  309. package/dist/shaders/ValleyFog.js.map +1 -0
  310. package/dist/shaders/WeatherMap.d.ts +3 -0
  311. package/dist/shaders/WeatherMap.d.ts.map +1 -0
  312. package/dist/shaders/WeatherMap.js +3 -0
  313. package/dist/shaders/WeatherMap.js.map +1 -0
  314. package/dist/shaders/WhiteModel.d.ts +3 -0
  315. package/dist/shaders/WhiteModel.d.ts.map +1 -0
  316. package/dist/shaders/WhiteModel.js +3 -0
  317. package/dist/shaders/WhiteModel.js.map +1 -0
  318. package/dist/snow-line.d.ts +117 -0
  319. package/dist/snow-line.d.ts.map +1 -0
  320. package/dist/snow-line.js +201 -0
  321. package/dist/snow-line.js.map +1 -0
  322. package/dist/speed-lines.d.ts +36 -0
  323. package/dist/speed-lines.d.ts.map +1 -0
  324. package/dist/speed-lines.js +65 -0
  325. package/dist/speed-lines.js.map +1 -0
  326. package/dist/spotlight.d.ts +84 -0
  327. package/dist/spotlight.d.ts.map +1 -0
  328. package/dist/spotlight.js +175 -0
  329. package/dist/spotlight.js.map +1 -0
  330. package/dist/strikes.d.ts +17 -0
  331. package/dist/strikes.d.ts.map +1 -0
  332. package/dist/strikes.js +30 -0
  333. package/dist/strikes.js.map +1 -0
  334. package/dist/super8.d.ts +78 -0
  335. package/dist/super8.d.ts.map +1 -0
  336. package/dist/super8.js +146 -0
  337. package/dist/super8.js.map +1 -0
  338. package/dist/technicolor.d.ts +32 -0
  339. package/dist/technicolor.d.ts.map +1 -0
  340. package/dist/technicolor.js +51 -0
  341. package/dist/technicolor.js.map +1 -0
  342. package/dist/tilt-shift.d.ts +60 -0
  343. package/dist/tilt-shift.d.ts.map +1 -0
  344. package/dist/tilt-shift.js +112 -0
  345. package/dist/tilt-shift.js.map +1 -0
  346. package/dist/toy.d.ts +110 -0
  347. package/dist/toy.d.ts.map +1 -0
  348. package/dist/toy.js +173 -0
  349. package/dist/toy.js.map +1 -0
  350. package/dist/valley-fog.d.ts +56 -0
  351. package/dist/valley-fog.d.ts.map +1 -0
  352. package/dist/valley-fog.js +94 -0
  353. package/dist/valley-fog.js.map +1 -0
  354. package/dist/weather-map.d.ts +132 -0
  355. package/dist/weather-map.d.ts.map +1 -0
  356. package/dist/weather-map.js +266 -0
  357. package/dist/weather-map.js.map +1 -0
  358. package/dist/white-model.d.ts +70 -0
  359. package/dist/white-model.d.ts.map +1 -0
  360. package/dist/white-model.js +94 -0
  361. package/dist/white-model.js.map +1 -0
  362. package/package.json +19 -40
  363. package/{cesium-post-process.js → src/cesium-post-process.js} +2 -0
  364. package/src/local-frame.js +57 -0
  365. package/{rain-rings.js → src/rain-rings.js} +14 -28
  366. package/src/shaders/AnalogVideo.glsl +132 -0
  367. package/src/shaders/Beam.glsl +108 -0
  368. package/src/shaders/CloudsBlur.glsl +30 -0
  369. package/src/shaders/CloudsComposite.glsl +59 -0
  370. package/src/shaders/CloudsDensity.glsl +129 -0
  371. package/src/shaders/CloudsDepth.glsl +26 -0
  372. package/src/shaders/CloudsMarch.glsl +174 -0
  373. package/src/shaders/CloudsResolve.glsl +46 -0
  374. package/src/shaders/CloudsShadow.glsl +50 -0
  375. package/src/shaders/CloudsShadowMap.glsl +68 -0
  376. package/src/shaders/CloudsSlab.glsl +58 -0
  377. package/src/shaders/ColorIsolation.glsl +26 -0
  378. package/src/shaders/DepthEdges.glsl +81 -0
  379. package/src/shaders/DigitalVideo.glsl +65 -0
  380. package/src/shaders/DroneDisplay.glsl +337 -0
  381. package/src/shaders/Dufour.glsl +109 -0
  382. package/src/shaders/EyeFromDepth.glsl +36 -0
  383. package/src/shaders/Filmic.glsl +5 -0
  384. package/src/shaders/Fog.glsl +18 -0
  385. package/src/shaders/Frame.glsl +10 -0
  386. package/src/shaders/Hash.glsl +12 -0
  387. package/src/shaders/Height.glsl +25 -0
  388. package/src/shaders/Infrared.glsl +44 -0
  389. package/src/shaders/Jello.glsl +41 -0
  390. package/src/shaders/LensDistortion.glsl +24 -0
  391. package/src/shaders/Lightning.glsl +257 -0
  392. package/src/shaders/MotionBlur.glsl +71 -0
  393. package/src/shaders/MotionBlurVelocity.glsl +31 -0
  394. package/src/shaders/Noise.glsl +43 -0
  395. package/src/shaders/Normal.glsl +21 -0
  396. package/src/shaders/Phase.glsl +6 -0
  397. package/src/shaders/Precipitation.glsl +199 -0
  398. package/src/shaders/PrecipitationShaftBlur.glsl +21 -0
  399. package/src/shaders/PrecipitationShafts.glsl +84 -0
  400. package/src/shaders/PrecipitationWind.glsl +33 -0
  401. package/src/shaders/RainHaze.glsl +145 -0
  402. package/src/shaders/RainRings.glsl +64 -0
  403. package/src/shaders/SkyTable.glsl +23 -0
  404. package/src/shaders/SnowLine.glsl +97 -0
  405. package/src/shaders/SnowLine.js +2 -0
  406. package/src/shaders/SpeedLines.glsl +61 -0
  407. package/src/shaders/Spotlight.glsl +89 -0
  408. package/src/shaders/SpotlightBeam.glsl +49 -0
  409. package/src/shaders/SpotlightBeamBlur.glsl +27 -0
  410. package/src/shaders/SpotlightCone.glsl +37 -0
  411. package/src/shaders/Super8.glsl +90 -0
  412. package/src/shaders/Technicolor.glsl +30 -0
  413. package/src/shaders/TiltShift.glsl +34 -0
  414. package/src/shaders/Toy.glsl +46 -0
  415. package/src/shaders/ValleyFog.glsl +40 -0
  416. package/src/shaders/WeatherMap.glsl +33 -0
  417. package/src/shaders/WhiteModel.glsl +108 -0
  418. package/{snow-line.js → src/snow-line.js} +71 -3
  419. package/local-frame.js +0 -15
  420. package/shaders/SnowLine.js +0 -2
  421. /package/{analog-video.js → src/analog-video.js} +0 -0
  422. /package/{blur.js → src/blur.js} +0 -0
  423. /package/{cloud-cover.js → src/cloud-cover.js} +0 -0
  424. /package/{cloud-map.js → src/cloud-map.js} +0 -0
  425. /package/{cloud-noise.js → src/cloud-noise.js} +0 -0
  426. /package/{clouds.js → src/clouds.js} +0 -0
  427. /package/{color-isolation.js → src/color-isolation.js} +0 -0
  428. /package/{depth-test.js → src/depth-test.js} +0 -0
  429. /package/{digital-video.js → src/digital-video.js} +0 -0
  430. /package/{drone-display.js → src/drone-display.js} +0 -0
  431. /package/{dufour.js → src/dufour.js} +0 -0
  432. /package/{effect.js → src/effect.js} +0 -0
  433. /package/{focus.js → src/focus.js} +0 -0
  434. /package/{frame-clock.js → src/frame-clock.js} +0 -0
  435. /package/{height.js → src/height.js} +0 -0
  436. /package/{infrared.js → src/infrared.js} +0 -0
  437. /package/{jello.js → src/jello.js} +0 -0
  438. /package/{lens-distortion.js → src/lens-distortion.js} +0 -0
  439. /package/{lightning.js → src/lightning.js} +0 -0
  440. /package/{motion-blur.js → src/motion-blur.js} +0 -0
  441. /package/{precipitation.js → src/precipitation.js} +0 -0
  442. /package/{shaders → src/shaders}/Alpenglow.js +0 -0
  443. /package/{shaders → src/shaders}/AnalogVideo.js +0 -0
  444. /package/{shaders → src/shaders}/Beam.js +0 -0
  445. /package/{shaders → src/shaders}/CloudsBlur.js +0 -0
  446. /package/{shaders → src/shaders}/CloudsComposite.js +0 -0
  447. /package/{shaders → src/shaders}/CloudsDensity.js +0 -0
  448. /package/{shaders → src/shaders}/CloudsDepth.js +0 -0
  449. /package/{shaders → src/shaders}/CloudsMarch.js +0 -0
  450. /package/{shaders → src/shaders}/CloudsResolve.js +0 -0
  451. /package/{shaders → src/shaders}/CloudsShadow.js +0 -0
  452. /package/{shaders → src/shaders}/CloudsShadowMap.js +0 -0
  453. /package/{shaders → src/shaders}/CloudsSlab.js +0 -0
  454. /package/{shaders → src/shaders}/ColorIsolation.js +0 -0
  455. /package/{shaders → src/shaders}/DepthEdges.js +0 -0
  456. /package/{shaders → src/shaders}/DigitalVideo.js +0 -0
  457. /package/{shaders → src/shaders}/DroneDisplay.js +0 -0
  458. /package/{shaders → src/shaders}/Dufour.js +0 -0
  459. /package/{shaders → src/shaders}/EyeFromDepth.js +0 -0
  460. /package/{shaders → src/shaders}/Filmic.js +0 -0
  461. /package/{shaders → src/shaders}/Flashlight.js +0 -0
  462. /package/{shaders → src/shaders}/Fog.js +0 -0
  463. /package/{shaders → src/shaders}/Frame.js +0 -0
  464. /package/{shaders → src/shaders}/Hash.js +0 -0
  465. /package/{shaders → src/shaders}/Height.js +0 -0
  466. /package/{shaders → src/shaders}/Infrared.js +0 -0
  467. /package/{shaders → src/shaders}/Jello.js +0 -0
  468. /package/{shaders → src/shaders}/LensDistortion.js +0 -0
  469. /package/{shaders → src/shaders}/Lightning.js +0 -0
  470. /package/{shaders → src/shaders}/MotionBlur.js +0 -0
  471. /package/{shaders → src/shaders}/MotionBlurVelocity.js +0 -0
  472. /package/{shaders → src/shaders}/Noise.js +0 -0
  473. /package/{shaders → src/shaders}/Normal.js +0 -0
  474. /package/{shaders → src/shaders}/Phase.js +0 -0
  475. /package/{shaders → src/shaders}/Precipitation.js +0 -0
  476. /package/{shaders → src/shaders}/PrecipitationShaftBlur.js +0 -0
  477. /package/{shaders → src/shaders}/PrecipitationShafts.js +0 -0
  478. /package/{shaders → src/shaders}/PrecipitationWind.js +0 -0
  479. /package/{shaders → src/shaders}/RainHaze.js +0 -0
  480. /package/{shaders → src/shaders}/RainRings.js +0 -0
  481. /package/{shaders → src/shaders}/Shockwave.js +0 -0
  482. /package/{shaders → src/shaders}/SkyTable.js +0 -0
  483. /package/{shaders → src/shaders}/SpeedLines.js +0 -0
  484. /package/{shaders → src/shaders}/Spotlight.js +0 -0
  485. /package/{shaders → src/shaders}/SpotlightBeam.js +0 -0
  486. /package/{shaders → src/shaders}/SpotlightBeamBlur.js +0 -0
  487. /package/{shaders → src/shaders}/SpotlightCone.js +0 -0
  488. /package/{shaders → src/shaders}/Super8.js +0 -0
  489. /package/{shaders → src/shaders}/Technicolor.js +0 -0
  490. /package/{shaders → src/shaders}/TiltShift.js +0 -0
  491. /package/{shaders → src/shaders}/Toy.js +0 -0
  492. /package/{shaders → src/shaders}/Trails.js +0 -0
  493. /package/{shaders → src/shaders}/ValleyFog.js +0 -0
  494. /package/{shaders → src/shaders}/WeatherMap.js +0 -0
  495. /package/{shaders → src/shaders}/WhiteModel.js +0 -0
  496. /package/{speed-lines.js → src/speed-lines.js} +0 -0
  497. /package/{spotlight.js → src/spotlight.js} +0 -0
  498. /package/{strikes.js → src/strikes.js} +0 -0
  499. /package/{super8.js → src/super8.js} +0 -0
  500. /package/{technicolor.js → src/technicolor.js} +0 -0
  501. /package/{tilt-shift.js → src/tilt-shift.js} +0 -0
  502. /package/{toy.js → src/toy.js} +0 -0
  503. /package/{valley-fog.js → src/valley-fog.js} +0 -0
  504. /package/{weather-map.js → src/weather-map.js} +0 -0
  505. /package/{white-model.js → src/white-model.js} +0 -0
@@ -0,0 +1,146 @@
1
+ import { Cartesian4 } from '@cesium/core';
2
+ import { PostProcessStageComposite } from '@cesium/engine';
3
+ import Effect from './effect.js';
4
+ import WeatherMap from './weather-map.js';
5
+ export type PrecipitationMapOptions = import('./weather-map.js').WeatherMapOptions;
6
+ /**
7
+ * Precipitation, from rain to snow: streaks of falling drops, or soft
8
+ * fluttering flakes, in layers at different distances over the whole scene,
9
+ * hidden behind what is nearer, a haze veiling the distance and shafts of
10
+ * heavier precipitation below the cloud base, in a gusting wind. Between rain
11
+ * and snow, the same drops slow down, shorten and soften, as in sleet. While
12
+ * active, the sky is overcast: no shadows, and a dimmer sunlight. The
13
+ * precipitation falls, so while active with an intensity the scene renders at
14
+ * 30 frames per second, also in requestRenderMode. With a map, it falls where
15
+ * the map says, in cells seen from outside through their shafts and haze,
16
+ * and the sky is overcast in proportion to the map at the camera, but not
17
+ * above the cloud base.
18
+ */
19
+ export default class Precipitation extends Effect {
20
+ intensity_: number;
21
+ wind_: number;
22
+ speed_: number;
23
+ cloudBase_: number;
24
+ snow_: number;
25
+ weatherMap_: WeatherMap;
26
+ localIntensity_: number;
27
+ offset_: number;
28
+ lastTime_: number;
29
+ layerShape_: Cartesian4[];
30
+ layerLook_: Cartesian4[];
31
+ onPreRender_: () => void;
32
+ /** @type {any} */
33
+ skyTable_: any;
34
+ /** @type {any} */
35
+ skyTableFramebuffer_: any;
36
+ /** @type {any} */
37
+ skyTableCommand_: any;
38
+ /**
39
+ * @param {import('@cesium/engine').CesiumWidget} viewer
40
+ * @param {{intensity?: number, wind?: number, speed?: number, cloudBase?: number, snow?: number, map?: PrecipitationMapOptions}} [options]
41
+ */
42
+ constructor(viewer: import('@cesium/engine').CesiumWidget, options?: {
43
+ intensity?: number;
44
+ wind?: number;
45
+ speed?: number;
46
+ cloudBase?: number;
47
+ snow?: number;
48
+ map?: PrecipitationMapOptions;
49
+ });
50
+ /**
51
+ * Draws the sky table into its own texture before the stages run.
52
+ * @param {import('@cesium/engine').Scene} scene
53
+ */
54
+ drawSkyTable_(scene: import('@cesium/engine').Scene): void;
55
+ destroySkyTable_(): void;
56
+ /**
57
+ * Speed of the drops or flakes, in m/s.
58
+ */
59
+ fallSpeed_(): number;
60
+ /**
61
+ * The layers' uniforms from the snow and the cells along the fall.
62
+ */
63
+ updateLayers_(): void;
64
+ /**
65
+ * The length of a drop's trail, in cells: its motion over the exposure.
66
+ */
67
+ trail_(): number;
68
+ /**
69
+ * The cells of the grid along the fall per radian, at the nearest layer's distance.
70
+ */
71
+ cellsAlong_(): number;
72
+ /**
73
+ * @override
74
+ * @param {import('@cesium/engine').Scene} scene
75
+ */
76
+ createStage_(scene: import('@cesium/engine').Scene): PostProcessStageComposite;
77
+ /**
78
+ * @override
79
+ * @param {import('@cesium/engine').Scene} scene
80
+ */
81
+ activated_(scene: import('@cesium/engine').Scene): void;
82
+ /**
83
+ * @override
84
+ * @param {import('@cesium/engine').Scene} scene
85
+ */
86
+ deactivating_(scene: import('@cesium/engine').Scene): void;
87
+ /**
88
+ * Where it rains, or undefined for everywhere: an image whose red channel
89
+ * is the local intensity, 0 to 1, over a rectangle of longitudes and
90
+ * latitudes, north up. The precipitation fades in over a pixel of the
91
+ * image. Set it again after drawing on the image, which is read then.
92
+ */
93
+ get map(): import("./weather-map.js").WeatherMapOptions | undefined;
94
+ /**
95
+ * The map's intensity at the camera, 0 to 1, read each frame while active;
96
+ * 1 without a map.
97
+ */
98
+ get localIntensity(): number;
99
+ set map(value: import("./weather-map.js").WeatherMapOptions | undefined);
100
+ /**
101
+ * The map the precipitation crossfades to by the map blend, over the same
102
+ * rectangle, as the radar's next hour, or undefined for none.
103
+ */
104
+ get nextMap(): import("./weather-map.js").WeatherMapOptions | undefined;
105
+ set nextMap(value: import("./weather-map.js").WeatherMapOptions | undefined);
106
+ /**
107
+ * From the map, 0, to the next map, 1.
108
+ */
109
+ get mapBlend(): number;
110
+ set mapBlend(value: number);
111
+ /**
112
+ * How hard it rains or snows, 0 to 1: the share of the drops or flakes
113
+ * shown, their opacity, and the haze, from 39 km of visibility to 4.4 km in
114
+ * the rain, taken as 0 to 10 mm/h under a square root, from 20 km to 500 m in
115
+ * the snow.
116
+ */
117
+ get intensity(): number;
118
+ set intensity(value: number);
119
+ /**
120
+ * Tilt of the fall from the vertical, toward the east, in degrees.
121
+ */
122
+ get wind(): number;
123
+ set wind(value: number);
124
+ /**
125
+ * Speed of the precipitation, 1 at its terminal velocity, 9 m/s for the
126
+ * drops and 1 m/s for the flakes: faster drops draw longer streaks.
127
+ */
128
+ get speed(): number;
129
+ set speed(value: number);
130
+ /**
131
+ * Altitude of the cloud base, in meters above the ellipsoid: the
132
+ * precipitation falls below it, in shafts, and none falls around a camera
133
+ * above it.
134
+ */
135
+ get cloudBase(): number;
136
+ set cloudBase(value: number);
137
+ /**
138
+ * How much the rain has turned to snow, 0 to 1: the drops slow down from
139
+ * 9 m/s to 1 m/s, shorten and soften into flakes, with the haze, its light
140
+ * and the shafts going from the rain's to the snow's. In between, they are
141
+ * the short, soft streaks of sleet.
142
+ */
143
+ get snow(): number;
144
+ set snow(value: number);
145
+ }
146
+ //# sourceMappingURL=precipitation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"precipitation.d.ts","sourceRoot":"","sources":["../src/precipitation.js"],"names":[],"mappings":"AAAA,OAAO,EAAa,UAAU,EAAqB,MAAM,cAAc,CAAC;AACxE,OAAO,EAAmB,yBAAyB,EAAC,MAAM,gBAAgB,CAAC;AAK3E,OAAO,MAAM,MAAM,aAAa,CAAC;AAiBjC,OAAO,UAAU,MAAM,kBAAkB,CAAC;AA0DvC,YAAwD,uBAAuB,GAArE,OAAO,kBAAkB,EAAE,iBAAiB,CAAyB;AAiDlF;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,MAAM;IAOxC,UAAU;IACV,KAAK;IACL,MAAM;IACN,UAAU;IACV,KAAK;IAEL,WAAW;IAGX,eAAe;IAGf,OAAO;IACP,SAAS;IAET,WAAW;IACX,UAAU;IACV,YAAY;IAcjB,kBAAkB;IACb,SAAS,EADH,GAAG;IAEd,kBAAkB;IACb,oBAAoB,EADd,GAAG;IAEd,kBAAkB;IACb,gBAAgB,EADV,GAAG;IAzChB;;;OAGG;IACH,YAAY,MAAM,EAHP,OAAO,gBAAgB,EAAE,YAGlB,EAAE,OAAO,AAFxB,CAAwI,EAAhI;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,uBAAuB,CAAA;KAE/F,EAuC/B;IAED;;;OAGG;IACH,aAAa,CAAC,KAAK,EAFR,OAAO,gBAAgB,EAAE,KAEjB,QAmBlB;IAED,gBAAgB,SAKf;IAED;;OAEG;IACH,UAAU,WAET;IAED;;OAEG;IACH,aAAa,SAqBZ;IAED;;OAEG;IACH,MAAM,WAGL;IAED;;OAEG;IACH,WAAW,WAEV;IAED;;;OAGG;IACH,YAAY,CAAC,KAAK,EAFP,OAAO,gBAAgB,EAAE,KAElB,6BAkEjB;IAED;;;OAGG;IACH,UAAU,CAAC,KAAK,EAFL,OAAO,gBAAgB,EAAE,KAEpB,QASf;IAED;;;OAGG;IACH,aAAa,CAAC,KAAK,EAFR,OAAO,gBAAgB,EAAE,KAEjB,QASlB;IAED;;;;;OAKG;IACH,IAAI,GAAG,6DAEN;IAED;;;OAGG;IACH,IAAI,cAAc,WAEjB;IAED,IAAI,GAAG,CAAC,KAAK,0DAAA,EAGZ;IAED;;;OAGG;IACH,IAAI,OAAO,6DAEV;IAED,IAAI,OAAO,CAAC,KAAK,0DAAA,EAGhB;IAED;;OAEG;IACH,IAAI,QAAQ,WAEX;IAED,IAAI,QAAQ,CAAC,KAAK,QAAA,EAGjB;IAED;;;;;OAKG;IACH,IAAI,SAAS,WAEZ;IAED,IAAI,SAAS,CAAC,KAAK,QAAA,EAQlB;IAED;;OAEG;IACH,IAAI,IAAI,WAEP;IAED,IAAI,IAAI,CAAC,KAAK,QAAA,EAGb;IAED;;;OAGG;IACH,IAAI,KAAK,WAER;IAED,IAAI,KAAK,CAAC,KAAK,QAAA,EAGd;IAED;;;;OAIG;IACH,IAAI,SAAS,WAEZ;IAED,IAAI,SAAS,CAAC,KAAK,QAAA,EAGlB;IAED;;;;;OAKG;IACH,IAAI,IAAI,WAEP;IAED,IAAI,IAAI,CAAC,KAAK,QAAA,EAGb;CACF"}
@@ -0,0 +1,454 @@
1
+ import { Cartesian3, Cartesian4, Math as CesiumMath } from '@cesium/core';
2
+ import { PostProcessStage, PostProcessStageComposite } from '@cesium/engine';
3
+ // @ts-expect-error the engine exports its textures, framebuffers and render states, but does not type them
4
+ import { Framebuffer, RenderState, Texture } from '@cesium/engine';
5
+ import { cloudShadow, hasCloudCover } from './cloud-cover.js';
6
+ import { acquireTerrainDepth, releaseTerrainDepth } from './depth-test.js';
7
+ import Effect from './effect.js';
8
+ import { acquireFrames, releaseFrames } from './frame-clock.js';
9
+ import { heightUniforms } from './height.js';
10
+ import CloudsShadow from './shaders/CloudsShadow.js';
11
+ import EyeFromDepth from './shaders/EyeFromDepth.js';
12
+ import Fog from './shaders/Fog.js';
13
+ import Hash from './shaders/Hash.js';
14
+ import Height from './shaders/Height.js';
15
+ import Noise from './shaders/Noise.js';
16
+ import Phase from './shaders/Phase.js';
17
+ import PrecipitationShader from './shaders/Precipitation.js';
18
+ import PrecipitationShaftBlur from './shaders/PrecipitationShaftBlur.js';
19
+ import PrecipitationShafts from './shaders/PrecipitationShafts.js';
20
+ import PrecipitationWind from './shaders/PrecipitationWind.js';
21
+ import RainHaze from './shaders/RainHaze.js';
22
+ import SkyTable from './shaders/SkyTable.js';
23
+ import WeatherMapShader from './shaders/WeatherMap.js';
24
+ import WeatherMap from './weather-map.js';
25
+ // the streaks are the drops' motion over a frame's exposure
26
+ const FRAME_RATE = 30;
27
+ // the shader's time wraps at an hour, a whole number of the periods of its gusts and its flutter
28
+ const TIME_PERIOD = 3600;
29
+ // terminal velocity of the drops and of the flakes, in m/s, at speed 1; in between, geometrically,
30
+ // so that the slush at half is about 3 m/s
31
+ const RAIN_VELOCITY = 9;
32
+ const SNOW_VELOCITY = 1;
33
+ // the cells along the fall per radian at the nearest layer's distance: taller than wide in the rain,
34
+ // where the streaks are long, square in the snow, in between geometrically, and that distance, in
35
+ // meters (Precipitation.glsl's NEAREST): the grid scrolls by the speed over the distance, in
36
+ // radians per second, times the cells per radian
37
+ const RAIN_CELLS_ALONG = 4.44;
38
+ const SNOW_CELLS_ALONG = 20;
39
+ const NEAREST = 2;
40
+ // the exposure of the drops and of the flakes, in seconds, in between geometrically: a streak is the
41
+ // motion over it, a 1/30 s video frame for the drops; the flakes, at 1 m/s, would be half as long as
42
+ // wide at 1/30 s and look like streaks, not like flakes: a shorter exposure keeps them round
43
+ const RAIN_EXPOSURE = 1 / 30;
44
+ const SNOW_EXPOSURE = 1 / 90;
45
+ // the longest trail, in cells: Precipitation.glsl looks one cell above each pixel's for it
46
+ const MAX_TRAIL = 1;
47
+ const TWO_PI = CesiumMath.TWO_PI;
48
+ // the layers of drops, 2 to 16 m away, a drop every 0.05 rad around at the horizon in the nearest
49
+ // one, and the radius of its flakes in pixels, halved in each further layer (Precipitation.glsl's
50
+ // LAYERS, NEAREST, and the rest of its drops)
51
+ const LAYERS = 4;
52
+ const CELLS_AROUND = 20;
53
+ const FLAKE_RADIUS = 4;
54
+ // Precipitation.glsl's PERIOD, the cells after which the grid repeats
55
+ const PERIOD = 1000;
56
+ // longest time between two frames, in seconds, after a pause in requestRenderMode
57
+ const MAX_STEP = 0.1;
58
+ // the shafts are kilometers wide and soft: an eighth of the resolution, a 64th of the pixels, is
59
+ // enough for their raymarch and their blur (Precipitation.glsl's SHAFT_SCALE)
60
+ const SHAFT_SCALE = 0.125;
61
+ // the sky table's texels toward the horizon, besides the one overhead, RainHaze.glsl's SKY_TABLE
62
+ const SKY_TABLE = 64;
63
+ // the sunlight under the clouds, as a share of its intensity
64
+ const OVERCAST = 0.5;
65
+ // the camera goes from under the clouds to above them over this height around the cloud base, in
66
+ // meters, as the drops in Precipitation.glsl
67
+ const CLOUD_BASE_FADE = 50;
68
+ /**
69
+ * GLSL's smoothstep.
70
+ * @param {number} edge0
71
+ * @param {number} edge1
72
+ * @param {number} x
73
+ */
74
+ function smoothstep(edge0, edge1, x) {
75
+ const t = CesiumMath.clamp((x - edge0) / (edge1 - edge0), 0, 1);
76
+ return t * t * (3 - 2 * t);
77
+ }
78
+ /**
79
+ * @typedef {import('./weather-map.js').WeatherMapOptions} PrecipitationMapOptions
80
+ */
81
+ // the scenes under clouds, with their light and shadows before: rain and snow may be active at
82
+ // once, the first one dims the light, the last one restores it
83
+ /** @type {WeakMap<import('@cesium/engine').Scene, {count: number, light: import('@cesium/engine').Light, intensity: number, shadows: boolean}>} */
84
+ const overcast = new WeakMap();
85
+ /**
86
+ * @param {import('@cesium/engine').Scene} scene
87
+ */
88
+ function acquireOvercast(scene) {
89
+ const clouds = overcast.get(scene);
90
+ if (clouds) {
91
+ clouds.count++;
92
+ return;
93
+ }
94
+ overcast.set(scene, { count: 1, light: scene.light, intensity: scene.light.intensity, shadows: scene.shadowMap.enabled });
95
+ scene.light.intensity *= OVERCAST;
96
+ scene.shadowMap.enabled = false;
97
+ }
98
+ /**
99
+ * The sunlight and the shadows under the clouds, in proportion to how hard it rains at the camera.
100
+ * @param {import('@cesium/engine').Scene} scene
101
+ * @param {number} local
102
+ */
103
+ function shadeOvercast(scene, local) {
104
+ const clouds = overcast.get(scene);
105
+ if (!clouds) {
106
+ return;
107
+ }
108
+ clouds.light.intensity = clouds.intensity * (1 - (1 - OVERCAST) * local);
109
+ scene.shadowMap.enabled = clouds.shadows && local < 0.5;
110
+ }
111
+ /**
112
+ * @param {import('@cesium/engine').Scene} scene
113
+ */
114
+ function releaseOvercast(scene) {
115
+ const clouds = overcast.get(scene);
116
+ if (!clouds || --clouds.count > 0) {
117
+ return;
118
+ }
119
+ clouds.light.intensity = clouds.intensity;
120
+ scene.shadowMap.enabled = clouds.shadows;
121
+ overcast.delete(scene);
122
+ }
123
+ /**
124
+ * Precipitation, from rain to snow: streaks of falling drops, or soft
125
+ * fluttering flakes, in layers at different distances over the whole scene,
126
+ * hidden behind what is nearer, a haze veiling the distance and shafts of
127
+ * heavier precipitation below the cloud base, in a gusting wind. Between rain
128
+ * and snow, the same drops slow down, shorten and soften, as in sleet. While
129
+ * active, the sky is overcast: no shadows, and a dimmer sunlight. The
130
+ * precipitation falls, so while active with an intensity the scene renders at
131
+ * 30 frames per second, also in requestRenderMode. With a map, it falls where
132
+ * the map says, in cells seen from outside through their shafts and haze,
133
+ * and the sky is overcast in proportion to the map at the camera, but not
134
+ * above the cloud base.
135
+ */
136
+ export default class Precipitation extends Effect {
137
+ /**
138
+ * @param {import('@cesium/engine').CesiumWidget} viewer
139
+ * @param {{intensity?: number, wind?: number, speed?: number, cloudBase?: number, snow?: number, map?: PrecipitationMapOptions}} [options]
140
+ */
141
+ constructor(viewer, options = {}) {
142
+ super(viewer);
143
+ this.intensity_ = options.intensity ?? 0.5;
144
+ this.wind_ = options.wind ?? 10;
145
+ this.speed_ = options.speed ?? 1;
146
+ this.cloudBase_ = options.cloudBase ?? 2500;
147
+ this.snow_ = options.snow ?? 0;
148
+ // without a map, it rains everywhere
149
+ this.weatherMap_ = new WeatherMap(1);
150
+ this.weatherMap_.map = options.map;
151
+ // the map's intensity at the camera, read each frame
152
+ this.localIntensity_ = 1;
153
+ // the scroll of the grid, added up from frame to frame: the speed changes with the snow, and
154
+ // time times the speed would move all the drops when it does
155
+ this.offset_ = 0;
156
+ this.lastTime_ = 0;
157
+ // what the layers share in the shader, computed here once rather than for each pixel
158
+ this.layerShape_ = Array.from({ length: LAYERS }, () => new Cartesian4());
159
+ this.layerLook_ = Array.from({ length: LAYERS }, () => new Cartesian4());
160
+ this.onPreRender_ = () => {
161
+ const now = performance.now() / 1000;
162
+ const dt = Math.min(now - this.lastTime_, MAX_STEP);
163
+ this.lastTime_ = now;
164
+ this.offset_ = (this.offset_ + (dt * this.fallSpeed_() * this.cellsAlong_()) / NEAREST) % PERIOD;
165
+ this.updateLayers_();
166
+ const { longitude, latitude, height } = this.viewer.scene.camera.positionCartographic;
167
+ this.localIntensity_ = this.weatherMap_.intensityAt(longitude, latitude);
168
+ // above the clouds, the sun shines
169
+ const below = 1 - smoothstep(this.cloudBase_ - CLOUD_BASE_FADE, this.cloudBase_ + CLOUD_BASE_FADE, height);
170
+ shadeOvercast(this.viewer.scene, this.localIntensity_ * below);
171
+ this.drawSkyTable_(this.viewer.scene);
172
+ };
173
+ // the clear sky the haze scatters, drawn at each frame (SkyTable.glsl)
174
+ /** @type {any} */
175
+ this.skyTable_ = undefined;
176
+ /** @type {any} */
177
+ this.skyTableFramebuffer_ = undefined;
178
+ /** @type {any} */
179
+ this.skyTableCommand_ = undefined;
180
+ }
181
+ /**
182
+ * Draws the sky table into its own texture before the stages run.
183
+ * @param {import('@cesium/engine').Scene} scene
184
+ */
185
+ drawSkyTable_(scene) {
186
+ // @ts-expect-error the scene's context is not typed
187
+ const context = scene.context;
188
+ if (!context) {
189
+ return;
190
+ }
191
+ if (!this.skyTable_) {
192
+ this.skyTable_ = new Texture({ context, width: SKY_TABLE + 1, height: 1 });
193
+ this.skyTableFramebuffer_ = new Framebuffer({ context, colorTextures: [this.skyTable_], destroyAttachments: false });
194
+ this.skyTableCommand_ = context.createViewportQuadCommand(Height + Fog + Phase + RainHaze + SkyTable, {
195
+ framebuffer: this.skyTableFramebuffer_,
196
+ renderState: RenderState.fromCache({ viewport: { x: 0, y: 0, width: SKY_TABLE + 1, height: 1 } }),
197
+ uniformMap: {
198
+ skyLightIntensity: () => scene.skyAtmosphere?.atmosphereLightIntensity ?? 50,
199
+ cloudBase: () => this.cloudBase_,
200
+ },
201
+ });
202
+ }
203
+ this.skyTableCommand_.execute(context);
204
+ }
205
+ destroySkyTable_() {
206
+ this.skyTableCommand_?.shaderProgram?.destroy();
207
+ this.skyTableCommand_ = undefined;
208
+ this.skyTableFramebuffer_ = this.skyTableFramebuffer_?.destroy();
209
+ this.skyTable_ = this.skyTable_?.destroy();
210
+ }
211
+ /**
212
+ * Speed of the drops or flakes, in m/s.
213
+ */
214
+ fallSpeed_() {
215
+ return this.speed_ * RAIN_VELOCITY * (SNOW_VELOCITY / RAIN_VELOCITY) ** this.snow_;
216
+ }
217
+ /**
218
+ * The layers' uniforms from the snow and the cells along the fall.
219
+ */
220
+ updateLayers_() {
221
+ const cellsAlong = this.cellsAlong_();
222
+ for (let i = 0; i < LAYERS; i++) {
223
+ const scale = 2 ** i;
224
+ // a whole number of cells around, so that they close up
225
+ const count = Math.floor(TWO_PI * CELLS_AROUND * scale + 0.5);
226
+ Cartesian4.fromElements(count / TWO_PI, cellsAlong * scale, count, NEAREST * scale, this.layerShape_[i]);
227
+ const rainRadius = Math.max(0.5, 1 - 0.25 * i);
228
+ const flakeRadius = Math.max(FLAKE_RADIUS / scale, 0.75);
229
+ const rainBrightness = 0.45 - 0.07 * i;
230
+ const snowBrightness = 0.8 - 0.12 * i;
231
+ // the largest flake and its soft edge, the nearest layer's wider, or the thin streak and its
232
+ const flakeReach = i === 0 ? 1.4 * flakeRadius * 1.8 : 1.4 * flakeRadius + 0.5;
233
+ Cartesian4.fromElements(rainBrightness + (snowBrightness - rainBrightness) * this.snow_, rainRadius + 0.5 + (flakeReach - rainRadius - 0.5) * this.snow_, rainRadius, flakeRadius, this.layerLook_[i]);
234
+ }
235
+ }
236
+ /**
237
+ * The length of a drop's trail, in cells: its motion over the exposure.
238
+ */
239
+ trail_() {
240
+ const exposure = RAIN_EXPOSURE * (SNOW_EXPOSURE / RAIN_EXPOSURE) ** this.snow_;
241
+ return Math.min((this.fallSpeed_() * exposure * this.cellsAlong_()) / NEAREST, MAX_TRAIL);
242
+ }
243
+ /**
244
+ * The cells of the grid along the fall per radian, at the nearest layer's distance.
245
+ */
246
+ cellsAlong_() {
247
+ return RAIN_CELLS_ALONG * (SNOW_CELLS_ALONG / RAIN_CELLS_ALONG) ** this.snow_;
248
+ }
249
+ /**
250
+ * @override
251
+ * @param {import('@cesium/engine').Scene} scene
252
+ */
253
+ createStage_(scene) {
254
+ // PrecipitationWind's uniforms, for both passes
255
+ const shared = {
256
+ ...heightUniforms(scene),
257
+ // reduced in double precision: a float would lose the time's fraction of a second
258
+ time: () => (performance.now() / 1000) % TIME_PERIOD,
259
+ wind: () => this.wind_,
260
+ speed: () => this.speed_,
261
+ cloudBase: () => this.cloudBase_,
262
+ intensity: () => this.intensity_,
263
+ snow: () => this.snow_,
264
+ };
265
+ const shafts = new PostProcessStage({
266
+ fragmentShader: EyeFromDepth + Noise + Height + PrecipitationWind + WeatherMapShader + Fog + Phase + RainHaze + CloudsShadow + PrecipitationShafts,
267
+ uniforms: {
268
+ ...shared,
269
+ // the shadow map of the clouds in the scene, whose gaps light the haze
270
+ shadowed: () => (cloudShadow(scene) ? 1 : 0),
271
+ // @ts-expect-error the scene's context is not typed
272
+ shadowMap: () => cloudShadow(scene)?.texture() ?? scene.context.defaultTexture,
273
+ shadowCenter: () => cloudShadow(scene)?.center ?? Cartesian3.ZERO,
274
+ shadowExtent: () => cloudShadow(scene)?.extent() ?? 1,
275
+ shadowBase: () => cloudShadow(scene)?.base() ?? 0,
276
+ shadowTop: () => cloudShadow(scene)?.top() ?? 0,
277
+ // @ts-expect-error the scene's context is not typed
278
+ map: () => this.weatherMap_.texture(scene.context),
279
+ // @ts-expect-error the scene's context is not typed
280
+ nextMap: () => this.weatherMap_.nextTexture(scene.context),
281
+ mapBlend: () => this.weatherMap_.blend,
282
+ mapBounds: () => this.weatherMap_.bounds,
283
+ },
284
+ textureScale: SHAFT_SCALE,
285
+ });
286
+ // blurred at the same resolution
287
+ const blurredShafts = new PostProcessStage({
288
+ fragmentShader: PrecipitationShaftBlur,
289
+ uniforms: { shaftTexture: shafts.name },
290
+ textureScale: SHAFT_SCALE,
291
+ });
292
+ const stage = new PostProcessStageComposite({
293
+ stages: [
294
+ shafts,
295
+ blurredShafts,
296
+ new PostProcessStage({
297
+ fragmentShader: EyeFromDepth + Hash + Height + PrecipitationWind + Fog + Phase + RainHaze + PrecipitationShader,
298
+ uniforms: {
299
+ ...shared,
300
+ shaftTexture: blurredShafts.name,
301
+ localIntensity: () => this.localIntensity_,
302
+ clouds: () => (hasCloudCover(scene) ? 1 : 0),
303
+ shadowed: () => (cloudShadow(scene) ? 1 : 0),
304
+ // @ts-expect-error the scene's context is not typed
305
+ skyTable: () => this.skyTable_ ?? scene.context.defaultTexture,
306
+ trail: () => this.trail_(),
307
+ layerShape: () => this.layerShape_,
308
+ layerLook: () => this.layerLook_,
309
+ offset: () => this.offset_,
310
+ },
311
+ }),
312
+ ],
313
+ // the precipitation is drawn over the scene, not over the shafts
314
+ inputPreviousStageTexture: false,
315
+ });
316
+ // no pass, and no frames, without an intensity
317
+ stage.enabled = this.intensity_ > 0;
318
+ return stage;
319
+ }
320
+ /**
321
+ * @override
322
+ * @param {import('@cesium/engine').Scene} scene
323
+ */
324
+ activated_(scene) {
325
+ this.lastTime_ = performance.now() / 1000;
326
+ this.updateLayers_();
327
+ scene.preRender.addEventListener(this.onPreRender_);
328
+ acquireTerrainDepth(scene);
329
+ acquireOvercast(scene);
330
+ if (this.intensity_ > 0) {
331
+ acquireFrames(scene, FRAME_RATE);
332
+ }
333
+ }
334
+ /**
335
+ * @override
336
+ * @param {import('@cesium/engine').Scene} scene
337
+ */
338
+ deactivating_(scene) {
339
+ if (this.intensity_ > 0) {
340
+ releaseFrames(scene, FRAME_RATE);
341
+ }
342
+ releaseOvercast(scene);
343
+ releaseTerrainDepth(scene);
344
+ scene.preRender.removeEventListener(this.onPreRender_);
345
+ this.destroySkyTable_();
346
+ this.weatherMap_.destroy();
347
+ }
348
+ /**
349
+ * Where it rains, or undefined for everywhere: an image whose red channel
350
+ * is the local intensity, 0 to 1, over a rectangle of longitudes and
351
+ * latitudes, north up. The precipitation fades in over a pixel of the
352
+ * image. Set it again after drawing on the image, which is read then.
353
+ */
354
+ get map() {
355
+ return this.weatherMap_.map;
356
+ }
357
+ /**
358
+ * The map's intensity at the camera, 0 to 1, read each frame while active;
359
+ * 1 without a map.
360
+ */
361
+ get localIntensity() {
362
+ return this.localIntensity_;
363
+ }
364
+ set map(value) {
365
+ this.weatherMap_.map = value;
366
+ this.viewer.scene.requestRender();
367
+ }
368
+ /**
369
+ * The map the precipitation crossfades to by the map blend, over the same
370
+ * rectangle, as the radar's next hour, or undefined for none.
371
+ */
372
+ get nextMap() {
373
+ return this.weatherMap_.nextMap;
374
+ }
375
+ set nextMap(value) {
376
+ this.weatherMap_.nextMap = value;
377
+ this.viewer.scene.requestRender();
378
+ }
379
+ /**
380
+ * From the map, 0, to the next map, 1.
381
+ */
382
+ get mapBlend() {
383
+ return this.weatherMap_.blend;
384
+ }
385
+ set mapBlend(value) {
386
+ this.weatherMap_.blend = value;
387
+ this.viewer.scene.requestRender();
388
+ }
389
+ /**
390
+ * How hard it rains or snows, 0 to 1: the share of the drops or flakes
391
+ * shown, their opacity, and the haze, from 39 km of visibility to 4.4 km in
392
+ * the rain, taken as 0 to 10 mm/h under a square root, from 20 km to 500 m in
393
+ * the snow.
394
+ */
395
+ get intensity() {
396
+ return this.intensity_;
397
+ }
398
+ set intensity(value) {
399
+ const raining = this.intensity_ > 0;
400
+ this.intensity_ = value;
401
+ if (this.stage_ && raining !== value > 0) {
402
+ this.stage_.enabled = value > 0;
403
+ (value > 0 ? acquireFrames : releaseFrames)(this.viewer.scene, FRAME_RATE);
404
+ }
405
+ this.viewer.scene.requestRender();
406
+ }
407
+ /**
408
+ * Tilt of the fall from the vertical, toward the east, in degrees.
409
+ */
410
+ get wind() {
411
+ return this.wind_;
412
+ }
413
+ set wind(value) {
414
+ this.wind_ = value;
415
+ this.viewer.scene.requestRender();
416
+ }
417
+ /**
418
+ * Speed of the precipitation, 1 at its terminal velocity, 9 m/s for the
419
+ * drops and 1 m/s for the flakes: faster drops draw longer streaks.
420
+ */
421
+ get speed() {
422
+ return this.speed_;
423
+ }
424
+ set speed(value) {
425
+ this.speed_ = value;
426
+ this.viewer.scene.requestRender();
427
+ }
428
+ /**
429
+ * Altitude of the cloud base, in meters above the ellipsoid: the
430
+ * precipitation falls below it, in shafts, and none falls around a camera
431
+ * above it.
432
+ */
433
+ get cloudBase() {
434
+ return this.cloudBase_;
435
+ }
436
+ set cloudBase(value) {
437
+ this.cloudBase_ = value;
438
+ this.viewer.scene.requestRender();
439
+ }
440
+ /**
441
+ * How much the rain has turned to snow, 0 to 1: the drops slow down from
442
+ * 9 m/s to 1 m/s, shorten and soften into flakes, with the haze, its light
443
+ * and the shafts going from the rain's to the snow's. In between, they are
444
+ * the short, soft streaks of sleet.
445
+ */
446
+ get snow() {
447
+ return this.snow_;
448
+ }
449
+ set snow(value) {
450
+ this.snow_ = value;
451
+ this.viewer.scene.requestRender();
452
+ }
453
+ }
454
+ //# sourceMappingURL=precipitation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"precipitation.js","sourceRoot":"","sources":["../src/precipitation.js"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAE,UAAU,EAAE,IAAI,IAAI,UAAU,EAAC,MAAM,cAAc,CAAC;AACxE,OAAO,EAAC,gBAAgB,EAAE,yBAAyB,EAAC,MAAM,gBAAgB,CAAC;AAC3E,2GAA2G;AAC3G,OAAO,EAAC,WAAW,EAAE,WAAW,EAAE,OAAO,EAAC,MAAM,gBAAgB,CAAC;AACjE,OAAO,EAAC,WAAW,EAAE,aAAa,EAAC,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAC,mBAAmB,EAAE,mBAAmB,EAAC,MAAM,iBAAiB,CAAC;AACzE,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAC,aAAa,EAAE,aAAa,EAAC,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAC,cAAc,EAAC,MAAM,aAAa,CAAC;AAC3C,OAAO,YAAY,MAAM,2BAA2B,CAAC;AACrD,OAAO,YAAY,MAAM,2BAA2B,CAAC;AACrD,OAAO,GAAG,MAAM,kBAAkB,CAAC;AACnC,OAAO,IAAI,MAAM,mBAAmB,CAAC;AACrC,OAAO,MAAM,MAAM,qBAAqB,CAAC;AACzC,OAAO,KAAK,MAAM,oBAAoB,CAAC;AACvC,OAAO,KAAK,MAAM,oBAAoB,CAAC;AACvC,OAAO,mBAAmB,MAAM,4BAA4B,CAAC;AAC7D,OAAO,sBAAsB,MAAM,qCAAqC,CAAC;AACzE,OAAO,mBAAmB,MAAM,kCAAkC,CAAC;AACnE,OAAO,iBAAiB,MAAM,gCAAgC,CAAC;AAC/D,OAAO,QAAQ,MAAM,uBAAuB,CAAC;AAC7C,OAAO,QAAQ,MAAM,uBAAuB,CAAC;AAC7C,OAAO,gBAAgB,MAAM,yBAAyB,CAAC;AACvD,OAAO,UAAU,MAAM,kBAAkB,CAAC;AAE1C,4DAA4D;AAC5D,MAAM,UAAU,GAAG,EAAE,CAAC;AACtB,iGAAiG;AACjG,MAAM,WAAW,GAAG,IAAI,CAAC;AACzB,mGAAmG;AACnG,2CAA2C;AAC3C,MAAM,aAAa,GAAG,CAAC,CAAC;AACxB,MAAM,aAAa,GAAG,CAAC,CAAC;AACxB,qGAAqG;AACrG,kGAAkG;AAClG,6FAA6F;AAC7F,iDAAiD;AACjD,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAC9B,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAC5B,MAAM,OAAO,GAAG,CAAC,CAAC;AAClB,qGAAqG;AACrG,qGAAqG;AACrG,6FAA6F;AAC7F,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE,CAAC;AAC7B,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE,CAAC;AAC7B,2FAA2F;AAC3F,MAAM,SAAS,GAAG,CAAC,CAAC;AACpB,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;AACjC,kGAAkG;AAClG,kGAAkG;AAClG,8CAA8C;AAC9C,MAAM,MAAM,GAAG,CAAC,CAAC;AACjB,MAAM,YAAY,GAAG,EAAE,CAAC;AACxB,MAAM,YAAY,GAAG,CAAC,CAAC;AACvB,sEAAsE;AACtE,MAAM,MAAM,GAAG,IAAI,CAAC;AACpB,kFAAkF;AAClF,MAAM,QAAQ,GAAG,GAAG,CAAC;AACrB,iGAAiG;AACjG,8EAA8E;AAC9E,MAAM,WAAW,GAAG,KAAK,CAAC;AAC1B,iGAAiG;AACjG,MAAM,SAAS,GAAG,EAAE,CAAC;AACrB,6DAA6D;AAC7D,MAAM,QAAQ,GAAG,GAAG,CAAC;AACrB,iGAAiG;AACjG,6CAA6C;AAC7C,MAAM,eAAe,GAAG,EAAE,CAAC;AAE3B;;;;;GAKG;AACH,SAAS,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC;IACjC,MAAM,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAChE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAC7B,CAAC;AAED;;GAEG;AAEH,+FAA+F;AAC/F,+DAA+D;AAC/D,mJAAmJ;AACnJ,MAAM,QAAQ,GAAG,IAAI,OAAO,EAAE,CAAC;AAE/B;;GAEG;AACH,SAAS,eAAe,CAAC,KAAK;IAC5B,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACnC,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,OAAO;IACT,CAAC;IACD,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,EAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,OAAO,EAAC,CAAC,CAAC;IACxH,KAAK,CAAC,KAAK,CAAC,SAAS,IAAI,QAAQ,CAAC;IAClC,KAAK,CAAC,SAAS,CAAC,OAAO,GAAG,KAAK,CAAC;AAClC,CAAC;AAED;;;;GAIG;AACH,SAAS,aAAa,CAAC,KAAK,EAAE,KAAK;IACjC,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACnC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO;IACT,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,GAAG,KAAK,CAAC,CAAC;IACzE,KAAK,CAAC,SAAS,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,KAAK,GAAG,GAAG,CAAC;AAC1D,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,KAAK;IAC5B,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACnC,IAAI,CAAC,MAAM,IAAI,EAAE,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;QAClC,OAAO;IACT,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;IAC1C,KAAK,CAAC,SAAS,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IACzC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACzB,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,MAAM;IAC/C;;;OAGG;IACH,YAAY,MAAM,EAAE,OAAO,GAAG,EAAE;QAC9B,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,SAAS,IAAI,GAAG,CAAC;QAC3C,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC;QAChC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC;QAC5C,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC;QAC/B,qCAAqC;QACrC,IAAI,CAAC,WAAW,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;QACrC,IAAI,CAAC,WAAW,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;QACnC,qDAAqD;QACrD,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;QACzB,6FAA6F;QAC7F,6DAA6D;QAC7D,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;QACjB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QACnB,qFAAqF;QACrF,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,MAAM,EAAC,EAAE,GAAG,EAAE,CAAC,IAAI,UAAU,EAAE,CAAC,CAAC;QACxE,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,MAAM,EAAC,EAAE,GAAG,EAAE,CAAC,IAAI,UAAU,EAAE,CAAC,CAAC;QACvE,IAAI,CAAC,YAAY,GAAG,GAAG,EAAE;YACvB,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;YACrC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YACpD,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;YACrB,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,OAAO,CAAC,GAAG,MAAM,CAAC;YACjG,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,MAAM,EAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAC,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC;YACpF,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YACzE,mCAAmC;YACnC,MAAM,KAAK,GAAG,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,UAAU,GAAG,eAAe,EAAE,IAAI,CAAC,UAAU,GAAG,eAAe,EAAE,MAAM,CAAC,CAAC;YAC3G,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,CAAC;YAC/D,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACxC,CAAC,CAAC;QACF,uEAAuE;QACvE,kBAAkB;QAClB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,kBAAkB;QAClB,IAAI,CAAC,oBAAoB,GAAG,SAAS,CAAC;QACtC,kBAAkB;QAClB,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;IACpC,CAAC;IAED;;;OAGG;IACH,aAAa,CAAC,KAAK;QACjB,oDAAoD;QACpD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC9B,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO;QACT,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,IAAI,CAAC,SAAS,GAAG,IAAI,OAAO,CAAC,EAAC,OAAO,EAAE,KAAK,EAAE,SAAS,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,EAAC,CAAC,CAAC;YACzE,IAAI,CAAC,oBAAoB,GAAG,IAAI,WAAW,CAAC,EAAC,OAAO,EAAE,aAAa,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,kBAAkB,EAAE,KAAK,EAAC,CAAC,CAAC;YACnH,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,yBAAyB,CAAC,MAAM,GAAG,GAAG,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,EAAE;gBACpG,WAAW,EAAE,IAAI,CAAC,oBAAoB;gBACtC,WAAW,EAAE,WAAW,CAAC,SAAS,CAAC,EAAC,QAAQ,EAAE,EAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,EAAC,EAAC,CAAC;gBAC7F,UAAU,EAAE;oBACV,iBAAiB,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,aAAa,EAAE,wBAAwB,IAAI,EAAE;oBAC5E,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU;iBACjC;aACF,CAAC,CAAC;QACL,CAAC;QACD,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACzC,CAAC;IAED,gBAAgB;QACd,IAAI,CAAC,gBAAgB,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC;QAChD,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;QAClC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,EAAE,OAAO,EAAE,CAAC;QACjE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC;IAC7C,CAAC;IAED;;OAEG;IACH,UAAU;QACR,OAAO,IAAI,CAAC,MAAM,GAAG,aAAa,GAAG,CAAC,aAAa,GAAG,aAAa,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC;IACrF,CAAC;IAED;;OAEG;IACH,aAAa;QACX,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAChC,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC;YACrB,wDAAwD;YACxD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,YAAY,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC;YAC9D,UAAU,CAAC,YAAY,CAAC,KAAK,GAAG,MAAM,EAAE,UAAU,GAAG,KAAK,EAAE,KAAK,EAAE,OAAO,GAAG,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;YACzG,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC;YAC/C,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,GAAG,KAAK,EAAE,IAAI,CAAC,CAAC;YACzD,MAAM,cAAc,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC;YACvC,MAAM,cAAc,GAAG,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC;YACtC,6FAA6F;YAC7F,MAAM,UAAU,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,WAAW,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,WAAW,GAAG,GAAG,CAAC;YAC/E,UAAU,CAAC,YAAY,CACrB,cAAc,GAAG,CAAC,cAAc,GAAG,cAAc,CAAC,GAAG,IAAI,CAAC,KAAK,EAC/D,UAAU,GAAG,GAAG,GAAG,CAAC,UAAU,GAAG,UAAU,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,EAC/D,UAAU,EACV,WAAW,EACX,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CACnB,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,MAAM,QAAQ,GAAG,aAAa,GAAG,CAAC,aAAa,GAAG,aAAa,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC;QAC/E,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,OAAO,EAAE,SAAS,CAAC,CAAC;IAC5F,CAAC;IAED;;OAEG;IACH,WAAW;QACT,OAAO,gBAAgB,GAAG,CAAC,gBAAgB,GAAG,gBAAgB,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC;IAChF,CAAC;IAED;;;OAGG;IACH,YAAY,CAAC,KAAK;QAChB,gDAAgD;QAChD,MAAM,MAAM,GAAG;YACb,GAAG,cAAc,CAAC,KAAK,CAAC;YACxB,kFAAkF;YAClF,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,WAAW;YACpD,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK;YACtB,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM;YACxB,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU;YAChC,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU;YAChC,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK;SACvB,CAAC;QACF,MAAM,MAAM,GAAG,IAAI,gBAAgB,CAAC;YAClC,cAAc,EAAE,YAAY,GAAG,KAAK,GAAG,MAAM,GAAG,iBAAiB,GAAG,gBAAgB,GAAG,GAAG,GAAG,KAAK,GAAG,QAAQ,GAAG,YAAY,GAAG,mBAAmB;YAClJ,QAAQ,EAAE;gBACR,GAAG,MAAM;gBACT,uEAAuE;gBACvE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC5C,oDAAoD;gBACpD,SAAS,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,cAAc;gBAC9E,YAAY,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,MAAM,IAAI,UAAU,CAAC,IAAI;gBACjE,YAAY,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC;gBACrD,UAAU,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC;gBACjD,SAAS,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC;gBAC/C,oDAAoD;gBACpD,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;gBAClD,oDAAoD;gBACpD,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC;gBAC1D,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK;gBACtC,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM;aACzC;YACD,YAAY,EAAE,WAAW;SAC1B,CAAC,CAAC;QACH,iCAAiC;QACjC,MAAM,aAAa,GAAG,IAAI,gBAAgB,CAAC;YACzC,cAAc,EAAE,sBAAsB;YACtC,QAAQ,EAAE,EAAC,YAAY,EAAE,MAAM,CAAC,IAAI,EAAC;YACrC,YAAY,EAAE,WAAW;SAC1B,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,yBAAyB,CAAC;YAC1C,MAAM,EAAE;gBACN,MAAM;gBACN,aAAa;gBACb,IAAI,gBAAgB,CAAC;oBACnB,cAAc,EAAE,YAAY,GAAG,IAAI,GAAG,MAAM,GAAG,iBAAiB,GAAG,GAAG,GAAG,KAAK,GAAG,QAAQ,GAAG,mBAAmB;oBAC/G,QAAQ,EAAE;wBACR,GAAG,MAAM;wBACT,YAAY,EAAE,aAAa,CAAC,IAAI;wBAChC,cAAc,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe;wBAC1C,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;wBAC5C,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;wBAC5C,oDAAoD;wBACpD,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,cAAc;wBAC9D,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE;wBAC1B,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW;wBAClC,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU;wBAChC,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO;qBAC3B;iBACF,CAAC;aACH;YACD,iEAAiE;YACjE,yBAAyB,EAAE,KAAK;SACjC,CAAC,CAAC;QACH,+CAA+C;QAC/C,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QACpC,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;OAGG;IACH,UAAU,CAAC,KAAK;QACd,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;QAC1C,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,KAAK,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACpD,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAC3B,eAAe,CAAC,KAAK,CAAC,CAAC;QACvB,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC;YACxB,aAAa,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,aAAa,CAAC,KAAK;QACjB,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC;YACxB,aAAa,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QACnC,CAAC;QACD,eAAe,CAAC,KAAK,CAAC,CAAC;QACvB,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAC3B,KAAK,CAAC,SAAS,CAAC,mBAAmB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACvD,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED;;;;;OAKG;IACH,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;IAC9B,CAAC;IAED;;;OAGG;IACH,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAED,IAAI,GAAG,CAAC,KAAK;QACX,IAAI,CAAC,WAAW,CAAC,GAAG,GAAG,KAAK,CAAC;QAC7B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;IACpC,CAAC;IAED;;;OAGG;IACH,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;IAClC,CAAC;IAED,IAAI,OAAO,CAAC,KAAK;QACf,IAAI,CAAC,WAAW,CAAC,OAAO,GAAG,KAAK,CAAC;QACjC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;IAChC,CAAC;IAED,IAAI,QAAQ,CAAC,KAAK;QAChB,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,KAAK,CAAC;QAC/B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;IACpC,CAAC;IAED;;;;;OAKG;IACH,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,IAAI,SAAS,CAAC,KAAK;QACjB,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QACpC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,IAAI,CAAC,MAAM,IAAI,OAAO,KAAK,KAAK,GAAG,CAAC,EAAE,CAAC;YACzC,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,KAAK,GAAG,CAAC,CAAC;YAChC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QAC7E,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,IAAI,IAAI,CAAC,KAAK;QACZ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;IACpC,CAAC;IAED;;;OAGG;IACH,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,IAAI,KAAK,CAAC,KAAK;QACb,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;IACpC,CAAC;IAED;;;;OAIG;IACH,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,IAAI,SAAS,CAAC,KAAK;QACjB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;IACpC,CAAC;IAED;;;;;OAKG;IACH,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,IAAI,IAAI,CAAC,KAAK;QACZ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;IACpC,CAAC;CACF"}