@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,301 @@
1
+ import { Cartesian3, Cartesian4, Cartographic, Event, Matrix4, Math as CesiumMath } from '@cesium/core';
2
+ import { PostProcessStage } from '@cesium/engine';
3
+ import { acquireTerrainDepth, releaseTerrainDepth } from './depth-test.js';
4
+ import Effect from './effect.js';
5
+ import { acquireFrames, releaseFrames } from './frame-clock.js';
6
+ import { advanceStrikes, MAX_STRIKES } from './strikes.js';
7
+ import WeatherMap from './weather-map.js';
8
+ import EyeFromDepth from './shaders/EyeFromDepth.js';
9
+ import Hash from './shaders/Hash.js';
10
+ import LightningShader from './shaders/Lightning.js';
11
+ // the flickering of the strokes is tens of milliseconds long: a render for each frame of a video
12
+ const FRAME_RATE = 30;
13
+ // strikes per second at intensity 1
14
+ const MAX_RATE = 0.4;
15
+ // the nearest a strike lands, in meters, and the least height of its channel
16
+ const MIN_DISTANCE = 300;
17
+ const MIN_CHANNEL = 500;
18
+ // longest time between two frames, in seconds, after a pause in requestRenderMode
19
+ const MAX_STEP = 0.1;
20
+ const TWO_PI = CesiumMath.TWO_PI;
21
+ // the branches of a channel (Lightning.glsl's BRANCHES), the share of them that exist, and how far down
22
+ // the channel they leave it and at what angle from it, in radians, at most
23
+ const BRANCHES = 5;
24
+ const BRANCH_ODDS = 0.7;
25
+ const BRANCH_ANGLE = [0.25, 0.75];
26
+ // how far from the camera's heading a strike lands in front of it, in radians
27
+ const AHEAD = CesiumMath.PI / 6;
28
+ // the radar's intensity, 0 to 1, over which a point goes from never to always struck: from about
29
+ // 2.5 to 8 mm/h, the map being the square root of the rate over 10 mm/h
30
+ const STORM = [0.5, 0.9];
31
+ // the farthest the strikes land from a camera high above, in meters, and the most the chance of a
32
+ // strike grows with the area they land in
33
+ const MAX_RADIUS = 150000;
34
+ const MAX_AREA = 16;
35
+ // the points tried for a strike before giving it up
36
+ const ATTEMPTS = 8;
37
+ // the glow of a strike in the clouds is this high above the cloud base, in meters
38
+ const GLOW_HEIGHT = 1500;
39
+ // the glow and the channel cross-fade over this height on either side of the cloud base, in meters
40
+ const ABOVE_FADE = 200;
41
+ /**
42
+ * @param {number} edge0
43
+ * @param {number} edge1
44
+ * @param {number} x
45
+ */
46
+ function smoothstep(edge0, edge1, x) {
47
+ const t = CesiumMath.clamp((x - edge0) / (edge1 - edge0), 0, 1);
48
+ return t * t * (3 - 2 * t);
49
+ }
50
+ /**
51
+ * @typedef {{start: number, seed: number, ground: Cartesian3, top: Cartesian3, glow: Cartesian3, glowIntensity: number, branches: number[][]}} Strike
52
+ */
53
+ const eyeScratch = new Cartesian3();
54
+ /**
55
+ * Lightning: cloud-to-ground strikes at random around the camera, each a
56
+ * branching channel from the cloud base to the ground with 2 to 4 return
57
+ * strokes tens of milliseconds apart, a hot core in a halo that flickers with
58
+ * them, hidden behind nearer terrain, and a flash that lights the land around
59
+ * the strike and the clouds above it. The strikes are placed on the ground,
60
+ * so they stay where they are as the camera moves. With a map, they land on
61
+ * heavy rain, around what the camera sees: within the radius, or as far as
62
+ * the camera is high, up to 150 km. The strokes flicker, so while it is active
63
+ * with an intensity the scene renders at 30 frames per second, also in
64
+ * requestRenderMode.
65
+ */
66
+ export default class Lightning extends Effect {
67
+ /**
68
+ * @param {import('@cesium/engine').CesiumWidget} viewer
69
+ * @param {{intensity?: number, cloudBase?: number, radius?: number, inFront?: boolean, map?: import('./weather-map.js').WeatherMapOptions}} [options]
70
+ */
71
+ constructor(viewer, options = {}) {
72
+ super(viewer);
73
+ this.intensity_ = options.intensity ?? 0.5;
74
+ this.cloudBase_ = options.cloudBase ?? 2500;
75
+ this.radius_ = options.radius ?? 5000;
76
+ this.inFront_ = options.inFront ?? false;
77
+ // without a map, it strikes anywhere in the radius
78
+ this.weatherMap_ = new WeatherMap(1);
79
+ this.weatherMap_.map = options.map;
80
+ /** @type {Strike[]} */
81
+ this.strikes_ = [];
82
+ // what the shader gets of each strike, in eye coordinates: the top of its channel and its seed,
83
+ // its foot and its age, negative for a slot without a strike
84
+ this.strikeTop_ = Array.from({ length: MAX_STRIKES }, () => new Cartesian4());
85
+ this.strikeBottom_ = Array.from({ length: MAX_STRIKES }, () => new Cartesian4(0, 0, 0, -1));
86
+ // and each one's branches: where along the channel they leave it, the cosine and the sine of their
87
+ // angle from it, and their length as a share of the channel's, 0 for a branch that does not exist
88
+ this.strikeBranches_ = Array.from({ length: MAX_STRIKES * BRANCHES }, () => new Cartesian4());
89
+ // the glow of each strike in the clouds, in eye coordinates, and its intensity, 0 for none
90
+ this.strikeGlow_ = Array.from({ length: MAX_STRIKES }, () => new Cartesian4());
91
+ // 0 below the cloud base to 1 above it, where the glow replaces the channel
92
+ this.above_ = 0;
93
+ this.lastTime_ = 0;
94
+ /**
95
+ * Raised with the foot of each new strike on the ground, as it starts.
96
+ * @type {Event<(ground: Cartesian3) => void>}
97
+ */
98
+ this.strikeEvent = new Event();
99
+ this.onPreRender_ = () => {
100
+ const scene = this.viewer.scene;
101
+ const now = performance.now() / 1000;
102
+ const dt = Math.min(now - this.lastTime_, MAX_STEP);
103
+ this.lastTime_ = now;
104
+ const area = Math.min((this.usedRadius_() / this.radius_) ** 2, MAX_AREA);
105
+ advanceStrikes(this.strikes_, now, dt, this.intensity_ * MAX_RATE * area, Math.random, (start) => {
106
+ const strike = this.createStrike_(start);
107
+ if (strike) {
108
+ this.strikeEvent.raiseEvent(strike.ground);
109
+ }
110
+ return strike;
111
+ });
112
+ this.above_ = CesiumMath.clamp((scene.camera.positionCartographic.height - this.cloudBase_ + ABOVE_FADE) / (2 * ABOVE_FADE), 0, 1);
113
+ const view = scene.camera.viewMatrix;
114
+ for (let i = 0; i < MAX_STRIKES; i++) {
115
+ const strike = this.strikes_[i];
116
+ if (!strike) {
117
+ this.strikeBottom_[i].w = -1;
118
+ this.strikeGlow_[i].w = 0;
119
+ continue;
120
+ }
121
+ Matrix4.multiplyByPoint(view, strike.top, eyeScratch);
122
+ Cartesian4.fromElements(eyeScratch.x, eyeScratch.y, eyeScratch.z, strike.seed, this.strikeTop_[i]);
123
+ Matrix4.multiplyByPoint(view, strike.ground, eyeScratch);
124
+ Cartesian4.fromElements(eyeScratch.x, eyeScratch.y, eyeScratch.z, now - strike.start, this.strikeBottom_[i]);
125
+ for (let j = 0; j < BRANCHES; j++) {
126
+ const [at, angle, length] = strike.branches[j];
127
+ Cartesian4.fromElements(at, Math.cos(angle), Math.sin(angle), length, this.strikeBranches_[i * BRANCHES + j]);
128
+ }
129
+ Matrix4.multiplyByPoint(view, strike.glow, eyeScratch);
130
+ Cartesian4.fromElements(eyeScratch.x, eyeScratch.y, eyeScratch.z, strike.glowIntensity, this.strikeGlow_[i]);
131
+ }
132
+ };
133
+ }
134
+ /**
135
+ * How far from the camera the strikes land: the radius, or the camera's
136
+ * height when it is higher, so that they land around what it sees.
137
+ */
138
+ usedRadius_() {
139
+ const height = this.viewer.scene.camera.positionCartographic.height;
140
+ return Math.min(Math.max(this.radius_, height), MAX_RADIUS);
141
+ }
142
+ /**
143
+ * A strike at a random place within the radius, uniformly over the area,
144
+ * kept with a chance of the map's intensity there.
145
+ * @param {number} start
146
+ * @return {Strike | undefined}
147
+ */
148
+ createStrike_(start) {
149
+ const scene = this.viewer.scene;
150
+ const { longitude, latitude } = scene.camera.positionCartographic;
151
+ const radius = scene.ellipsoid.maximumRadius;
152
+ // a few points tried, so that the strikes find the heavy rain within the radius rather than
153
+ // mostly missing it
154
+ for (let attempt = 0; attempt < ATTEMPTS; attempt++) {
155
+ const azimuth = this.inFront_ ? scene.camera.heading + (Math.random() * 2 - 1) * AHEAD : Math.random() * TWO_PI;
156
+ const distance = MIN_DISTANCE + Math.max(this.usedRadius_() - MIN_DISTANCE, 0) * Math.sqrt(Math.random());
157
+ const strikeLongitude = longitude + (distance * Math.sin(azimuth)) / (radius * Math.cos(latitude));
158
+ const strikeLatitude = latitude + (distance * Math.cos(azimuth)) / radius;
159
+ const glowIntensity = this.weatherMap_.intensityAt(strikeLongitude, strikeLatitude);
160
+ if (!this.weatherMap_.map || Math.random() < smoothstep(STORM[0], STORM[1], glowIntensity)) {
161
+ return this.strikeAt_(start, strikeLongitude, strikeLatitude, glowIntensity);
162
+ }
163
+ }
164
+ return undefined;
165
+ }
166
+ /**
167
+ * A strike at a place, with its random branches.
168
+ * @param {number} start
169
+ * @param {number} strikeLongitude radians
170
+ * @param {number} strikeLatitude radians
171
+ * @param {number} glowIntensity the map's intensity there
172
+ * @return {Strike}
173
+ */
174
+ strikeAt_(start, strikeLongitude, strikeLatitude, glowIntensity) {
175
+ const scene = this.viewer.scene;
176
+ const branches = Array.from({ length: BRANCHES }, () => {
177
+ const at = 0.1 + 0.7 * Math.random();
178
+ const side = Math.random() < 0.5 ? -1 : 1;
179
+ const angle = side * (BRANCH_ANGLE[0] + (BRANCH_ANGLE[1] - BRANCH_ANGLE[0]) * Math.random());
180
+ return [at, angle, Math.random() < BRANCH_ODDS ? (1 - at) * (0.25 + 0.4 * Math.random()) : 0];
181
+ });
182
+ const height = scene.globe?.getHeight(new Cartographic(strikeLongitude, strikeLatitude)) ?? 0;
183
+ return {
184
+ start,
185
+ seed: Math.random() * 100,
186
+ branches,
187
+ ground: Cartesian3.fromRadians(strikeLongitude, strikeLatitude, height, scene.ellipsoid),
188
+ top: Cartesian3.fromRadians(strikeLongitude, strikeLatitude, Math.max(this.cloudBase_, height + MIN_CHANNEL), scene.ellipsoid),
189
+ glow: Cartesian3.fromRadians(strikeLongitude, strikeLatitude, this.cloudBase_ + GLOW_HEIGHT, scene.ellipsoid),
190
+ glowIntensity,
191
+ };
192
+ }
193
+ /**
194
+ * @override
195
+ * @param {import('@cesium/engine').Scene} _scene
196
+ */
197
+ createStage_(_scene) {
198
+ const stage = new PostProcessStage({
199
+ fragmentShader: Hash + EyeFromDepth + LightningShader,
200
+ uniforms: {
201
+ strikeTop: () => this.strikeTop_,
202
+ strikeBottom: () => this.strikeBottom_,
203
+ strikeBranches: () => this.strikeBranches_,
204
+ strikeGlow: () => this.strikeGlow_,
205
+ above: () => this.above_,
206
+ },
207
+ });
208
+ // no pass, and no frames, without an intensity
209
+ stage.enabled = this.intensity_ > 0;
210
+ return stage;
211
+ }
212
+ /**
213
+ * @override
214
+ * @param {import('@cesium/engine').Scene} scene
215
+ */
216
+ activated_(scene) {
217
+ this.lastTime_ = performance.now() / 1000;
218
+ scene.preRender.addEventListener(this.onPreRender_);
219
+ acquireTerrainDepth(scene);
220
+ if (this.intensity_ > 0) {
221
+ acquireFrames(scene, FRAME_RATE);
222
+ }
223
+ }
224
+ /**
225
+ * @override
226
+ * @param {import('@cesium/engine').Scene} scene
227
+ */
228
+ deactivating_(scene) {
229
+ if (this.intensity_ > 0) {
230
+ releaseFrames(scene, FRAME_RATE);
231
+ }
232
+ releaseTerrainDepth(scene);
233
+ scene.preRender.removeEventListener(this.onPreRender_);
234
+ this.strikes_.length = 0;
235
+ for (const bottom of this.strikeBottom_) {
236
+ bottom.w = -1;
237
+ }
238
+ for (const glow of this.strikeGlow_) {
239
+ glow.w = 0;
240
+ }
241
+ }
242
+ /**
243
+ * How active the storm is, 0 to 1: the strikes start at random, up to one
244
+ * every 2.5 seconds on average.
245
+ */
246
+ get intensity() {
247
+ return this.intensity_;
248
+ }
249
+ set intensity(value) {
250
+ const striking = this.intensity_ > 0;
251
+ this.intensity_ = value;
252
+ if (this.stage_ && striking !== value > 0) {
253
+ this.stage_.enabled = value > 0;
254
+ (value > 0 ? acquireFrames : releaseFrames)(this.viewer.scene, FRAME_RATE);
255
+ }
256
+ this.viewer.scene.requestRender();
257
+ }
258
+ /**
259
+ * Altitude of the cloud base, in meters above the ellipsoid: the channels
260
+ * start there, and none strike around a camera above it.
261
+ */
262
+ get cloudBase() {
263
+ return this.cloudBase_;
264
+ }
265
+ set cloudBase(value) {
266
+ this.cloudBase_ = value;
267
+ this.viewer.scene.requestRender();
268
+ }
269
+ /**
270
+ * Whether the strikes land in front of the camera, within 30 degrees of
271
+ * where it looks, rather than all around it.
272
+ */
273
+ get inFront() {
274
+ return this.inFront_;
275
+ }
276
+ set inFront(value) {
277
+ this.inFront_ = value;
278
+ }
279
+ /**
280
+ * How far from the camera the strikes land, in meters.
281
+ */
282
+ get radius() {
283
+ return this.radius_;
284
+ }
285
+ set radius(value) {
286
+ this.radius_ = value;
287
+ this.viewer.scene.requestRender();
288
+ }
289
+ /**
290
+ * Where it rains, or undefined to strike anywhere: an image whose red
291
+ * channel is the local intensity, as Precipitation's map. With a map, a
292
+ * strike lands only on heavy rain, more surely as it is heavier.
293
+ */
294
+ get map() {
295
+ return this.weatherMap_.map;
296
+ }
297
+ set map(value) {
298
+ this.weatherMap_.map = value;
299
+ }
300
+ }
301
+ //# sourceMappingURL=lightning.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lightning.js","sourceRoot":"","sources":["../src/lightning.js"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import { Cartesian3, Matrix4 } from '@cesium/core';
2
+ /**
3
+ * The local frame's coordinates from the eye's, for a shader that wants a pixel's place in a small frame (east-north-up about a point) to
4
+ * lay a pattern over the ground that stays where it is as the camera moves. Made in double precision on the CPU: the globe's offset
5
+ * (about 6.4 million meters) cancels in the product, so the matrix a shader gets is small and a place comes out to the millimeter. In world
6
+ * coordinates, a single precision float steps by half a meter.
7
+ * @param {Matrix4} frame The local frame in the world, such as `FixedFrameTransforms.eastNorthUpToFixedFrame(origin)`.
8
+ * @param {Matrix4} viewMatrix The camera's view matrix.
9
+ * @param {Matrix4} [result]
10
+ * @return {Matrix4}
11
+ */
12
+ export declare function localFromEye(frame: Matrix4, viewMatrix: Matrix4, result?: Matrix4): Matrix4;
13
+ /**
14
+ * A local frame, east-north-up about an origin, for an effect that lays a pattern over the ground: the origin given, or the camera's
15
+ * position when the frame is first anchored.
16
+ */
17
+ export declare class LocalFrame {
18
+ origin_: Cartesian3 | undefined;
19
+ /** @type {Matrix4 | undefined} */
20
+ frame_: Matrix4 | undefined;
21
+ scratch_: Matrix4;
22
+ /** @param {Cartesian3} [origin] */
23
+ constructor(origin?: Cartesian3);
24
+ /** The point of the world the frame is laid about; undefined until anchored if none was given. */
25
+ get origin(): Cartesian3 | undefined;
26
+ set origin(value: Cartesian3 | undefined);
27
+ /**
28
+ * The origin, the camera's position if there is none yet.
29
+ * @param {import('@cesium/engine').Scene} scene
30
+ */
31
+ anchor(scene: import('@cesium/engine').Scene): Cartesian3;
32
+ /**
33
+ * The local frame's coordinates from the camera's eye's (localFromEye), anchored first.
34
+ * @param {import('@cesium/engine').Scene} scene
35
+ */
36
+ fromEye(scene: import('@cesium/engine').Scene): Matrix4;
37
+ }
38
+ //# sourceMappingURL=local-frame.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-frame.d.ts","sourceRoot":"","sources":["../src/local-frame.js"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAwB,OAAO,EAAC,MAAM,cAAc,CAAC;AAEvE;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,KAAK,EALvB,OAKuB,EAAE,UAAU,EAJnC,OAImC,EAAE,MAAM,AAHnD,CACA,EADQ,OAG2D,GAF1D,OAAO,CAIlB;AAED;;;GAGG;AACH,qBAAa,UAAU;IAGd,OAAO;IACZ,kCAAkC;IAC7B,MAAM,EADA,OAAO,GAAG,SAAS;IAEzB,QAAQ;IALf,mCAAmC;IACnC,YAAY,MAAM,AADd,CAA4B,EAApB,UACM,EAKjB;IAED,kGAAkG;IAClG,IAAI,MAAM,2BAET;IAED,IAAI,MAAM,CAAC,KAAK,wBAAA,EAGf;IAED;;;OAGG;IACH,MAAM,CAAC,KAAK,EAFD,OAAO,gBAAgB,EAAE,KAExB,cAGX;IAED;;;OAGG;IACH,OAAO,CAAC,KAAK,EAFF,OAAO,gBAAgB,EAAE,KAEvB,WAGZ;CACF"}
@@ -0,0 +1,52 @@
1
+ import { Cartesian3, FixedFrameTransforms, Matrix4 } from '@cesium/core';
2
+ /**
3
+ * The local frame's coordinates from the eye's, for a shader that wants a pixel's place in a small frame (east-north-up about a point) to
4
+ * lay a pattern over the ground that stays where it is as the camera moves. Made in double precision on the CPU: the globe's offset
5
+ * (about 6.4 million meters) cancels in the product, so the matrix a shader gets is small and a place comes out to the millimeter. In world
6
+ * coordinates, a single precision float steps by half a meter.
7
+ * @param {Matrix4} frame The local frame in the world, such as `FixedFrameTransforms.eastNorthUpToFixedFrame(origin)`.
8
+ * @param {Matrix4} viewMatrix The camera's view matrix.
9
+ * @param {Matrix4} [result]
10
+ * @return {Matrix4}
11
+ */
12
+ export function localFromEye(frame, viewMatrix, result = new Matrix4()) {
13
+ return Matrix4.inverseTransformation(Matrix4.multiply(viewMatrix, frame, result), result);
14
+ }
15
+ /**
16
+ * A local frame, east-north-up about an origin, for an effect that lays a pattern over the ground: the origin given, or the camera's
17
+ * position when the frame is first anchored.
18
+ */
19
+ export class LocalFrame {
20
+ /** @param {Cartesian3} [origin] */
21
+ constructor(origin) {
22
+ this.origin_ = origin && Cartesian3.clone(origin);
23
+ /** @type {Matrix4 | undefined} */
24
+ this.frame_ = undefined;
25
+ this.scratch_ = new Matrix4();
26
+ }
27
+ /** The point of the world the frame is laid about; undefined until anchored if none was given. */
28
+ get origin() {
29
+ return this.origin_;
30
+ }
31
+ set origin(value) {
32
+ this.origin_ = value && Cartesian3.clone(value);
33
+ this.frame_ = undefined;
34
+ }
35
+ /**
36
+ * The origin, the camera's position if there is none yet.
37
+ * @param {import('@cesium/engine').Scene} scene
38
+ */
39
+ anchor(scene) {
40
+ this.origin_ ??= Cartesian3.clone(scene.camera.positionWC);
41
+ return this.origin_;
42
+ }
43
+ /**
44
+ * The local frame's coordinates from the camera's eye's (localFromEye), anchored first.
45
+ * @param {import('@cesium/engine').Scene} scene
46
+ */
47
+ fromEye(scene) {
48
+ this.frame_ ??= FixedFrameTransforms.eastNorthUpToFixedFrame(this.anchor(scene), scene.ellipsoid, new Matrix4());
49
+ return localFromEye(this.frame_, scene.camera.viewMatrix, this.scratch_);
50
+ }
51
+ }
52
+ //# sourceMappingURL=local-frame.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-frame.js","sourceRoot":"","sources":["../src/local-frame.js"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAE,oBAAoB,EAAE,OAAO,EAAC,MAAM,cAAc,CAAC;AAEvE;;;;;;;;;GASG;AACH,MAAM,UAAU,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,OAAO,EAAE;IACpE,OAAO,OAAO,CAAC,qBAAqB,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;AAC5F,CAAC;AAED;;;GAGG;AACH,MAAM,OAAO,UAAU;IACrB,mCAAmC;IACnC,YAAY,MAAM;QAChB,IAAI,CAAC,OAAO,GAAG,MAAM,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAClD,kCAAkC;QAClC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;QACxB,IAAI,CAAC,QAAQ,GAAG,IAAI,OAAO,EAAE,CAAC;IAChC,CAAC;IAED,kGAAkG;IAClG,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,IAAI,MAAM,CAAC,KAAK;QACd,IAAI,CAAC,OAAO,GAAG,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAChD,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;IAC1B,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,KAAK;QACV,IAAI,CAAC,OAAO,KAAK,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC3D,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;;;OAGG;IACH,OAAO,CAAC,KAAK;QACX,IAAI,CAAC,MAAM,KAAK,oBAAoB,CAAC,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,IAAI,OAAO,EAAE,CAAC,CAAC;QACjH,OAAO,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC3E,CAAC;CACF"}
@@ -0,0 +1,50 @@
1
+ import { Matrix4 } from '@cesium/core';
2
+ import { PostProcessStageComposite } from '@cesium/engine';
3
+ import Effect from './effect.js';
4
+ /**
5
+ * Camera motion blur: each pixel is blurred along its motion on the screen
6
+ * since the previous frame, over the exposure time.
7
+ */
8
+ export default class MotionBlur extends Effect {
9
+ strength_: number;
10
+ exposure_: number;
11
+ previousViewProjection_: Matrix4;
12
+ reprojection_: Matrix4;
13
+ previousTime_: number;
14
+ onPostRender_: () => void;
15
+ /**
16
+ * @param {import('@cesium/engine').CesiumWidget} viewer
17
+ * @param {{strength?: number, exposure?: number}} [options]
18
+ */
19
+ constructor(viewer: import('@cesium/engine').CesiumWidget, options?: {
20
+ strength?: number;
21
+ exposure?: number;
22
+ });
23
+ /**
24
+ * @override
25
+ * @param {import('@cesium/engine').Scene} scene
26
+ */
27
+ createStage_(scene: import('@cesium/engine').Scene): PostProcessStageComposite;
28
+ /**
29
+ * @override
30
+ * @param {import('@cesium/engine').Scene} scene
31
+ */
32
+ activated_(scene: import('@cesium/engine').Scene): void;
33
+ /**
34
+ * @override
35
+ * @param {import('@cesium/engine').Scene} scene
36
+ */
37
+ deactivating_(scene: import('@cesium/engine').Scene): void;
38
+ /**
39
+ * Strength of the blur, 0 to 1: a fraction of the exposure.
40
+ */
41
+ get strength(): number;
42
+ set strength(value: number);
43
+ /**
44
+ * Exposure time, in seconds: 1/48 is the 180 degree shutter of film at 24
45
+ * frames per second, longer blurs more.
46
+ */
47
+ get exposure(): number;
48
+ set exposure(value: number);
49
+ }
50
+ //# sourceMappingURL=motion-blur.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"motion-blur.d.ts","sourceRoot":"","sources":["../src/motion-blur.js"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAoC,MAAM,cAAc,CAAC;AACxE,OAAO,EAAmB,yBAAyB,EAAC,MAAM,gBAAgB,CAAC;AAE3E,OAAO,MAAM,MAAM,aAAa,CAAC;AAMjC;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,MAAM;IAOrC,SAAS;IACT,SAAS;IACT,uBAAuB;IACvB,aAAa;IACb,aAAa;IACb,aAAa;IAXpB;;;OAGG;IACH,YAAY,MAAM,EAHP,OAAO,gBAAgB,EAAE,YAGlB,EAAE,OAAO,AAFxB,CAAyD,EAAjD;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAEhB,EAY/B;IAED;;;OAGG;IACH,YAAY,CAAC,KAAK,EAFP,OAAO,gBAAgB,EAAE,KAElB,6BAgCjB;IAED;;;OAGG;IACH,UAAU,CAAC,KAAK,EAFL,OAAO,gBAAgB,EAAE,KAEpB,QAIf;IAED;;;OAGG;IACH,aAAa,CAAC,KAAK,EAFR,OAAO,gBAAgB,EAAE,KAEjB,QAGlB;IAED;;OAEG;IACH,IAAI,QAAQ,WAEX;IAED,IAAI,QAAQ,CAAC,KAAK,QAAA,EAMjB;IAED;;;OAGG;IACH,IAAI,QAAQ,WAEX;IAED,IAAI,QAAQ,CAAC,KAAK,QAAA,EAGjB;CACF"}
@@ -0,0 +1,108 @@
1
+ import { Matrix4, PixelDatatype, Math as CesiumMath } from '@cesium/core';
2
+ import { PostProcessStage, PostProcessStageComposite } from '@cesium/engine';
3
+ import { acquireTerrainDepth, releaseTerrainDepth } from './depth-test.js';
4
+ import Effect from './effect.js';
5
+ import EyeFromDepth from './shaders/EyeFromDepth.js';
6
+ import Hash from './shaders/Hash.js';
7
+ import MotionBlurShader from './shaders/MotionBlur.js';
8
+ import MotionBlurVelocity from './shaders/MotionBlurVelocity.js';
9
+ /**
10
+ * Camera motion blur: each pixel is blurred along its motion on the screen
11
+ * since the previous frame, over the exposure time.
12
+ */
13
+ export default class MotionBlur extends Effect {
14
+ /**
15
+ * @param {import('@cesium/engine').CesiumWidget} viewer
16
+ * @param {{strength?: number, exposure?: number}} [options]
17
+ */
18
+ constructor(viewer, options = {}) {
19
+ super(viewer);
20
+ this.strength_ = options.strength ?? 1;
21
+ this.exposure_ = options.exposure ?? 1 / 24;
22
+ this.previousViewProjection_ = new Matrix4();
23
+ this.reprojection_ = new Matrix4();
24
+ this.previousTime_ = 0;
25
+ this.onPostRender_ = () => {
26
+ const camera = this.viewer.scene.camera;
27
+ Matrix4.multiply(camera.frustum.projectionMatrix, camera.viewMatrix, this.previousViewProjection_);
28
+ this.previousTime_ = performance.now();
29
+ };
30
+ }
31
+ /**
32
+ * @override
33
+ * @param {import('@cesium/engine').Scene} scene
34
+ */
35
+ createStage_(scene) {
36
+ // the velocity of each pixel is computed once, at half resolution, rather than once per
37
+ // sample of the gather; the distances need the range of floats
38
+ const velocity = new PostProcessStage({
39
+ name: 'czm_motion_blur_velocity',
40
+ fragmentShader: EyeFromDepth + MotionBlurVelocity,
41
+ uniforms: {
42
+ reprojection: () => Matrix4.multiply(this.previousViewProjection_, scene.camera.inverseViewMatrix, this.reprojection_),
43
+ // the blur spans the motion during the exposure, whatever the frame rate; after a pause
44
+ // in requestRenderMode, the time since the previous frame is not the time of the motion
45
+ exposureScale: () => (this.strength_ * this.exposure_) /
46
+ CesiumMath.clamp((performance.now() - this.previousTime_) / 1000, 1 / 240, 1 / 10),
47
+ },
48
+ textureScale: 0.5,
49
+ pixelDatatype: PixelDatatype.FLOAT,
50
+ });
51
+ const stage = new PostProcessStageComposite({
52
+ stages: [
53
+ velocity,
54
+ new PostProcessStage({
55
+ fragmentShader: Hash + MotionBlurShader,
56
+ uniforms: { velocityTexture: velocity.name },
57
+ }),
58
+ ],
59
+ // the gather reads the scene, not the velocities
60
+ inputPreviousStageTexture: false,
61
+ });
62
+ // no pass at all without strength
63
+ stage.enabled = this.strength_ > 0;
64
+ return stage;
65
+ }
66
+ /**
67
+ * @override
68
+ * @param {import('@cesium/engine').Scene} scene
69
+ */
70
+ activated_(scene) {
71
+ acquireTerrainDepth(scene);
72
+ this.onPostRender_();
73
+ scene.postRender.addEventListener(this.onPostRender_);
74
+ }
75
+ /**
76
+ * @override
77
+ * @param {import('@cesium/engine').Scene} scene
78
+ */
79
+ deactivating_(scene) {
80
+ scene.postRender.removeEventListener(this.onPostRender_);
81
+ releaseTerrainDepth(scene);
82
+ }
83
+ /**
84
+ * Strength of the blur, 0 to 1: a fraction of the exposure.
85
+ */
86
+ get strength() {
87
+ return this.strength_;
88
+ }
89
+ set strength(value) {
90
+ this.strength_ = value;
91
+ if (this.stage_) {
92
+ this.stage_.enabled = value > 0;
93
+ }
94
+ this.viewer.scene.requestRender();
95
+ }
96
+ /**
97
+ * Exposure time, in seconds: 1/48 is the 180 degree shutter of film at 24
98
+ * frames per second, longer blurs more.
99
+ */
100
+ get exposure() {
101
+ return this.exposure_;
102
+ }
103
+ set exposure(value) {
104
+ this.exposure_ = value;
105
+ this.viewer.scene.requestRender();
106
+ }
107
+ }
108
+ //# sourceMappingURL=motion-blur.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"motion-blur.js","sourceRoot":"","sources":["../src/motion-blur.js"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAE,aAAa,EAAE,IAAI,IAAI,UAAU,EAAC,MAAM,cAAc,CAAC;AACxE,OAAO,EAAC,gBAAgB,EAAE,yBAAyB,EAAC,MAAM,gBAAgB,CAAC;AAC3E,OAAO,EAAC,mBAAmB,EAAE,mBAAmB,EAAC,MAAM,iBAAiB,CAAC;AACzE,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,YAAY,MAAM,2BAA2B,CAAC;AACrD,OAAO,IAAI,MAAM,mBAAmB,CAAC;AACrC,OAAO,gBAAgB,MAAM,yBAAyB,CAAC;AACvD,OAAO,kBAAkB,MAAM,iCAAiC,CAAC;AAEjE;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,MAAM;IAC5C;;;OAGG;IACH,YAAY,MAAM,EAAE,OAAO,GAAG,EAAE;QAC9B,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAC;QAC5C,IAAI,CAAC,uBAAuB,GAAG,IAAI,OAAO,EAAE,CAAC;QAC7C,IAAI,CAAC,aAAa,GAAG,IAAI,OAAO,EAAE,CAAC;QACnC,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,aAAa,GAAG,GAAG,EAAE;YACxB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;YACxC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,EAAE,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,uBAAuB,CAAC,CAAC;YACnG,IAAI,CAAC,aAAa,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QACzC,CAAC,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,YAAY,CAAC,KAAK;QAChB,wFAAwF;QACxF,+DAA+D;QAC/D,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC;YACpC,IAAI,EAAE,0BAA0B;YAChC,cAAc,EAAE,YAAY,GAAG,kBAAkB;YACjD,QAAQ,EAAE;gBACR,YAAY,EAAE,GAAG,EAAE,CACjB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,uBAAuB,EAAE,KAAK,CAAC,MAAM,CAAC,iBAAiB,EAAE,IAAI,CAAC,aAAa,CAAC;gBACpG,wFAAwF;gBACxF,wFAAwF;gBACxF,aAAa,EAAE,GAAG,EAAE,CAClB,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;oBACjC,UAAU,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;aACrF;YACD,YAAY,EAAE,GAAG;YACjB,aAAa,EAAE,aAAa,CAAC,KAAK;SACnC,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,yBAAyB,CAAC;YAC1C,MAAM,EAAE;gBACN,QAAQ;gBACR,IAAI,gBAAgB,CAAC;oBACnB,cAAc,EAAE,IAAI,GAAG,gBAAgB;oBACvC,QAAQ,EAAE,EAAC,eAAe,EAAE,QAAQ,CAAC,IAAI,EAAC;iBAC3C,CAAC;aACH;YACD,iDAAiD;YACjD,yBAAyB,EAAE,KAAK;SACjC,CAAC,CAAC;QACH,kCAAkC;QAClC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QACnC,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;OAGG;IACH,UAAU,CAAC,KAAK;QACd,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAC3B,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACxD,CAAC;IAED;;;OAGG;IACH,aAAa,CAAC,KAAK;QACjB,KAAK,CAAC,UAAU,CAAC,mBAAmB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACzD,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,IAAI,QAAQ,CAAC,KAAK;QAChB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,KAAK,GAAG,CAAC,CAAC;QAClC,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;IACpC,CAAC;IAED;;;OAGG;IACH,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,IAAI,QAAQ,CAAC,KAAK;QAChB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;IACpC,CAAC;CACF"}