@3driseai/3drise-viewer 0.1.7 → 0.1.8

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 (259) hide show
  1. package/dist/components/Clouds.d.ts.map +1 -1
  2. package/dist/components/Clouds.js +0 -1
  3. package/dist/components/CloudsGenerator.d.ts +32 -0
  4. package/dist/components/CloudsGenerator.d.ts.map +1 -0
  5. package/dist/components/CloudsGenerator.js +58 -0
  6. package/dist/components/EnvironmentManager.d.ts +47 -5
  7. package/dist/components/EnvironmentManager.d.ts.map +1 -1
  8. package/dist/components/EnvironmentManager.js +35 -66
  9. package/dist/components/HdrEnvironment.d.ts +20 -0
  10. package/dist/components/HdrEnvironment.d.ts.map +1 -0
  11. package/dist/components/HdrEnvironment.js +44 -0
  12. package/dist/components/LandscapeBuilder.d.ts +23 -0
  13. package/dist/components/LandscapeBuilder.d.ts.map +1 -0
  14. package/dist/components/LandscapeBuilder.js +25 -0
  15. package/dist/components/LandscapeObject.d.ts +24 -0
  16. package/dist/components/LandscapeObject.d.ts.map +1 -0
  17. package/dist/components/LandscapeObject.js +27 -0
  18. package/dist/components/ObjectNode.d.ts.map +1 -1
  19. package/dist/components/ObjectNode.js +10 -0
  20. package/dist/components/OceanBuilder.d.ts +35 -0
  21. package/dist/components/OceanBuilder.d.ts.map +1 -0
  22. package/dist/components/OceanBuilder.js +53 -0
  23. package/dist/components/SceneBuilder.d.ts.map +1 -1
  24. package/dist/components/SkySystem.d.ts +27 -6
  25. package/dist/components/SkySystem.d.ts.map +1 -1
  26. package/dist/components/SkySystem.js +6 -5
  27. package/dist/components/SunLight.d.ts.map +1 -1
  28. package/dist/components/SunLight.js +4 -1
  29. package/dist/components/TerrainBuilder.d.ts +30 -0
  30. package/dist/components/TerrainBuilder.d.ts.map +1 -0
  31. package/dist/components/TerrainBuilder.js +44 -0
  32. package/dist/components/index.d.ts +17 -1
  33. package/dist/components/index.d.ts.map +1 -1
  34. package/dist/components/index.js +10 -0
  35. package/dist/components/landscape/LandscapeMesh.d.ts +18 -0
  36. package/dist/components/landscape/LandscapeMesh.d.ts.map +1 -0
  37. package/dist/components/landscape/LandscapeMesh.js +278 -0
  38. package/dist/components/landscape/index.d.ts +3 -0
  39. package/dist/components/landscape/index.d.ts.map +1 -0
  40. package/dist/components/landscape/index.js +1 -0
  41. package/dist/components/landscape/types.d.ts +13 -0
  42. package/dist/components/landscape/types.d.ts.map +1 -0
  43. package/dist/components/landscape/types.js +1 -0
  44. package/dist/components/terrain/Canyon.d.ts +23 -0
  45. package/dist/components/terrain/Canyon.d.ts.map +1 -0
  46. package/dist/components/terrain/Canyon.js +29 -0
  47. package/dist/components/terrain/Dunes.d.ts +22 -0
  48. package/dist/components/terrain/Dunes.d.ts.map +1 -0
  49. package/dist/components/terrain/Dunes.js +25 -0
  50. package/dist/components/terrain/Hills.d.ts +17 -0
  51. package/dist/components/terrain/Hills.d.ts.map +1 -0
  52. package/dist/components/terrain/Hills.js +20 -0
  53. package/dist/components/terrain/Mountains.d.ts +19 -0
  54. package/dist/components/terrain/Mountains.d.ts.map +1 -0
  55. package/dist/components/terrain/Mountains.js +22 -0
  56. package/dist/components/terrain/TerrainSurface.d.ts +22 -0
  57. package/dist/components/terrain/TerrainSurface.d.ts.map +1 -0
  58. package/dist/components/terrain/TerrainSurface.js +94 -0
  59. package/dist/components/terrain/index.d.ts +7 -0
  60. package/dist/components/terrain/index.d.ts.map +1 -0
  61. package/dist/components/terrain/index.js +7 -0
  62. package/dist/components/terrain/types.d.ts +17 -0
  63. package/dist/components/terrain/types.d.ts.map +1 -0
  64. package/dist/components/terrain/types.js +1 -0
  65. package/dist/components/volumetricClouds/Cirrus.d.ts +14 -0
  66. package/dist/components/volumetricClouds/Cirrus.d.ts.map +1 -0
  67. package/dist/components/volumetricClouds/Cirrus.js +13 -0
  68. package/dist/components/volumetricClouds/Cumulonimbus.d.ts +17 -0
  69. package/dist/components/volumetricClouds/Cumulonimbus.d.ts.map +1 -0
  70. package/dist/components/volumetricClouds/Cumulonimbus.js +20 -0
  71. package/dist/components/volumetricClouds/Cumulus.d.ts +14 -0
  72. package/dist/components/volumetricClouds/Cumulus.d.ts.map +1 -0
  73. package/dist/components/volumetricClouds/Cumulus.js +17 -0
  74. package/dist/components/volumetricClouds/Stratocumulus.d.ts +12 -0
  75. package/dist/components/volumetricClouds/Stratocumulus.d.ts.map +1 -0
  76. package/dist/components/volumetricClouds/Stratocumulus.js +16 -0
  77. package/dist/components/volumetricClouds/VolumetricCloudsPass.d.ts +42 -0
  78. package/dist/components/volumetricClouds/VolumetricCloudsPass.d.ts.map +1 -0
  79. package/dist/components/volumetricClouds/VolumetricCloudsPass.js +298 -0
  80. package/dist/components/volumetricClouds/index.d.ts +8 -0
  81. package/dist/components/volumetricClouds/index.d.ts.map +1 -0
  82. package/dist/components/volumetricClouds/index.js +7 -0
  83. package/dist/components/volumetricClouds/types.d.ts +17 -0
  84. package/dist/components/volumetricClouds/types.d.ts.map +1 -0
  85. package/dist/components/volumetricClouds/types.js +1 -0
  86. package/dist/components/water/Host.d.ts +12 -0
  87. package/dist/components/water/Host.d.ts.map +1 -0
  88. package/dist/components/water/Host.js +12 -0
  89. package/dist/components/water/Lake.d.ts +18 -0
  90. package/dist/components/water/Lake.d.ts.map +1 -0
  91. package/dist/components/water/Lake.js +21 -0
  92. package/dist/components/water/OceanSurface.d.ts +27 -0
  93. package/dist/components/water/OceanSurface.d.ts.map +1 -0
  94. package/dist/components/water/OceanSurface.js +60 -0
  95. package/dist/components/water/Sea.d.ts +18 -0
  96. package/dist/components/water/Sea.d.ts.map +1 -0
  97. package/dist/components/water/Sea.js +17 -0
  98. package/dist/components/water/Shore.d.ts +16 -0
  99. package/dist/components/water/Shore.d.ts.map +1 -0
  100. package/dist/components/water/Shore.js +15 -0
  101. package/dist/components/water/Storm.d.ts +14 -0
  102. package/dist/components/water/Storm.d.ts.map +1 -0
  103. package/dist/components/water/Storm.js +13 -0
  104. package/dist/components/water/WaterBody.d.ts +31 -0
  105. package/dist/components/water/WaterBody.d.ts.map +1 -0
  106. package/dist/components/water/WaterBody.js +76 -0
  107. package/dist/components/water/index.d.ts +9 -0
  108. package/dist/components/water/index.d.ts.map +1 -0
  109. package/dist/components/water/index.js +11 -0
  110. package/dist/components/water/types.d.ts +20 -0
  111. package/dist/components/water/types.d.ts.map +1 -0
  112. package/dist/components/water/types.js +1 -0
  113. package/dist/constants.d.ts.map +1 -1
  114. package/dist/constants.js +9 -0
  115. package/dist/hooks/index.d.ts +24 -1
  116. package/dist/hooks/index.d.ts.map +1 -1
  117. package/dist/hooks/index.js +12 -0
  118. package/dist/hooks/useClipmap.d.ts +71 -0
  119. package/dist/hooks/useClipmap.d.ts.map +1 -0
  120. package/dist/hooks/useClipmap.js +81 -0
  121. package/dist/hooks/useCloudLive.d.ts +29 -0
  122. package/dist/hooks/useCloudLive.d.ts.map +1 -0
  123. package/dist/hooks/useCloudLive.js +43 -0
  124. package/dist/hooks/useCloudNoise.d.ts +28 -0
  125. package/dist/hooks/useCloudNoise.d.ts.map +1 -0
  126. package/dist/hooks/useCloudNoise.js +128 -0
  127. package/dist/hooks/useCloudSun.d.ts +49 -0
  128. package/dist/hooks/useCloudSun.d.ts.map +1 -0
  129. package/dist/hooks/useCloudSun.js +84 -0
  130. package/dist/hooks/useCubeCamera.d.ts +27 -9
  131. package/dist/hooks/useCubeCamera.d.ts.map +1 -1
  132. package/dist/hooks/useCubeCamera.js +28 -70
  133. package/dist/hooks/useEnvironmentProbe.d.ts +32 -0
  134. package/dist/hooks/useEnvironmentProbe.d.ts.map +1 -0
  135. package/dist/hooks/useEnvironmentProbe.js +35 -0
  136. package/dist/hooks/useFrameRenderer.d.ts +15 -0
  137. package/dist/hooks/useFrameRenderer.d.ts.map +1 -0
  138. package/dist/hooks/useFrameRenderer.js +23 -0
  139. package/dist/hooks/useLandscapeLive.d.ts +29 -0
  140. package/dist/hooks/useLandscapeLive.d.ts.map +1 -0
  141. package/dist/hooks/useLandscapeLive.js +41 -0
  142. package/dist/hooks/useLandscapeMaps.d.ts +32 -0
  143. package/dist/hooks/useLandscapeMaps.d.ts.map +1 -0
  144. package/dist/hooks/useLandscapeMaps.js +138 -0
  145. package/dist/hooks/useOceanLive.d.ts +29 -0
  146. package/dist/hooks/useOceanLive.d.ts.map +1 -0
  147. package/dist/hooks/useOceanLive.js +38 -0
  148. package/dist/hooks/useOceanMaterial.d.ts +39 -0
  149. package/dist/hooks/useOceanMaterial.d.ts.map +1 -0
  150. package/dist/hooks/useOceanMaterial.js +65 -0
  151. package/dist/hooks/useTerrainClipmap.d.ts +12 -0
  152. package/dist/hooks/useTerrainClipmap.d.ts.map +1 -0
  153. package/dist/hooks/useTerrainClipmap.js +10 -0
  154. package/dist/hooks/useTerrainLive.d.ts +34 -0
  155. package/dist/hooks/useTerrainLive.d.ts.map +1 -0
  156. package/dist/hooks/useTerrainLive.js +45 -0
  157. package/dist/index.d.ts +26 -0
  158. package/dist/index.d.ts.map +1 -1
  159. package/dist/index.js +16 -0
  160. package/dist/presets/landscapePresets.d.ts +60 -0
  161. package/dist/presets/landscapePresets.d.ts.map +1 -0
  162. package/dist/presets/landscapePresets.js +194 -0
  163. package/dist/presets/landscapeTypes.d.ts +195 -0
  164. package/dist/presets/landscapeTypes.d.ts.map +1 -0
  165. package/dist/presets/landscapeTypes.js +315 -0
  166. package/dist/presets/oceanSurfacePresets.d.ts +33 -0
  167. package/dist/presets/oceanSurfacePresets.d.ts.map +1 -0
  168. package/dist/presets/oceanSurfacePresets.js +245 -0
  169. package/dist/presets/terrainPresets.d.ts +28 -0
  170. package/dist/presets/terrainPresets.d.ts.map +1 -0
  171. package/dist/presets/terrainPresets.js +293 -0
  172. package/dist/presets/volumetricCloudPresets.d.ts +38 -0
  173. package/dist/presets/volumetricCloudPresets.d.ts.map +1 -0
  174. package/dist/presets/volumetricCloudPresets.js +480 -0
  175. package/dist/shaders/clouds/CirrusMaterial.d.ts +84 -0
  176. package/dist/shaders/clouds/CirrusMaterial.d.ts.map +1 -0
  177. package/dist/shaders/clouds/CirrusMaterial.js +167 -0
  178. package/dist/shaders/clouds/CloudCompositeMaterial.d.ts +20 -0
  179. package/dist/shaders/clouds/CloudCompositeMaterial.d.ts.map +1 -0
  180. package/dist/shaders/clouds/CloudCompositeMaterial.js +82 -0
  181. package/dist/shaders/clouds/CloudResolveMaterial.d.ts +22 -0
  182. package/dist/shaders/clouds/CloudResolveMaterial.d.ts.map +1 -0
  183. package/dist/shaders/clouds/CloudResolveMaterial.js +77 -0
  184. package/dist/shaders/clouds/CloudVolumeMaterial.d.ts +143 -0
  185. package/dist/shaders/clouds/CloudVolumeMaterial.d.ts.map +1 -0
  186. package/dist/shaders/clouds/CloudVolumeMaterial.js +249 -0
  187. package/dist/shaders/clouds/SkyBackgroundMaterial.d.ts +21 -0
  188. package/dist/shaders/clouds/SkyBackgroundMaterial.d.ts.map +1 -0
  189. package/dist/shaders/clouds/SkyBackgroundMaterial.js +42 -0
  190. package/dist/shaders/glsl/cloudCore.glsl.d.ts +24 -0
  191. package/dist/shaders/glsl/cloudCore.glsl.d.ts.map +1 -0
  192. package/dist/shaders/glsl/cloudCore.glsl.js +348 -0
  193. package/dist/shaders/glsl/landscapeCore.glsl.d.ts +49 -0
  194. package/dist/shaders/glsl/landscapeCore.glsl.d.ts.map +1 -0
  195. package/dist/shaders/glsl/landscapeCore.glsl.js +518 -0
  196. package/dist/shaders/glsl/noiseBake.glsl.d.ts +30 -0
  197. package/dist/shaders/glsl/noiseBake.glsl.d.ts.map +1 -0
  198. package/dist/shaders/glsl/noiseBake.glsl.js +164 -0
  199. package/dist/shaders/glsl/oceanCore.glsl.d.ts +52 -0
  200. package/dist/shaders/glsl/oceanCore.glsl.d.ts.map +1 -0
  201. package/dist/shaders/glsl/oceanCore.glsl.js +421 -0
  202. package/dist/shaders/glsl/terrainCore.glsl.d.ts +78 -0
  203. package/dist/shaders/glsl/terrainCore.glsl.d.ts.map +1 -0
  204. package/dist/shaders/glsl/terrainCore.glsl.js +625 -0
  205. package/dist/shaders/landscape/LandscapeMaterial.d.ts +73 -0
  206. package/dist/shaders/landscape/LandscapeMaterial.d.ts.map +1 -0
  207. package/dist/shaders/landscape/LandscapeMaterial.js +136 -0
  208. package/dist/shaders/ocean/OceanSurfaceMaterial.d.ts +57 -0
  209. package/dist/shaders/ocean/OceanSurfaceMaterial.d.ts.map +1 -0
  210. package/dist/shaders/ocean/OceanSurfaceMaterial.js +268 -0
  211. package/dist/shaders/terrain/TerrainMaterial.d.ts +80 -0
  212. package/dist/shaders/terrain/TerrainMaterial.d.ts.map +1 -0
  213. package/dist/shaders/terrain/TerrainMaterial.js +291 -0
  214. package/dist/types/cloudConfigs.d.ts +244 -0
  215. package/dist/types/cloudConfigs.d.ts.map +1 -0
  216. package/dist/types/cloudConfigs.js +282 -0
  217. package/dist/types/index.d.ts +8 -0
  218. package/dist/types/index.d.ts.map +1 -1
  219. package/dist/types/index.js +4 -1
  220. package/dist/types/landscapeConfigs.d.ts +218 -0
  221. package/dist/types/landscapeConfigs.d.ts.map +1 -0
  222. package/dist/types/landscapeConfigs.js +256 -0
  223. package/dist/types/oceanConfigs.d.ts +290 -0
  224. package/dist/types/oceanConfigs.d.ts.map +1 -0
  225. package/dist/types/oceanConfigs.js +380 -0
  226. package/dist/types/terrainConfigs.d.ts +251 -0
  227. package/dist/types/terrainConfigs.d.ts.map +1 -0
  228. package/dist/types/terrainConfigs.js +292 -0
  229. package/dist/utils/cloudUniforms.d.ts +14 -0
  230. package/dist/utils/cloudUniforms.d.ts.map +1 -0
  231. package/dist/utils/cloudUniforms.js +122 -0
  232. package/dist/utils/frameRenderer.d.ts +33 -0
  233. package/dist/utils/frameRenderer.d.ts.map +1 -0
  234. package/dist/utils/frameRenderer.js +24 -0
  235. package/dist/utils/handleCloudsAnimations.d.ts +16 -0
  236. package/dist/utils/handleCloudsAnimations.d.ts.map +1 -0
  237. package/dist/utils/handleCloudsAnimations.js +64 -0
  238. package/dist/utils/landscapeGeometry.d.ts +61 -0
  239. package/dist/utils/landscapeGeometry.d.ts.map +1 -0
  240. package/dist/utils/landscapeGeometry.js +126 -0
  241. package/dist/utils/landscapeHeight.d.ts +44 -0
  242. package/dist/utils/landscapeHeight.d.ts.map +1 -0
  243. package/dist/utils/landscapeHeight.js +65 -0
  244. package/dist/utils/landscapeTextures.d.ts +94 -0
  245. package/dist/utils/landscapeTextures.d.ts.map +1 -0
  246. package/dist/utils/landscapeTextures.js +290 -0
  247. package/dist/utils/landscapeUniforms.d.ts +20 -0
  248. package/dist/utils/landscapeUniforms.d.ts.map +1 -0
  249. package/dist/utils/landscapeUniforms.js +61 -0
  250. package/dist/utils/oceanUniforms.d.ts +47 -0
  251. package/dist/utils/oceanUniforms.d.ts.map +1 -0
  252. package/dist/utils/oceanUniforms.js +216 -0
  253. package/dist/utils/rtin.d.ts +63 -0
  254. package/dist/utils/rtin.d.ts.map +1 -0
  255. package/dist/utils/rtin.js +202 -0
  256. package/dist/utils/terrainUniforms.d.ts +14 -0
  257. package/dist/utils/terrainUniforms.d.ts.map +1 -0
  258. package/dist/utils/terrainUniforms.js +196 -0
  259. package/package.json +2 -2
@@ -0,0 +1,480 @@
1
+ // =============================================================================
2
+ // Cumulus
3
+ // =============================================================================
4
+ const cumulusPresets = [
5
+ {
6
+ name: 'Humilis',
7
+ deckType: 'cumulus',
8
+ description: 'Flat little fair-weather puffs, wider apart than they are tall. More sky than cloud.',
9
+ tags: ['fair weather', 'sparse', 'shallow', 'summer', 'calm'],
10
+ settings: {
11
+ coverage: 0.3,
12
+ density: 2.4,
13
+ profile: 0.44,
14
+ baseAltitude: 1300,
15
+ topAltitude: 2100,
16
+ featureSize: 1700,
17
+ detailSize: 320,
18
+ detailStrength: 0.44,
19
+ curlStrength: 0.4,
20
+ weatherCellSize: 16000,
21
+ shear: 0.04,
22
+ windSpeed: 4,
23
+ rise: 0.9,
24
+ churn: 3,
25
+ evolution: 0.35,
26
+ },
27
+ },
28
+ {
29
+ name: 'Mediocris',
30
+ deckType: 'cumulus',
31
+ description: 'The classic cumulus: flat base, cauliflower top, as tall as it is wide.',
32
+ tags: ['fair weather', 'classic', 'balanced', 'daytime'],
33
+ settings: {
34
+ coverage: 0.5,
35
+ density: 2.8,
36
+ profile: 0.52,
37
+ baseAltitude: 1500,
38
+ topAltitude: 3400,
39
+ featureSize: 2600,
40
+ detailSize: 400,
41
+ detailStrength: 0.5,
42
+ curlStrength: 0.55,
43
+ weatherCellSize: 24000,
44
+ shear: 0.08,
45
+ windSpeed: 6,
46
+ rise: 1.4,
47
+ churn: 4.5,
48
+ evolution: 0.45,
49
+ },
50
+ },
51
+ {
52
+ name: 'Congestus',
53
+ deckType: 'cumulus',
54
+ description: 'Towering cumulus, growing hard. Taller than wide, hard cauliflower crowns, one step short of a storm.',
55
+ tags: ['towering', 'tall', 'building', 'unstable', 'afternoon'],
56
+ settings: {
57
+ coverage: 0.42,
58
+ density: 3.4,
59
+ profile: 0.74,
60
+ baseAltitude: 1200,
61
+ topAltitude: 5600,
62
+ featureSize: 3400,
63
+ detailSize: 560,
64
+ detailStrength: 0.55,
65
+ curlStrength: 0.7,
66
+ weatherCellSize: 32000,
67
+ shear: 0.16,
68
+ windSpeed: 8,
69
+ rise: 3.4,
70
+ churn: 7,
71
+ evolution: 0.6,
72
+ },
73
+ },
74
+ {
75
+ name: 'Fractus',
76
+ deckType: 'cumulus',
77
+ description: 'Torn, ragged shreds with no clean base. Heavy erosion and curl, dragged out by wind.',
78
+ tags: ['ragged', 'windy', 'broken', 'scud', 'stormy'],
79
+ settings: {
80
+ coverage: 0.56,
81
+ density: 1.7,
82
+ profile: 0.38,
83
+ baseAltitude: 900,
84
+ topAltitude: 2400,
85
+ featureSize: 1900,
86
+ detailSize: 240,
87
+ detailStrength: 0.78,
88
+ curlStrength: 1.5,
89
+ weatherCellSize: 14000,
90
+ shear: 0.34,
91
+ windSpeed: 16,
92
+ rise: 2.2,
93
+ churn: 11,
94
+ evolution: 0.75,
95
+ },
96
+ },
97
+ {
98
+ name: 'Crowded',
99
+ deckType: 'cumulus',
100
+ description: 'Cells grown into each other until the gaps close. Cumulus turning into a broken sheet.',
101
+ tags: ['dense', 'crowded', 'overcast', 'humid', 'merging'],
102
+ settings: {
103
+ coverage: 0.8,
104
+ density: 3.2,
105
+ profile: 0.4,
106
+ baseAltitude: 1300,
107
+ topAltitude: 3000,
108
+ featureSize: 3000,
109
+ detailSize: 460,
110
+ detailStrength: 0.42,
111
+ curlStrength: 0.5,
112
+ weatherCellSize: 30000,
113
+ shear: 0.12,
114
+ windSpeed: 7,
115
+ rise: 1.2,
116
+ churn: 4,
117
+ evolution: 0.4,
118
+ },
119
+ },
120
+ ];
121
+ // =============================================================================
122
+ // Stratocumulus
123
+ // =============================================================================
124
+ const stratocumulusPresets = [
125
+ {
126
+ name: 'Overcast',
127
+ deckType: 'stratocumulus',
128
+ description: 'Closed deck, no gaps. Flat grey lid with only the faintest lumps in the underside.',
129
+ tags: ['overcast', 'grey', 'closed', 'dull', 'winter'],
130
+ settings: {
131
+ coverage: 0.96,
132
+ density: 5,
133
+ profile: 0.12,
134
+ baseAltitude: 800,
135
+ topAltitude: 1500,
136
+ featureSize: 2600,
137
+ detailSize: 520,
138
+ detailStrength: 0.28,
139
+ curlStrength: 0.3,
140
+ weatherCellSize: 22000,
141
+ shear: 0.12,
142
+ windSpeed: 8,
143
+ rise: 0.4,
144
+ churn: 1.8,
145
+ evolution: 0.25,
146
+ },
147
+ },
148
+ {
149
+ name: 'Perlucidus',
150
+ deckType: 'stratocumulus',
151
+ description: 'Broken deck with blue showing through the gaps. The most common real sky.',
152
+ tags: ['broken', 'gaps', 'blue', 'everyday'],
153
+ settings: {
154
+ coverage: 0.66,
155
+ density: 4.2,
156
+ profile: 0.26,
157
+ baseAltitude: 900,
158
+ topAltitude: 1800,
159
+ featureSize: 2000,
160
+ detailSize: 420,
161
+ detailStrength: 0.42,
162
+ curlStrength: 0.5,
163
+ weatherCellSize: 15000,
164
+ shear: 0.18,
165
+ windSpeed: 9,
166
+ rise: 0.7,
167
+ churn: 2.6,
168
+ evolution: 0.4,
169
+ },
170
+ },
171
+ {
172
+ name: 'Undulatus',
173
+ deckType: 'stratocumulus',
174
+ description: 'Organised into rolls by shear. Bands lie across the wind and the whole deck leans downwind.',
175
+ tags: ['rolls', 'bands', 'shear', 'organised', 'coastal'],
176
+ settings: {
177
+ coverage: 0.84,
178
+ density: 4.6,
179
+ profile: 0.2,
180
+ baseAltitude: 950,
181
+ topAltitude: 1900,
182
+ featureSize: 1600,
183
+ detailSize: 380,
184
+ detailStrength: 0.4,
185
+ curlStrength: 0.62,
186
+ weatherCellSize: 12000,
187
+ shear: 0.62,
188
+ windSpeed: 15,
189
+ rise: 0.5,
190
+ churn: 2.2,
191
+ evolution: 0.3,
192
+ },
193
+ },
194
+ {
195
+ name: 'Marine layer',
196
+ deckType: 'stratocumulus',
197
+ description: 'Low, thick and slow — the lid that sits on a cold coast all morning. Almost no vertical motion.',
198
+ tags: ['marine', 'low', 'coastal', 'fog', 'morning', 'slow'],
199
+ settings: {
200
+ coverage: 0.94,
201
+ density: 5.6,
202
+ profile: 0.06,
203
+ baseAltitude: 380,
204
+ topAltitude: 950,
205
+ featureSize: 3200,
206
+ detailSize: 640,
207
+ detailStrength: 0.22,
208
+ curlStrength: 0.24,
209
+ weatherCellSize: 34000,
210
+ shear: 0.06,
211
+ windSpeed: 4,
212
+ rise: 0.2,
213
+ churn: 1,
214
+ evolution: 0.15,
215
+ },
216
+ },
217
+ {
218
+ name: 'Nebulosus veil',
219
+ deckType: 'stratocumulus',
220
+ description: 'A featureless thin sheet — sun visible through it as a disc. Barely a cloud, mostly a filter.',
221
+ tags: ['thin', 'veil', 'translucent', 'featureless', 'soft light'],
222
+ settings: {
223
+ coverage: 0.98,
224
+ density: 1.9,
225
+ profile: 0.02,
226
+ baseAltitude: 1100,
227
+ topAltitude: 1600,
228
+ featureSize: 4200,
229
+ detailSize: 900,
230
+ detailStrength: 0.16,
231
+ curlStrength: 0.18,
232
+ weatherCellSize: 46000,
233
+ shear: 0.08,
234
+ windSpeed: 6,
235
+ rise: 0.2,
236
+ churn: 0.8,
237
+ evolution: 0.12,
238
+ extinction: 0.011,
239
+ ambient: 1.35,
240
+ },
241
+ },
242
+ ];
243
+ // =============================================================================
244
+ // Cumulonimbus
245
+ // =============================================================================
246
+ const cumulonimbusPresets = [
247
+ {
248
+ name: 'Supercell',
249
+ deckType: 'cumulonimbus',
250
+ description: 'One rotating monster. Hard shear leans the tower, the anvil streams a long way downwind, the base is black.',
251
+ tags: ['supercell', 'severe', 'anvil', 'shear', 'dramatic'],
252
+ settings: {
253
+ coverage: 0.36,
254
+ density: 3.6,
255
+ profile: 1,
256
+ baseAltitude: 900,
257
+ topAltitude: 11000,
258
+ featureSize: 6200,
259
+ detailSize: 1300,
260
+ detailStrength: 0.52,
261
+ curlStrength: 0.95,
262
+ weatherCellSize: 62000,
263
+ shear: 0.66,
264
+ anvil: 1,
265
+ precipitation: 0.9,
266
+ windSpeed: 14,
267
+ rise: 4.2,
268
+ churn: 8,
269
+ evolution: 0.5,
270
+ silverLining: 1.5,
271
+ },
272
+ },
273
+ {
274
+ name: 'Mature cell',
275
+ deckType: 'cumulonimbus',
276
+ description: 'A single storm at full height, spreading at the top. Bright sunward flank, charcoal rain base.',
277
+ tags: ['storm', 'classic', 'anvil', 'rain', 'isolated'],
278
+ settings: {
279
+ coverage: 0.5,
280
+ density: 3.2,
281
+ profile: 0.96,
282
+ baseAltitude: 1100,
283
+ topAltitude: 9500,
284
+ featureSize: 5200,
285
+ detailSize: 1200,
286
+ detailStrength: 0.5,
287
+ curlStrength: 0.85,
288
+ weatherCellSize: 46000,
289
+ shear: 0.42,
290
+ anvil: 0.95,
291
+ precipitation: 0.75,
292
+ windSpeed: 11,
293
+ rise: 3.2,
294
+ churn: 7,
295
+ evolution: 0.55,
296
+ },
297
+ },
298
+ {
299
+ name: 'Distant thunderhead',
300
+ deckType: 'cumulonimbus',
301
+ description: 'One tower on the horizon and clear sky around it. Big features, low coverage — read it from far away.',
302
+ tags: ['distant', 'isolated', 'horizon', 'tall', 'sparse'],
303
+ settings: {
304
+ coverage: 0.24,
305
+ density: 3,
306
+ profile: 0.98,
307
+ baseAltitude: 1400,
308
+ topAltitude: 10500,
309
+ featureSize: 7600,
310
+ detailSize: 1600,
311
+ detailStrength: 0.46,
312
+ curlStrength: 0.7,
313
+ weatherCellSize: 78000,
314
+ shear: 0.36,
315
+ anvil: 0.9,
316
+ precipitation: 0.6,
317
+ windSpeed: 9,
318
+ rise: 2.6,
319
+ churn: 5.5,
320
+ evolution: 0.4,
321
+ aerialPerspective: 0.000016,
322
+ },
323
+ },
324
+ {
325
+ name: 'Squall line',
326
+ deckType: 'cumulonimbus',
327
+ description: 'Not one storm but a wall of them, sheared into a continuous front. Very little sky left.',
328
+ tags: ['squall', 'front', 'wall', 'severe', 'overcast'],
329
+ settings: {
330
+ coverage: 0.82,
331
+ density: 3.8,
332
+ profile: 0.9,
333
+ baseAltitude: 800,
334
+ topAltitude: 9000,
335
+ featureSize: 4400,
336
+ detailSize: 1000,
337
+ detailStrength: 0.56,
338
+ curlStrength: 1,
339
+ weatherCellSize: 38000,
340
+ shear: 0.58,
341
+ anvil: 0.7,
342
+ precipitation: 0.95,
343
+ windSpeed: 18,
344
+ rise: 3.8,
345
+ churn: 9,
346
+ evolution: 0.6,
347
+ ambient: 0.7,
348
+ },
349
+ },
350
+ {
351
+ name: 'Under the anvil',
352
+ deckType: 'cumulonimbus',
353
+ description: 'You are beneath the spreading top. Dark lid overhead, light leaking in only at the far edges.',
354
+ tags: ['anvil', 'overhead', 'dark', 'oppressive', 'close'],
355
+ settings: {
356
+ coverage: 0.9,
357
+ density: 4.2,
358
+ profile: 0.86,
359
+ baseAltitude: 700,
360
+ topAltitude: 8000,
361
+ featureSize: 5800,
362
+ detailSize: 1400,
363
+ detailStrength: 0.4,
364
+ curlStrength: 0.6,
365
+ weatherCellSize: 54000,
366
+ shear: 0.5,
367
+ anvil: 1,
368
+ precipitation: 1,
369
+ windSpeed: 12,
370
+ rise: 2.4,
371
+ churn: 6,
372
+ evolution: 0.35,
373
+ ambient: 0.6,
374
+ powder: 1.2,
375
+ },
376
+ },
377
+ ];
378
+ export const volumetricCloudPresets = [
379
+ ...cumulusPresets,
380
+ ...stratocumulusPresets,
381
+ ...cumulonimbusPresets,
382
+ ];
383
+ // =============================================================================
384
+ // Cirrus
385
+ // =============================================================================
386
+ export const cirrusPresets = [
387
+ {
388
+ name: 'Fibratus',
389
+ description: 'Long parallel filaments combed out by the jet. The textbook cirrus.',
390
+ tags: ['streaks', 'filaments', 'classic', 'high'],
391
+ settings: {
392
+ altitude: 8200,
393
+ thickness: 700,
394
+ coverage: 0.62,
395
+ opticalDepth: 0.95,
396
+ featureSize: 44000,
397
+ anisotropy: 0.11,
398
+ windSpeed: 16,
399
+ halo: 1.1,
400
+ },
401
+ },
402
+ {
403
+ name: 'Uncinus',
404
+ description: "Mare's tails — a denser head with a filament trailing behind it where ice falls into slower air.",
405
+ tags: ['hooks', 'tails', 'falling ice', 'wispy'],
406
+ settings: {
407
+ altitude: 7600,
408
+ thickness: 1100,
409
+ coverage: 0.48,
410
+ opticalDepth: 1.25,
411
+ featureSize: 30000,
412
+ anisotropy: 0.2,
413
+ windSpeed: 22,
414
+ halo: 0.9,
415
+ },
416
+ },
417
+ {
418
+ name: 'Spissatus',
419
+ description: 'Thick enough to grey the sun. Dense patches rather than filaments — often the last of an old anvil.',
420
+ tags: ['dense', 'thick', 'patchy', 'anvil remains'],
421
+ settings: {
422
+ altitude: 9000,
423
+ thickness: 1800,
424
+ coverage: 0.55,
425
+ opticalDepth: 1.75,
426
+ featureSize: 26000,
427
+ anisotropy: 0.42,
428
+ windSpeed: 12,
429
+ halo: 0.45,
430
+ ambient: 1.2,
431
+ },
432
+ },
433
+ {
434
+ name: 'Cirrostratus halo',
435
+ description: 'A near-invisible veil over the whole sky. You notice it only because of the 22-degree ring around the sun.',
436
+ tags: ['veil', 'halo', 'thin', 'whole sky', 'ice ring'],
437
+ settings: {
438
+ altitude: 8800,
439
+ thickness: 900,
440
+ coverage: 0.95,
441
+ opticalDepth: 0.45,
442
+ featureSize: 70000,
443
+ anisotropy: 0.7,
444
+ windSpeed: 9,
445
+ halo: 2,
446
+ },
447
+ },
448
+ {
449
+ name: 'Jet streaks',
450
+ description: 'Extreme anisotropy — thin hard-drawn lines racing across the sky, almost contrail-like.',
451
+ tags: ['jet', 'fast', 'linear', 'sparse', 'sharp'],
452
+ settings: {
453
+ altitude: 10500,
454
+ thickness: 500,
455
+ coverage: 0.34,
456
+ opticalDepth: 1.1,
457
+ featureSize: 90000,
458
+ anisotropy: 0.045,
459
+ windSpeed: 42,
460
+ halo: 0.7,
461
+ },
462
+ },
463
+ ];
464
+ // =============================================================================
465
+ // Lookup
466
+ // =============================================================================
467
+ /** The five presets for one deck type, in the order they should appear. */
468
+ export function getCloudPresetsForType(deckType) {
469
+ return volumetricCloudPresets.filter((p) => p.deckType === deckType);
470
+ }
471
+ export function getCloudPresetByName(name) {
472
+ return volumetricCloudPresets.find((p) => p.name === name);
473
+ }
474
+ export function getCirrusPresetByName(name) {
475
+ return cirrusPresets.find((p) => p.name === name);
476
+ }
477
+ export function searchCloudPresetsByTags(tags) {
478
+ const wanted = tags.map((t) => t.toLowerCase());
479
+ return volumetricCloudPresets.filter((p) => p.tags.some((t) => wanted.includes(t.toLowerCase())));
480
+ }
@@ -0,0 +1,84 @@
1
+ import * as THREE from 'three';
2
+ import { type ThreeElement } from '@react-three/fiber';
3
+ export declare const cirrusDefaults: {
4
+ u_weather: any;
5
+ u_depth: any;
6
+ u_hasDepth: number;
7
+ u_time: number;
8
+ u_sunDir: THREE.Vector3;
9
+ u_sunColor: THREE.Color;
10
+ u_sunIntensity: number;
11
+ u_turbidity: number;
12
+ u_rayleigh: number;
13
+ u_mieCoefficient: number;
14
+ u_mieG: number;
15
+ u_skyAmbient: THREE.Color;
16
+ u_ambient: number;
17
+ u_sunIntensityScale: number;
18
+ u_altitude: number;
19
+ u_thickness: number;
20
+ u_coverage: number;
21
+ u_opticalDepth: number;
22
+ u_featureScale: number;
23
+ u_anisotropy: number;
24
+ u_windDir: THREE.Vector2;
25
+ u_windSpeed: number;
26
+ u_halo: number;
27
+ u_g1: number;
28
+ u_g2: number;
29
+ u_curvature: number;
30
+ u_fogDensity: number;
31
+ u_camPos: THREE.Vector3;
32
+ u_camFwd: THREE.Vector3;
33
+ u_invProj: THREE.Matrix4;
34
+ u_camWorld: THREE.Matrix4;
35
+ u_near: number;
36
+ u_far: number;
37
+ u_resolution: THREE.Vector2;
38
+ u_screenSpace: number;
39
+ };
40
+ export declare const CirrusMaterial: import("@react-three/fiber").ConstructorRepresentation<THREE.ShaderMaterial & {
41
+ u_weather: any;
42
+ u_depth: any;
43
+ u_hasDepth: number;
44
+ u_time: number;
45
+ u_sunDir: THREE.Vector3;
46
+ u_sunColor: THREE.Color;
47
+ u_sunIntensity: number;
48
+ u_turbidity: number;
49
+ u_rayleigh: number;
50
+ u_mieCoefficient: number;
51
+ u_mieG: number;
52
+ u_skyAmbient: THREE.Color;
53
+ u_ambient: number;
54
+ u_sunIntensityScale: number;
55
+ u_altitude: number;
56
+ u_thickness: number;
57
+ u_coverage: number;
58
+ u_opticalDepth: number;
59
+ u_featureScale: number;
60
+ u_anisotropy: number;
61
+ u_windDir: THREE.Vector2;
62
+ u_windSpeed: number;
63
+ u_halo: number;
64
+ u_g1: number;
65
+ u_g2: number;
66
+ u_curvature: number;
67
+ u_fogDensity: number;
68
+ u_camPos: THREE.Vector3;
69
+ u_camFwd: THREE.Vector3;
70
+ u_invProj: THREE.Matrix4;
71
+ u_camWorld: THREE.Matrix4;
72
+ u_near: number;
73
+ u_far: number;
74
+ u_resolution: THREE.Vector2;
75
+ u_screenSpace: number;
76
+ }> & {
77
+ key: string;
78
+ };
79
+ declare module '@react-three/fiber' {
80
+ interface ThreeElements {
81
+ cirrusMaterial: ThreeElement<typeof CirrusMaterial>;
82
+ }
83
+ }
84
+ //# sourceMappingURL=CirrusMaterial.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CirrusMaterial.d.ts","sourceRoot":"","sources":["../../../src/shaders/clouds/CirrusMaterial.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAU,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAkI9D,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwC1B,CAAA;AAED,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAmD,CAAA;AAI9E,OAAO,QAAQ,oBAAoB,CAAC;IAClC,UAAU,aAAa;QACrB,cAAc,EAAE,YAAY,CAAC,OAAO,cAAc,CAAC,CAAA;KACpD;CACF"}