@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.
- package/dist/components/Clouds.d.ts.map +1 -1
- package/dist/components/Clouds.js +0 -1
- package/dist/components/CloudsGenerator.d.ts +32 -0
- package/dist/components/CloudsGenerator.d.ts.map +1 -0
- package/dist/components/CloudsGenerator.js +58 -0
- package/dist/components/EnvironmentManager.d.ts +47 -5
- package/dist/components/EnvironmentManager.d.ts.map +1 -1
- package/dist/components/EnvironmentManager.js +35 -66
- package/dist/components/HdrEnvironment.d.ts +20 -0
- package/dist/components/HdrEnvironment.d.ts.map +1 -0
- package/dist/components/HdrEnvironment.js +44 -0
- package/dist/components/LandscapeBuilder.d.ts +23 -0
- package/dist/components/LandscapeBuilder.d.ts.map +1 -0
- package/dist/components/LandscapeBuilder.js +25 -0
- package/dist/components/LandscapeObject.d.ts +24 -0
- package/dist/components/LandscapeObject.d.ts.map +1 -0
- package/dist/components/LandscapeObject.js +27 -0
- package/dist/components/ObjectNode.d.ts.map +1 -1
- package/dist/components/ObjectNode.js +10 -0
- package/dist/components/OceanBuilder.d.ts +35 -0
- package/dist/components/OceanBuilder.d.ts.map +1 -0
- package/dist/components/OceanBuilder.js +53 -0
- package/dist/components/SceneBuilder.d.ts.map +1 -1
- package/dist/components/SkySystem.d.ts +27 -6
- package/dist/components/SkySystem.d.ts.map +1 -1
- package/dist/components/SkySystem.js +6 -5
- package/dist/components/SunLight.d.ts.map +1 -1
- package/dist/components/SunLight.js +4 -1
- package/dist/components/TerrainBuilder.d.ts +30 -0
- package/dist/components/TerrainBuilder.d.ts.map +1 -0
- package/dist/components/TerrainBuilder.js +44 -0
- package/dist/components/index.d.ts +17 -1
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +10 -0
- package/dist/components/landscape/LandscapeMesh.d.ts +18 -0
- package/dist/components/landscape/LandscapeMesh.d.ts.map +1 -0
- package/dist/components/landscape/LandscapeMesh.js +278 -0
- package/dist/components/landscape/index.d.ts +3 -0
- package/dist/components/landscape/index.d.ts.map +1 -0
- package/dist/components/landscape/index.js +1 -0
- package/dist/components/landscape/types.d.ts +13 -0
- package/dist/components/landscape/types.d.ts.map +1 -0
- package/dist/components/landscape/types.js +1 -0
- package/dist/components/terrain/Canyon.d.ts +23 -0
- package/dist/components/terrain/Canyon.d.ts.map +1 -0
- package/dist/components/terrain/Canyon.js +29 -0
- package/dist/components/terrain/Dunes.d.ts +22 -0
- package/dist/components/terrain/Dunes.d.ts.map +1 -0
- package/dist/components/terrain/Dunes.js +25 -0
- package/dist/components/terrain/Hills.d.ts +17 -0
- package/dist/components/terrain/Hills.d.ts.map +1 -0
- package/dist/components/terrain/Hills.js +20 -0
- package/dist/components/terrain/Mountains.d.ts +19 -0
- package/dist/components/terrain/Mountains.d.ts.map +1 -0
- package/dist/components/terrain/Mountains.js +22 -0
- package/dist/components/terrain/TerrainSurface.d.ts +22 -0
- package/dist/components/terrain/TerrainSurface.d.ts.map +1 -0
- package/dist/components/terrain/TerrainSurface.js +94 -0
- package/dist/components/terrain/index.d.ts +7 -0
- package/dist/components/terrain/index.d.ts.map +1 -0
- package/dist/components/terrain/index.js +7 -0
- package/dist/components/terrain/types.d.ts +17 -0
- package/dist/components/terrain/types.d.ts.map +1 -0
- package/dist/components/terrain/types.js +1 -0
- package/dist/components/volumetricClouds/Cirrus.d.ts +14 -0
- package/dist/components/volumetricClouds/Cirrus.d.ts.map +1 -0
- package/dist/components/volumetricClouds/Cirrus.js +13 -0
- package/dist/components/volumetricClouds/Cumulonimbus.d.ts +17 -0
- package/dist/components/volumetricClouds/Cumulonimbus.d.ts.map +1 -0
- package/dist/components/volumetricClouds/Cumulonimbus.js +20 -0
- package/dist/components/volumetricClouds/Cumulus.d.ts +14 -0
- package/dist/components/volumetricClouds/Cumulus.d.ts.map +1 -0
- package/dist/components/volumetricClouds/Cumulus.js +17 -0
- package/dist/components/volumetricClouds/Stratocumulus.d.ts +12 -0
- package/dist/components/volumetricClouds/Stratocumulus.d.ts.map +1 -0
- package/dist/components/volumetricClouds/Stratocumulus.js +16 -0
- package/dist/components/volumetricClouds/VolumetricCloudsPass.d.ts +42 -0
- package/dist/components/volumetricClouds/VolumetricCloudsPass.d.ts.map +1 -0
- package/dist/components/volumetricClouds/VolumetricCloudsPass.js +298 -0
- package/dist/components/volumetricClouds/index.d.ts +8 -0
- package/dist/components/volumetricClouds/index.d.ts.map +1 -0
- package/dist/components/volumetricClouds/index.js +7 -0
- package/dist/components/volumetricClouds/types.d.ts +17 -0
- package/dist/components/volumetricClouds/types.d.ts.map +1 -0
- package/dist/components/volumetricClouds/types.js +1 -0
- package/dist/components/water/Host.d.ts +12 -0
- package/dist/components/water/Host.d.ts.map +1 -0
- package/dist/components/water/Host.js +12 -0
- package/dist/components/water/Lake.d.ts +18 -0
- package/dist/components/water/Lake.d.ts.map +1 -0
- package/dist/components/water/Lake.js +21 -0
- package/dist/components/water/OceanSurface.d.ts +27 -0
- package/dist/components/water/OceanSurface.d.ts.map +1 -0
- package/dist/components/water/OceanSurface.js +60 -0
- package/dist/components/water/Sea.d.ts +18 -0
- package/dist/components/water/Sea.d.ts.map +1 -0
- package/dist/components/water/Sea.js +17 -0
- package/dist/components/water/Shore.d.ts +16 -0
- package/dist/components/water/Shore.d.ts.map +1 -0
- package/dist/components/water/Shore.js +15 -0
- package/dist/components/water/Storm.d.ts +14 -0
- package/dist/components/water/Storm.d.ts.map +1 -0
- package/dist/components/water/Storm.js +13 -0
- package/dist/components/water/WaterBody.d.ts +31 -0
- package/dist/components/water/WaterBody.d.ts.map +1 -0
- package/dist/components/water/WaterBody.js +76 -0
- package/dist/components/water/index.d.ts +9 -0
- package/dist/components/water/index.d.ts.map +1 -0
- package/dist/components/water/index.js +11 -0
- package/dist/components/water/types.d.ts +20 -0
- package/dist/components/water/types.d.ts.map +1 -0
- package/dist/components/water/types.js +1 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +9 -0
- package/dist/hooks/index.d.ts +24 -1
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +12 -0
- package/dist/hooks/useClipmap.d.ts +71 -0
- package/dist/hooks/useClipmap.d.ts.map +1 -0
- package/dist/hooks/useClipmap.js +81 -0
- package/dist/hooks/useCloudLive.d.ts +29 -0
- package/dist/hooks/useCloudLive.d.ts.map +1 -0
- package/dist/hooks/useCloudLive.js +43 -0
- package/dist/hooks/useCloudNoise.d.ts +28 -0
- package/dist/hooks/useCloudNoise.d.ts.map +1 -0
- package/dist/hooks/useCloudNoise.js +128 -0
- package/dist/hooks/useCloudSun.d.ts +49 -0
- package/dist/hooks/useCloudSun.d.ts.map +1 -0
- package/dist/hooks/useCloudSun.js +84 -0
- package/dist/hooks/useCubeCamera.d.ts +27 -9
- package/dist/hooks/useCubeCamera.d.ts.map +1 -1
- package/dist/hooks/useCubeCamera.js +28 -70
- package/dist/hooks/useEnvironmentProbe.d.ts +32 -0
- package/dist/hooks/useEnvironmentProbe.d.ts.map +1 -0
- package/dist/hooks/useEnvironmentProbe.js +35 -0
- package/dist/hooks/useFrameRenderer.d.ts +15 -0
- package/dist/hooks/useFrameRenderer.d.ts.map +1 -0
- package/dist/hooks/useFrameRenderer.js +23 -0
- package/dist/hooks/useLandscapeLive.d.ts +29 -0
- package/dist/hooks/useLandscapeLive.d.ts.map +1 -0
- package/dist/hooks/useLandscapeLive.js +41 -0
- package/dist/hooks/useLandscapeMaps.d.ts +32 -0
- package/dist/hooks/useLandscapeMaps.d.ts.map +1 -0
- package/dist/hooks/useLandscapeMaps.js +138 -0
- package/dist/hooks/useOceanLive.d.ts +29 -0
- package/dist/hooks/useOceanLive.d.ts.map +1 -0
- package/dist/hooks/useOceanLive.js +38 -0
- package/dist/hooks/useOceanMaterial.d.ts +39 -0
- package/dist/hooks/useOceanMaterial.d.ts.map +1 -0
- package/dist/hooks/useOceanMaterial.js +65 -0
- package/dist/hooks/useTerrainClipmap.d.ts +12 -0
- package/dist/hooks/useTerrainClipmap.d.ts.map +1 -0
- package/dist/hooks/useTerrainClipmap.js +10 -0
- package/dist/hooks/useTerrainLive.d.ts +34 -0
- package/dist/hooks/useTerrainLive.d.ts.map +1 -0
- package/dist/hooks/useTerrainLive.js +45 -0
- package/dist/index.d.ts +26 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -0
- package/dist/presets/landscapePresets.d.ts +60 -0
- package/dist/presets/landscapePresets.d.ts.map +1 -0
- package/dist/presets/landscapePresets.js +194 -0
- package/dist/presets/landscapeTypes.d.ts +195 -0
- package/dist/presets/landscapeTypes.d.ts.map +1 -0
- package/dist/presets/landscapeTypes.js +315 -0
- package/dist/presets/oceanSurfacePresets.d.ts +33 -0
- package/dist/presets/oceanSurfacePresets.d.ts.map +1 -0
- package/dist/presets/oceanSurfacePresets.js +245 -0
- package/dist/presets/terrainPresets.d.ts +28 -0
- package/dist/presets/terrainPresets.d.ts.map +1 -0
- package/dist/presets/terrainPresets.js +293 -0
- package/dist/presets/volumetricCloudPresets.d.ts +38 -0
- package/dist/presets/volumetricCloudPresets.d.ts.map +1 -0
- package/dist/presets/volumetricCloudPresets.js +480 -0
- package/dist/shaders/clouds/CirrusMaterial.d.ts +84 -0
- package/dist/shaders/clouds/CirrusMaterial.d.ts.map +1 -0
- package/dist/shaders/clouds/CirrusMaterial.js +167 -0
- package/dist/shaders/clouds/CloudCompositeMaterial.d.ts +20 -0
- package/dist/shaders/clouds/CloudCompositeMaterial.d.ts.map +1 -0
- package/dist/shaders/clouds/CloudCompositeMaterial.js +82 -0
- package/dist/shaders/clouds/CloudResolveMaterial.d.ts +22 -0
- package/dist/shaders/clouds/CloudResolveMaterial.d.ts.map +1 -0
- package/dist/shaders/clouds/CloudResolveMaterial.js +77 -0
- package/dist/shaders/clouds/CloudVolumeMaterial.d.ts +143 -0
- package/dist/shaders/clouds/CloudVolumeMaterial.d.ts.map +1 -0
- package/dist/shaders/clouds/CloudVolumeMaterial.js +249 -0
- package/dist/shaders/clouds/SkyBackgroundMaterial.d.ts +21 -0
- package/dist/shaders/clouds/SkyBackgroundMaterial.d.ts.map +1 -0
- package/dist/shaders/clouds/SkyBackgroundMaterial.js +42 -0
- package/dist/shaders/glsl/cloudCore.glsl.d.ts +24 -0
- package/dist/shaders/glsl/cloudCore.glsl.d.ts.map +1 -0
- package/dist/shaders/glsl/cloudCore.glsl.js +348 -0
- package/dist/shaders/glsl/landscapeCore.glsl.d.ts +49 -0
- package/dist/shaders/glsl/landscapeCore.glsl.d.ts.map +1 -0
- package/dist/shaders/glsl/landscapeCore.glsl.js +518 -0
- package/dist/shaders/glsl/noiseBake.glsl.d.ts +30 -0
- package/dist/shaders/glsl/noiseBake.glsl.d.ts.map +1 -0
- package/dist/shaders/glsl/noiseBake.glsl.js +164 -0
- package/dist/shaders/glsl/oceanCore.glsl.d.ts +52 -0
- package/dist/shaders/glsl/oceanCore.glsl.d.ts.map +1 -0
- package/dist/shaders/glsl/oceanCore.glsl.js +421 -0
- package/dist/shaders/glsl/terrainCore.glsl.d.ts +78 -0
- package/dist/shaders/glsl/terrainCore.glsl.d.ts.map +1 -0
- package/dist/shaders/glsl/terrainCore.glsl.js +625 -0
- package/dist/shaders/landscape/LandscapeMaterial.d.ts +73 -0
- package/dist/shaders/landscape/LandscapeMaterial.d.ts.map +1 -0
- package/dist/shaders/landscape/LandscapeMaterial.js +136 -0
- package/dist/shaders/ocean/OceanSurfaceMaterial.d.ts +57 -0
- package/dist/shaders/ocean/OceanSurfaceMaterial.d.ts.map +1 -0
- package/dist/shaders/ocean/OceanSurfaceMaterial.js +268 -0
- package/dist/shaders/terrain/TerrainMaterial.d.ts +80 -0
- package/dist/shaders/terrain/TerrainMaterial.d.ts.map +1 -0
- package/dist/shaders/terrain/TerrainMaterial.js +291 -0
- package/dist/types/cloudConfigs.d.ts +244 -0
- package/dist/types/cloudConfigs.d.ts.map +1 -0
- package/dist/types/cloudConfigs.js +282 -0
- package/dist/types/index.d.ts +8 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +4 -1
- package/dist/types/landscapeConfigs.d.ts +218 -0
- package/dist/types/landscapeConfigs.d.ts.map +1 -0
- package/dist/types/landscapeConfigs.js +256 -0
- package/dist/types/oceanConfigs.d.ts +290 -0
- package/dist/types/oceanConfigs.d.ts.map +1 -0
- package/dist/types/oceanConfigs.js +380 -0
- package/dist/types/terrainConfigs.d.ts +251 -0
- package/dist/types/terrainConfigs.d.ts.map +1 -0
- package/dist/types/terrainConfigs.js +292 -0
- package/dist/utils/cloudUniforms.d.ts +14 -0
- package/dist/utils/cloudUniforms.d.ts.map +1 -0
- package/dist/utils/cloudUniforms.js +122 -0
- package/dist/utils/frameRenderer.d.ts +33 -0
- package/dist/utils/frameRenderer.d.ts.map +1 -0
- package/dist/utils/frameRenderer.js +24 -0
- package/dist/utils/handleCloudsAnimations.d.ts +16 -0
- package/dist/utils/handleCloudsAnimations.d.ts.map +1 -0
- package/dist/utils/handleCloudsAnimations.js +64 -0
- package/dist/utils/landscapeGeometry.d.ts +61 -0
- package/dist/utils/landscapeGeometry.d.ts.map +1 -0
- package/dist/utils/landscapeGeometry.js +126 -0
- package/dist/utils/landscapeHeight.d.ts +44 -0
- package/dist/utils/landscapeHeight.d.ts.map +1 -0
- package/dist/utils/landscapeHeight.js +65 -0
- package/dist/utils/landscapeTextures.d.ts +94 -0
- package/dist/utils/landscapeTextures.d.ts.map +1 -0
- package/dist/utils/landscapeTextures.js +290 -0
- package/dist/utils/landscapeUniforms.d.ts +20 -0
- package/dist/utils/landscapeUniforms.d.ts.map +1 -0
- package/dist/utils/landscapeUniforms.js +61 -0
- package/dist/utils/oceanUniforms.d.ts +47 -0
- package/dist/utils/oceanUniforms.d.ts.map +1 -0
- package/dist/utils/oceanUniforms.js +216 -0
- package/dist/utils/rtin.d.ts +63 -0
- package/dist/utils/rtin.d.ts.map +1 -0
- package/dist/utils/rtin.js +202 -0
- package/dist/utils/terrainUniforms.d.ts +14 -0
- package/dist/utils/terrainUniforms.d.ts.map +1 -0
- package/dist/utils/terrainUniforms.js +196 -0
- package/package.json +2 -2
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Config shapes for the volumetric cloud system that lives in this package.
|
|
3
|
+
*
|
|
4
|
+
* Declared locally rather than in `@3driseai/3drise-core`, alongside
|
|
5
|
+
* `gridConfigs.ts`, because the materials and the renderer are here and nothing
|
|
6
|
+
* outside the viewer needs to construct these by hand.
|
|
7
|
+
*
|
|
8
|
+
* A sky is a deck PLUS an optional ice layer, not one of four things — cirrus
|
|
9
|
+
* coexists with every other type in nature and in the renderer. So a cloud
|
|
10
|
+
* settings object carries two independent layer blocks.
|
|
11
|
+
*/
|
|
12
|
+
// -----------------------------------------------------------------------------
|
|
13
|
+
// Defaults
|
|
14
|
+
// -----------------------------------------------------------------------------
|
|
15
|
+
const deckBase = {
|
|
16
|
+
coverage: 0.52,
|
|
17
|
+
density: 2.6,
|
|
18
|
+
profile: 0.52,
|
|
19
|
+
baseAltitude: 1500,
|
|
20
|
+
topAltitude: 3400,
|
|
21
|
+
featureSize: 2600,
|
|
22
|
+
detailSize: 400,
|
|
23
|
+
detailStrength: 0.5,
|
|
24
|
+
curlStrength: 0.55,
|
|
25
|
+
weatherCellSize: 24000,
|
|
26
|
+
shear: 0.08,
|
|
27
|
+
anvil: 0,
|
|
28
|
+
precipitation: 0,
|
|
29
|
+
windBearing: 78,
|
|
30
|
+
windSpeed: 6,
|
|
31
|
+
rise: 1.4,
|
|
32
|
+
churn: 4.5,
|
|
33
|
+
evolution: 0.45,
|
|
34
|
+
extinction: 0.013,
|
|
35
|
+
forwardLobe: 0.8,
|
|
36
|
+
backLobe: 0.32,
|
|
37
|
+
msExtinction: 0.55,
|
|
38
|
+
msEnergy: 0.58,
|
|
39
|
+
msPhase: 0.6,
|
|
40
|
+
powder: 0.85,
|
|
41
|
+
silverLining: 0.9,
|
|
42
|
+
ambient: 1,
|
|
43
|
+
aerialPerspective: 0.000026,
|
|
44
|
+
};
|
|
45
|
+
export const defaultCumulusConfig = {
|
|
46
|
+
...deckBase,
|
|
47
|
+
type: 'clouds',
|
|
48
|
+
deckType: 'cumulus',
|
|
49
|
+
preset: '',
|
|
50
|
+
enabled: true,
|
|
51
|
+
};
|
|
52
|
+
export const defaultStratocumulusConfig = {
|
|
53
|
+
...deckBase,
|
|
54
|
+
type: 'clouds',
|
|
55
|
+
deckType: 'stratocumulus',
|
|
56
|
+
preset: '',
|
|
57
|
+
enabled: true,
|
|
58
|
+
coverage: 0.86,
|
|
59
|
+
density: 4.5,
|
|
60
|
+
profile: 0.22,
|
|
61
|
+
baseAltitude: 900,
|
|
62
|
+
topAltitude: 1700,
|
|
63
|
+
featureSize: 2200,
|
|
64
|
+
detailSize: 450,
|
|
65
|
+
detailStrength: 0.36,
|
|
66
|
+
curlStrength: 0.42,
|
|
67
|
+
weatherCellSize: 17000,
|
|
68
|
+
shear: 0.16,
|
|
69
|
+
windSpeed: 9,
|
|
70
|
+
rise: 0.6,
|
|
71
|
+
churn: 2.2,
|
|
72
|
+
evolution: 0.35,
|
|
73
|
+
extinction: 0.017,
|
|
74
|
+
forwardLobe: 0.72,
|
|
75
|
+
powder: 1,
|
|
76
|
+
silverLining: 0.5,
|
|
77
|
+
ambient: 1.15,
|
|
78
|
+
aerialPerspective: 0.000034,
|
|
79
|
+
};
|
|
80
|
+
export const defaultCumulonimbusConfig = {
|
|
81
|
+
...deckBase,
|
|
82
|
+
type: 'clouds',
|
|
83
|
+
deckType: 'cumulonimbus',
|
|
84
|
+
preset: '',
|
|
85
|
+
enabled: true,
|
|
86
|
+
coverage: 0.52,
|
|
87
|
+
density: 3.2,
|
|
88
|
+
profile: 0.96,
|
|
89
|
+
baseAltitude: 1100,
|
|
90
|
+
topAltitude: 9500,
|
|
91
|
+
featureSize: 5200,
|
|
92
|
+
detailSize: 1200,
|
|
93
|
+
curlStrength: 0.85,
|
|
94
|
+
weatherCellSize: 46000,
|
|
95
|
+
shear: 0.42,
|
|
96
|
+
anvil: 0.95,
|
|
97
|
+
precipitation: 0.75,
|
|
98
|
+
windSpeed: 11,
|
|
99
|
+
rise: 3.2,
|
|
100
|
+
churn: 7,
|
|
101
|
+
evolution: 0.55,
|
|
102
|
+
extinction: 0.019,
|
|
103
|
+
forwardLobe: 0.83,
|
|
104
|
+
powder: 1.05,
|
|
105
|
+
silverLining: 1.35,
|
|
106
|
+
ambient: 0.85,
|
|
107
|
+
aerialPerspective: 0.00002,
|
|
108
|
+
};
|
|
109
|
+
export const defaultCirrusConfig = {
|
|
110
|
+
preset: '',
|
|
111
|
+
enabled: true,
|
|
112
|
+
altitude: 8200,
|
|
113
|
+
thickness: 700,
|
|
114
|
+
coverage: 0.62,
|
|
115
|
+
opticalDepth: 0.95,
|
|
116
|
+
featureSize: 44000,
|
|
117
|
+
anisotropy: 0.11,
|
|
118
|
+
windBearing: 78,
|
|
119
|
+
windSpeed: 16,
|
|
120
|
+
halo: 1.1,
|
|
121
|
+
forwardLobe: 0.9,
|
|
122
|
+
secondaryLobe: 0.2,
|
|
123
|
+
ambient: 1,
|
|
124
|
+
aerialPerspective: 0.000026,
|
|
125
|
+
};
|
|
126
|
+
export const defaultCloudsQuality = {
|
|
127
|
+
resolutionScale: 0.5,
|
|
128
|
+
temporalBlend: 0.9,
|
|
129
|
+
steps: 96,
|
|
130
|
+
lightSteps: 6,
|
|
131
|
+
lightStep: 0.024,
|
|
132
|
+
stepGrowth: 0.0045,
|
|
133
|
+
maxSpan: 120000,
|
|
134
|
+
detailFadeDistance: 16000,
|
|
135
|
+
curvature: 1 / (2 * 6371000),
|
|
136
|
+
exposure: 1,
|
|
137
|
+
tonemap: true,
|
|
138
|
+
};
|
|
139
|
+
/** Per-type deck defaults, for the controller's type switcher. */
|
|
140
|
+
export const CLOUD_DECK_DEFAULTS = {
|
|
141
|
+
cumulus: defaultCumulusConfig,
|
|
142
|
+
stratocumulus: defaultStratocumulusConfig,
|
|
143
|
+
cumulonimbus: defaultCumulonimbusConfig,
|
|
144
|
+
};
|
|
145
|
+
export const CLOUD_DECK_SCHEMA = [
|
|
146
|
+
{ key: 'coverage', label: 'Coverage', group: 'shape', min: 0, max: 1, step: 0.005, description: 'Fraction of sky the deck occupies. Above ~0.8 a stratocumulus closes into true overcast.' },
|
|
147
|
+
{ key: 'profile', label: 'Vertical profile', group: 'shape', min: 0, max: 1, step: 0.005, description: 'Blends stratus (0), cumulus (0.5) and cumulonimbus (1) density profiles. The weather map biases it per cell so one sky holds a spread.' },
|
|
148
|
+
{ key: 'density', label: 'Density', group: 'shape', min: 0, max: 9, step: 0.02, description: 'Multiplies the density field. Target optical depth 4-6 through a core; past ~10 the interior goes muddy.' },
|
|
149
|
+
{ key: 'baseAltitude', label: 'Base altitude', group: 'shape', min: 200, max: 6000, step: 10, unit: 'm', description: 'Cloud base. The vertical profile is a fraction of base-to-top, so moving either end restretches the whole shape.' },
|
|
150
|
+
{ key: 'topAltitude', label: 'Top altitude', group: 'shape', min: 600, max: 14000, step: 10, unit: 'm', description: 'Cloud top. Also sets the march step, so cost scales with depth.' },
|
|
151
|
+
{ key: 'featureSize', label: 'Feature size', group: 'shape', min: 600, max: 9000, step: 10, unit: 'm', description: 'Size of the primary lobes. Keep it well above the march step or the shape aliases.' },
|
|
152
|
+
{ key: 'detailSize', label: 'Detail size', group: 'shape', min: 150, max: 2000, step: 10, unit: 'm', description: 'Size of the erosion detail. Below ~2x the march step it beats against the sampling and speckles.' },
|
|
153
|
+
{ key: 'detailStrength', label: 'Detail erosion', group: 'shape', min: 0, max: 1, step: 0.005, description: 'How deeply detail eats into the base shape. Raise for crisp cauliflower, lower for soft mass.' },
|
|
154
|
+
{ key: 'curlStrength', label: 'Curl warp', group: 'shape', min: 0, max: 2, step: 0.01, description: 'Divergence-free warp on the erosion, strongest at the base where a cloud shears into wisps.' },
|
|
155
|
+
{ key: 'weatherCellSize', label: 'Weather cell size', group: 'shape', min: 4000, max: 90000, step: 250, unit: 'm', description: 'Size of the coverage cells. Too large and a whole viewport sits inside one cell.' },
|
|
156
|
+
{ key: 'shear', label: 'Wind shear', group: 'shape', min: 0, max: 1.2, step: 0.005, description: 'Downwind displacement per unit height. Tilts the column so the top leads the base.' },
|
|
157
|
+
{ key: 'anvil', label: 'Anvil spread', group: 'shape', min: 0, max: 1, step: 0.01, types: ['cumulonimbus'], description: 'Lateral growth above 70% height. Below ~0.4 the tower keeps a rounded top instead of flattening at the tropopause.' },
|
|
158
|
+
{ key: 'precipitation', label: 'Precipitation', group: 'shape', min: 0, max: 1, step: 0.01, types: ['cumulonimbus'], description: 'Drops scattering albedo at the base. Set to 0 and a storm reads as an oversized cumulus.' },
|
|
159
|
+
{ key: 'windBearing', label: 'Wind bearing', group: 'animation', min: 0, max: 360, step: 1, unit: 'deg', description: 'Drives advection, shear tilt and the cirrus streak axis.' },
|
|
160
|
+
{ key: 'windSpeed', label: 'Wind speed', group: 'animation', min: 0, max: 40, step: 0.1, unit: 'm/s', description: 'Advection rate of the whole field.' },
|
|
161
|
+
{ key: 'rise', label: 'Convective rise', group: 'animation', min: 0, max: 12, step: 0.05, unit: 'm/s', description: 'Vertical motion of the shape volume. Decoupling it from wind is what makes clouds boil rather than slide.' },
|
|
162
|
+
{ key: 'churn', label: 'Detail churn', group: 'animation', min: 0, max: 24, step: 0.1, unit: 'm/s', description: 'Independent motion of the erosion layer. Without it edges translate instead of evolving.' },
|
|
163
|
+
{ key: 'evolution', label: 'Formation / decay', group: 'animation', min: 0, max: 1, step: 0.01, description: 'Slow oscillation of the coverage threshold. Cells appear and dissipate rather than only drifting.' },
|
|
164
|
+
{ key: 'extinction', label: 'Extinction', group: 'scattering', min: 0.002, max: 0.06, step: 0.0005, unit: '1/m', description: 'Tuned well below the physical ~0.045, because a 3-octave scattering approximation cannot carry that optical depth.' },
|
|
165
|
+
{ key: 'forwardLobe', label: 'Forward lobe', group: 'scattering', min: 0, max: 0.97, step: 0.005, description: 'Anisotropy of the forward Henyey-Greenstein lobe. This is the silver lining.' },
|
|
166
|
+
{ key: 'backLobe', label: 'Back lobe', group: 'scattering', min: 0, max: 0.9, step: 0.005, description: 'Small backward lobe, mixed at 0.42. The glow when the sun is behind you.' },
|
|
167
|
+
{ key: 'msExtinction', label: 'MS extinction decay', group: 'scattering', min: 0.1, max: 0.95, step: 0.005, advanced: true, description: 'Per-octave extinction scale. Higher keeps deep interiors brighter.' },
|
|
168
|
+
{ key: 'msEnergy', label: 'MS energy decay', group: 'scattering', min: 0.1, max: 0.95, step: 0.005, advanced: true, description: 'Per-octave energy scale. Drop to 0.15 and the cloud collapses to flat black.' },
|
|
169
|
+
{ key: 'msPhase', label: 'MS phase decay', group: 'scattering', min: 0.1, max: 0.95, step: 0.005, advanced: true, description: 'Per-octave anisotropy scale. Later octaves go isotropic, as multiply-scattered light does.' },
|
|
170
|
+
{ key: 'powder', label: 'Powder', group: 'scattering', min: 0, max: 1.5, step: 0.01, description: 'Dark-edge term. Applied only when looking away from the sun.' },
|
|
171
|
+
{ key: 'silverLining', label: 'Silver lining', group: 'scattering', min: 0, max: 4, step: 0.01, description: 'Extra forward-scatter boost near the sun disc.' },
|
|
172
|
+
{ key: 'ambient', label: 'Ambient', group: 'scattering', min: 0, max: 3, step: 0.01, description: 'Sky and ground-bounce fill. Too high goes flat; too low crushes shadowed sides to black.' },
|
|
173
|
+
{ key: 'aerialPerspective', label: 'Aerial perspective', group: 'lighting', min: 0, max: 0.00012, step: 0.000001, unit: '1/m', description: 'Rate distant cloud fades into the sky behind it. The main cue for how large the sky reads.' },
|
|
174
|
+
];
|
|
175
|
+
export const CIRRUS_SCHEMA = [
|
|
176
|
+
{ key: 'altitude', label: 'Altitude', group: 'shape', min: 4000, max: 14000, step: 50, unit: 'm', description: 'Base of the ice sheet. Real cirrus sits at 6-12 km; below ~5 km it stops reading as ice.' },
|
|
177
|
+
{ key: 'thickness', label: 'Thickness', group: 'shape', min: 100, max: 2500, step: 25, unit: 'm', description: 'Slab depth. Three samples cross it regardless, so this mostly sets what a grazing ray accumulates.' },
|
|
178
|
+
{ key: 'coverage', label: 'Coverage', group: 'shape', min: 0, max: 1, step: 0.005, description: 'Fraction of sky the sheets occupy.' },
|
|
179
|
+
{ key: 'opticalDepth', label: 'Optical depth', group: 'shape', min: 0, max: 2, step: 0.01, description: 'Calibrated so 1.0 gives vertical optical depth around 0.5 — cirrus you can see the sun through.' },
|
|
180
|
+
{ key: 'featureSize', label: 'Feature size', group: 'shape', min: 8000, max: 120000, step: 500, unit: 'm', description: 'Size of a streak band before anisotropy is applied.' },
|
|
181
|
+
{ key: 'anisotropy', label: 'Anisotropy', group: 'shape', min: 0.03, max: 1, step: 0.005, description: '1.0 gives round blobs; 0.1 gives the drawn-out fibratus streaks cirrus is recognised by.' },
|
|
182
|
+
{ key: 'windBearing', label: 'Wind bearing', group: 'animation', min: 0, max: 360, step: 1, unit: 'deg', description: 'Also the streak axis — the noise is rotated into this frame before being compressed.' },
|
|
183
|
+
{ key: 'windSpeed', label: 'Drift speed', group: 'animation', min: 0, max: 60, step: 0.5, unit: 'm/s', description: 'High-altitude winds are fast; values well above a cumulus field are correct here.' },
|
|
184
|
+
{ key: 'halo', label: '22 degree halo', group: 'lighting', min: 0, max: 2, step: 0.01, description: 'Refraction minimum of a hexagonal ice prism. The strongest cue that this is ice, not thin water cloud.' },
|
|
185
|
+
{ key: 'forwardLobe', label: 'Forward lobe', group: 'scattering', min: 0, max: 0.97, step: 0.005, description: 'Ice scatters hard forward — higher than any water cloud value.' },
|
|
186
|
+
{ key: 'secondaryLobe', label: 'Secondary lobe', group: 'scattering', min: 0, max: 0.9, step: 0.005, description: 'Mixed at 0.35 to widen the forward peak rather than add backscatter.' },
|
|
187
|
+
{ key: 'ambient', label: 'Ambient', group: 'scattering', min: 0, max: 3, step: 0.01, description: 'Sky fill. Cirrus has almost no self-shadow, so this mainly sets its floor brightness.' },
|
|
188
|
+
{ key: 'aerialPerspective', label: 'Aerial perspective', group: 'lighting', min: 0, max: 0.00012, step: 0.000001, unit: '1/m', description: 'Applied at 0.55 strength, since cirrus is above most of the atmosphere.' },
|
|
189
|
+
];
|
|
190
|
+
export const CLOUD_QUALITY_SCHEMA = [
|
|
191
|
+
{ key: 'resolutionScale', label: 'Render scale', group: 'quality', min: 0.25, max: 1, step: 0.05, description: 'Fraction of full resolution the march runs at. 0.5 is the sweet spot with the temporal resolve on.' },
|
|
192
|
+
{ key: 'temporalBlend', label: 'Temporal blend', group: 'quality', min: 0, max: 0.97, step: 0.005, description: 'History weight when the camera is still. Higher converges further and ghosts more.' },
|
|
193
|
+
{ key: 'steps', label: 'Step budget', group: 'quality', min: 24, max: 176, step: 1, description: 'Sets the fine step as depth/steps*2. Empty space is skipped coarser regardless.' },
|
|
194
|
+
{ key: 'lightSteps', label: 'Light steps', group: 'quality', min: 2, max: 6, step: 1, advanced: true, description: 'Samples toward the sun per shaded point, spread inside a cone so self-shadowing is soft.' },
|
|
195
|
+
{ key: 'lightStep', label: 'Light step', group: 'quality', min: 0.004, max: 0.09, step: 0.001, advanced: true, description: 'First shadow step as a fraction of cloud depth. A fraction, not metres, so one value fits any deck.' },
|
|
196
|
+
{ key: 'stepGrowth', label: 'Distance step scale', group: 'quality', min: 0.0005, max: 0.03, step: 0.0005, advanced: true, description: 'Step size as a fraction of distance. Too small and near-horizontal rays run out of steps before the horizon, cutting the deck along a straight line; too large and distant cloud loses its shape.' },
|
|
197
|
+
{ key: 'maxSpan', label: 'Max march span', group: 'quality', min: 4000, max: 250000, step: 1000, unit: 'm', description: 'Hard cap on ray length. Keep it far enough out that aerial perspective has dissolved the deck before the cut, or the cut shows as a straight edge at the horizon.' },
|
|
198
|
+
{ key: 'detailFadeDistance', label: 'Detail fade distance', group: 'quality', min: 2000, max: 80000, step: 500, unit: 'm', description: 'Distance over which high-frequency erosion fades out. Removes far-field speckle.' },
|
|
199
|
+
{ key: 'curvature', label: 'Planetary curvature', group: 'quality', min: 0, max: 0.0000005, step: 0.00000001, advanced: true, description: '1/(2R). Bends the ray so the deck meets a real horizon. Zero gives a flat deck.' },
|
|
200
|
+
{ key: 'exposure', label: 'Exposure', group: 'quality', min: 0.2, max: 4, step: 0.01, description: 'Applied in the composite, since this pass owns the final image.' },
|
|
201
|
+
];
|
|
202
|
+
export const defaultVolumetricCloudsSettings = {
|
|
203
|
+
id: '3drise-clouds',
|
|
204
|
+
type: 'clouds',
|
|
205
|
+
config: { ...defaultCumulusConfig, enabled: false },
|
|
206
|
+
cirrus: { ...defaultCirrusConfig, enabled: false },
|
|
207
|
+
quality: { ...defaultCloudsQuality },
|
|
208
|
+
};
|
|
209
|
+
/**
|
|
210
|
+
* Deck properties the `clouds` animation and mouse-move domains may target.
|
|
211
|
+
* Everything here is a scalar that can be interpolated per frame without
|
|
212
|
+
* rebuilding anything — altitudes and feature sizes are deliberately excluded,
|
|
213
|
+
* since changing them mid-animation restretches the whole density field.
|
|
214
|
+
*/
|
|
215
|
+
export const CLOUD_ANIMATABLE_PROPERTIES = [
|
|
216
|
+
'coverage',
|
|
217
|
+
'density',
|
|
218
|
+
'profile',
|
|
219
|
+
'detailStrength',
|
|
220
|
+
'curlStrength',
|
|
221
|
+
'shear',
|
|
222
|
+
'anvil',
|
|
223
|
+
'precipitation',
|
|
224
|
+
'windBearing',
|
|
225
|
+
'windSpeed',
|
|
226
|
+
'rise',
|
|
227
|
+
'churn',
|
|
228
|
+
'evolution',
|
|
229
|
+
'extinction',
|
|
230
|
+
'powder',
|
|
231
|
+
'silverLining',
|
|
232
|
+
'ambient',
|
|
233
|
+
];
|
|
234
|
+
// =============================================================================
|
|
235
|
+
// Normalisation
|
|
236
|
+
// =============================================================================
|
|
237
|
+
//
|
|
238
|
+
// A published scene loads whatever was in the database the day it was saved, and
|
|
239
|
+
// a scene saved a year ago will not have the knobs added since. Reading those
|
|
240
|
+
// straight into the renderer is how an embed dies: VolumetricCloudsPass sizes its
|
|
241
|
+
// half-res targets from `quality.resolutionScale` on its first frame, so a blob
|
|
242
|
+
// with no `quality` block throws before anything is drawn.
|
|
243
|
+
//
|
|
244
|
+
// So every entry point normalises. Each block is merged over its defaults
|
|
245
|
+
// separately, which matters as much as the merge itself: the pass keys its
|
|
246
|
+
// temporal accumulation off the identity of the deck config, so folding all three
|
|
247
|
+
// blocks through one object would restart the cloud history every time somebody
|
|
248
|
+
// nudged a cirrus slider.
|
|
249
|
+
const DECK_TYPES = ['cumulus', 'stratocumulus', 'cumulonimbus'];
|
|
250
|
+
const isRecord = (v) => typeof v === 'object' && v !== null;
|
|
251
|
+
/** Deck block merged over its type's defaults. Returns null when there is no deck
|
|
252
|
+
* to render — including the retired flat CloudsSettings shape, which has no
|
|
253
|
+
* `config` and should draw nothing rather than half a sky. */
|
|
254
|
+
export function normalizeCloudDeck(raw) {
|
|
255
|
+
if (!isRecord(raw))
|
|
256
|
+
return null;
|
|
257
|
+
// An unknown or missing deckType falls back rather than rendering nothing: a
|
|
258
|
+
// scene that says `enabled: true` should show a sky, and stratocumulus is the
|
|
259
|
+
// least surprising thing to show.
|
|
260
|
+
const deckType = DECK_TYPES.includes(raw.deckType)
|
|
261
|
+
? raw.deckType
|
|
262
|
+
: 'stratocumulus';
|
|
263
|
+
return {
|
|
264
|
+
...CLOUD_DECK_DEFAULTS[deckType],
|
|
265
|
+
...raw,
|
|
266
|
+
type: 'clouds',
|
|
267
|
+
deckType,
|
|
268
|
+
};
|
|
269
|
+
}
|
|
270
|
+
/** Cirrus block merged over its defaults, or null when the scene has no cirrus
|
|
271
|
+
* block at all. Null rather than the defaults, because `defaultCirrusConfig` is
|
|
272
|
+
* enabled: a project saved before this layer existed must not gain an ice sheet
|
|
273
|
+
* it was never authored with. A block that exists but omits `enabled` is a
|
|
274
|
+
* deliberate one and takes the default. */
|
|
275
|
+
export function normalizeCirrus(raw) {
|
|
276
|
+
if (!isRecord(raw))
|
|
277
|
+
return null;
|
|
278
|
+
return { ...defaultCirrusConfig, ...raw };
|
|
279
|
+
}
|
|
280
|
+
export function normalizeCloudQuality(raw) {
|
|
281
|
+
return { ...defaultCloudsQuality, ...(isRecord(raw) ? raw : {}) };
|
|
282
|
+
}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,3 +1,11 @@
|
|
|
1
1
|
export type { ObjectReadyProps, ObjectReadySource, OnObjectDispose, OnObjectReady, } from './objectReady';
|
|
2
2
|
export type { AnyGridConfig, CircuitGridConfig, ContourGridConfig, FractalGridConfig, GridCellMode, GridLineMode, GridSurfaceConfig, HexGridConfig, MoireGridConfig, QuasiGridConfig, RadarGridConfig, VoronoiGridConfig, } from './gridConfigs';
|
|
3
|
+
export type { CirrusLayerConfig, CloudAnimatableProperty, CloudDeckConfig, CloudDeckSurfaceConfig, CloudDeckType, CloudPropertyGroup, CloudPropertySchema, CloudsQualityConfig, VolumetricCloudsSettings, } from './cloudConfigs';
|
|
4
|
+
export type { ProceduralTerrainSettings, TerrainConfig, TerrainPropertyGroup, TerrainPropertySchema, TerrainQualityConfig, TerrainSurfaceConfig, TerrainType, } from './terrainConfigs';
|
|
5
|
+
export { TERRAIN_DEFAULTS, TERRAIN_QUALITY_SCHEMA, TERRAIN_SCHEMA, defaultCanyonConfig, defaultDunesConfig, defaultHillsConfig, defaultMountainsConfig, defaultProceduralTerrainSettings, defaultTerrainQuality, normalizeTerrain, normalizeTerrainQuality, normalizeTerrainSettings, } from './terrainConfigs';
|
|
6
|
+
export { CIRRUS_SCHEMA, CLOUD_ANIMATABLE_PROPERTIES, CLOUD_DECK_DEFAULTS, CLOUD_DECK_SCHEMA, CLOUD_QUALITY_SCHEMA, defaultCirrusConfig, defaultCloudsQuality, defaultCumulonimbusConfig, defaultCumulusConfig, defaultStratocumulusConfig, defaultVolumetricCloudsSettings, normalizeCirrus, normalizeCloudDeck, normalizeCloudQuality, } from './cloudConfigs';
|
|
7
|
+
export type { OceanConfig, OceanMeshSettings, OceanPropertyGroup, OceanPropertySchema, OceanQualityConfig, OceanSurfaceConfig, OceanWaterSettings, ReflectionMode, TerrainInteraction, WaterHost, WaterType, WaveModel, } from './oceanConfigs';
|
|
8
|
+
export { OCEAN_DEFAULTS, OCEAN_QUALITY_SCHEMA, OCEAN_SCHEMA, OBJECT_HOST_OVERRIDES, defaultLakeConfig, defaultOceanQuality, defaultOceanWaterSettings, defaultSeaConfig, defaultShoreConfig, defaultStormConfig, normalizeOcean, normalizeOceanQuality, normalizeOceanSettings, } from './oceanConfigs';
|
|
9
|
+
export type { AutoSplatConfig, HeightEncoding, LandscapeConfig, LandscapeHost, LandscapePropertyGroup, LandscapePropertySchema, LandscapeQualityConfig, LandscapeSettings, LandscapeSurface, SplatSource, } from './landscapeConfigs';
|
|
10
|
+
export { LANDSCAPE_AUTOSPLAT_SCHEMA, LANDSCAPE_LIVE_AUTOSPLAT_KEYS, LANDSCAPE_LIVE_CONFIG_KEYS, LANDSCAPE_LIVE_QUALITY_KEYS, LANDSCAPE_LIVE_SURFACE_KEYS, LANDSCAPE_REBUILD_KEYS, LANDSCAPE_QUALITY_SCHEMA, LANDSCAPE_SCHEMA, MAX_LANDSCAPE_SURFACES, MAX_OBJECT_SURFACES, defaultAutoSplat, defaultLandscapeConfig, defaultLandscapeQuality, defaultLandscapeSettings, defaultLandscapeSurface, normalizeLandscape, normalizeLandscapeQuality, normalizeLandscapeSettings, normalizeLandscapeSurface, } from './landscapeConfigs';
|
|
3
11
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,aAAa,GACd,MAAM,eAAe,CAAC;AAEvB,YAAY,EACV,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,eAAe,EACf,eAAe,EACf,iBAAiB,GAClB,MAAM,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,aAAa,GACd,MAAM,eAAe,CAAC;AAEvB,YAAY,EACV,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,eAAe,EACf,eAAe,EACf,iBAAiB,GAClB,MAAM,eAAe,CAAC;AAEvB,YAAY,EACV,iBAAiB,EACjB,uBAAuB,EACvB,eAAe,EACf,sBAAsB,EACtB,aAAa,EACb,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,gBAAgB,CAAC;AAExB,YAAY,EACV,yBAAyB,EACzB,aAAa,EACb,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,WAAW,GACZ,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,cAAc,EACd,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,EACtB,gCAAgC,EAChC,qBAAqB,EACrB,gBAAgB,EAChB,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,aAAa,EACb,2BAA2B,EAC3B,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EACpB,yBAAyB,EACzB,oBAAoB,EACpB,0BAA0B,EAC1B,+BAA+B,EAC/B,eAAe,EACf,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,gBAAgB,CAAC;AAExB,YAAY,EACV,WAAW,EACX,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,EACd,kBAAkB,EAClB,SAAS,EACT,SAAS,EACT,SAAS,GACV,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,YAAY,EACZ,qBAAqB,EACrB,iBAAiB,EACjB,mBAAmB,EACnB,yBAAyB,EACzB,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,EACd,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,gBAAgB,CAAC;AAExB,YAAY,EACV,eAAe,EACf,cAAc,EACd,eAAe,EACf,aAAa,EACb,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,EACtB,iBAAiB,EACjB,gBAAgB,EAChB,WAAW,GACZ,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,0BAA0B,EAC1B,6BAA6B,EAC7B,0BAA0B,EAC1B,2BAA2B,EAC3B,2BAA2B,EAC3B,sBAAsB,EACtB,wBAAwB,EACxB,gBAAgB,EAChB,sBAAsB,EACtB,mBAAmB,EACnB,gBAAgB,EAChB,sBAAsB,EACtB,uBAAuB,EACvB,wBAAwB,EACxB,uBAAuB,EACvB,kBAAkB,EAClB,yBAAyB,EACzB,0BAA0B,EAC1B,yBAAyB,GAC1B,MAAM,oBAAoB,CAAC"}
|
package/dist/types/index.js
CHANGED
|
@@ -1 +1,4 @@
|
|
|
1
|
-
export {};
|
|
1
|
+
export { TERRAIN_DEFAULTS, TERRAIN_QUALITY_SCHEMA, TERRAIN_SCHEMA, defaultCanyonConfig, defaultDunesConfig, defaultHillsConfig, defaultMountainsConfig, defaultProceduralTerrainSettings, defaultTerrainQuality, normalizeTerrain, normalizeTerrainQuality, normalizeTerrainSettings, } from './terrainConfigs.js';
|
|
2
|
+
export { CIRRUS_SCHEMA, CLOUD_ANIMATABLE_PROPERTIES, CLOUD_DECK_DEFAULTS, CLOUD_DECK_SCHEMA, CLOUD_QUALITY_SCHEMA, defaultCirrusConfig, defaultCloudsQuality, defaultCumulonimbusConfig, defaultCumulusConfig, defaultStratocumulusConfig, defaultVolumetricCloudsSettings, normalizeCirrus, normalizeCloudDeck, normalizeCloudQuality, } from './cloudConfigs.js';
|
|
3
|
+
export { OCEAN_DEFAULTS, OCEAN_QUALITY_SCHEMA, OCEAN_SCHEMA, OBJECT_HOST_OVERRIDES, defaultLakeConfig, defaultOceanQuality, defaultOceanWaterSettings, defaultSeaConfig, defaultShoreConfig, defaultStormConfig, normalizeOcean, normalizeOceanQuality, normalizeOceanSettings, } from './oceanConfigs.js';
|
|
4
|
+
export { LANDSCAPE_AUTOSPLAT_SCHEMA, LANDSCAPE_LIVE_AUTOSPLAT_KEYS, LANDSCAPE_LIVE_CONFIG_KEYS, LANDSCAPE_LIVE_QUALITY_KEYS, LANDSCAPE_LIVE_SURFACE_KEYS, LANDSCAPE_REBUILD_KEYS, LANDSCAPE_QUALITY_SCHEMA, LANDSCAPE_SCHEMA, MAX_LANDSCAPE_SURFACES, MAX_OBJECT_SURFACES, defaultAutoSplat, defaultLandscapeConfig, defaultLandscapeQuality, defaultLandscapeSettings, defaultLandscapeSurface, normalizeLandscape, normalizeLandscapeQuality, normalizeLandscapeSettings, normalizeLandscapeSurface, } from './landscapeConfigs.js';
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Config shapes for the landscape system — a bounded, authored ground tile built
|
|
3
|
+
* from a heightmap and textured through splat maps.
|
|
4
|
+
*
|
|
5
|
+
* This is NOT a mode of the procedural terrain and does not share a config with
|
|
6
|
+
* it. Terrain is an infinite camera-following clipmap generated from noise; a
|
|
7
|
+
* landscape is a finite tile whose shape and materials the user supplies. Both
|
|
8
|
+
* may be enabled in one scene; nothing here reads `terrainConfigs`.
|
|
9
|
+
*
|
|
10
|
+
* Declared in the viewer, next to the material that consumes it, for the same
|
|
11
|
+
* reason `terrainConfigs` and `oceanConfigs` are.
|
|
12
|
+
*/
|
|
13
|
+
/** Where a landscape is mounted. */
|
|
14
|
+
export type LandscapeHost = 'ground' | 'object';
|
|
15
|
+
/** How the heightmap's pixels encode elevation. */
|
|
16
|
+
export type HeightEncoding =
|
|
17
|
+
/** 8-bit red channel, 0..1. The common PNG export. */
|
|
18
|
+
'grayscale'
|
|
19
|
+
/** Mapbox / AWS Terrain-RGB: (r*65536 + g*256 + b) / 10 - 10000, in metres. */
|
|
20
|
+
| 'terrain-rgb'
|
|
21
|
+
/** Red and green as a 16-bit big-endian pair, 0..1. */
|
|
22
|
+
| 'rg16';
|
|
23
|
+
/** Where surface weights come from. */
|
|
24
|
+
export type SplatSource =
|
|
25
|
+
/** Authored splat maps, up to two, RGBA = four surfaces each. */
|
|
26
|
+
'maps'
|
|
27
|
+
/** Generated from the heightmap's own height and slope. */
|
|
28
|
+
| 'auto';
|
|
29
|
+
/**
|
|
30
|
+
* One material layer on the ground.
|
|
31
|
+
*
|
|
32
|
+
* `displacement` is the layer's own height map and it is what makes transitions
|
|
33
|
+
* read as material rather than as a cross-fade: at a boundary the higher surface
|
|
34
|
+
* wins per texel, so gravel comes through grass along the gravel's own grain.
|
|
35
|
+
* The reference project accepts this texture and never samples it.
|
|
36
|
+
*/
|
|
37
|
+
export interface LandscapeSurface {
|
|
38
|
+
/** Panel label only; the renderer never reads it. */
|
|
39
|
+
name: string;
|
|
40
|
+
/** Albedo. Required — a surface with no diffuse is skipped. */
|
|
41
|
+
diffuse: string;
|
|
42
|
+
/** Tangent-space normal map. Optional. */
|
|
43
|
+
normal?: string;
|
|
44
|
+
/** Height map for the height blend and, later, parallax. Optional; absent
|
|
45
|
+
* layers blend linearly, which is what the reference always does. */
|
|
46
|
+
displacement?: string;
|
|
47
|
+
/** How many times the texture tiles across the whole landscape. */
|
|
48
|
+
repeat: number;
|
|
49
|
+
/** Normal map strength. */
|
|
50
|
+
normalStrength: number;
|
|
51
|
+
/** 0 desaturates to luma, 1 leaves it alone, above 1 pushes. A luma lerp, not
|
|
52
|
+
* an HSV round trip — the reference does two colour-space conversions per
|
|
53
|
+
* sampled surface per pixel for this. */
|
|
54
|
+
saturation: number;
|
|
55
|
+
/** Multiplied into the albedo. */
|
|
56
|
+
tint: string;
|
|
57
|
+
/** Per-surface roughness. The reference has one value for the whole ground,
|
|
58
|
+
* so wet mud and dry rock shade identically. */
|
|
59
|
+
roughness: number;
|
|
60
|
+
/** Per-surface metalness. Almost always 0; wet rock is the exception. */
|
|
61
|
+
metalness: number;
|
|
62
|
+
/** 0 blends linearly, 1 lets the layer's own height decide the transition. */
|
|
63
|
+
heightBlend: number;
|
|
64
|
+
/** Break the repeat grid with stochastic tiling. Three fetches instead of
|
|
65
|
+
* one for this surface, and the difference between authored ground and
|
|
66
|
+
* wallpaper. Requires quality.stochastic. */
|
|
67
|
+
aperiodic: boolean;
|
|
68
|
+
/** Project on world axes instead of the tile's UV. Cliffs only — it doubles
|
|
69
|
+
* the fetches for this surface. Requires quality.triplanar. */
|
|
70
|
+
triplanar: boolean;
|
|
71
|
+
/** Flip the normal map's green channel (DirectX vs OpenGL convention). */
|
|
72
|
+
flipNormalY: boolean;
|
|
73
|
+
}
|
|
74
|
+
/** Height and slope rule for `splatSource: 'auto'`. */
|
|
75
|
+
export interface AutoSplatConfig {
|
|
76
|
+
/** Height fraction each surface is centred on, in surface order. The last
|
|
77
|
+
* surface is the rock layer and is placed by slope instead. */
|
|
78
|
+
bands: number[];
|
|
79
|
+
/** Width of each band, in height fractions. */
|
|
80
|
+
bandWidth: number;
|
|
81
|
+
/** Slope (0 flat, 1 vertical) where rock starts showing through. */
|
|
82
|
+
slopeStart: number;
|
|
83
|
+
/** Slope where the surface is bare rock. */
|
|
84
|
+
slopeEnd: number;
|
|
85
|
+
/** Break-up applied to the height before banding, so the bands are not
|
|
86
|
+
* contour lines. */
|
|
87
|
+
noise: number;
|
|
88
|
+
/** World size of that break-up. */
|
|
89
|
+
noiseSize: number;
|
|
90
|
+
}
|
|
91
|
+
export interface LandscapeConfig {
|
|
92
|
+
enabled: boolean;
|
|
93
|
+
host: LandscapeHost;
|
|
94
|
+
/** Required. Nothing renders without it. */
|
|
95
|
+
heightMap: string;
|
|
96
|
+
heightEncoding: HeightEncoding;
|
|
97
|
+
splatSource: SplatSource;
|
|
98
|
+
/** 0, 1 or 2 maps — 4 or 8 surfaces. */
|
|
99
|
+
splatMaps: string[];
|
|
100
|
+
autoSplat: AutoSplatConfig;
|
|
101
|
+
/** Baked ambient occlusion over the whole tile. Optional. */
|
|
102
|
+
aoMap?: string;
|
|
103
|
+
/** World units across the tile. */
|
|
104
|
+
size: number;
|
|
105
|
+
/** Heightmap 0..1 (or metres, for terrain-rgb) to world units. */
|
|
106
|
+
elevationScale: number;
|
|
107
|
+
/** World Y added after scaling. */
|
|
108
|
+
elevationBias: number;
|
|
109
|
+
/** Ground host only — the object host uses its transform. */
|
|
110
|
+
origin: [number, number, number];
|
|
111
|
+
/** Ground host only, in degrees. */
|
|
112
|
+
rotationY: number;
|
|
113
|
+
/** 0 samples the heightmap raw; above it, a bicubic filter over a widened
|
|
114
|
+
* footprint, which is what keeps an 8-bit heightmap off visible terracing. */
|
|
115
|
+
smoothness: number;
|
|
116
|
+
surfaces: LandscapeSurface[];
|
|
117
|
+
/** How many of the heaviest surface weights are sampled per pixel, 1..4.
|
|
118
|
+
* The single most effective cost dial in the material. */
|
|
119
|
+
surfaceSamples: number;
|
|
120
|
+
/** Large-scale albedo break-up, generated rather than sampled from a macro
|
|
121
|
+
* texture — the reference ships a 2.7 MB one for this. */
|
|
122
|
+
macroVariation: number;
|
|
123
|
+
/** World size of that break-up. */
|
|
124
|
+
macroSize: number;
|
|
125
|
+
aoIntensity: number;
|
|
126
|
+
envMapIntensity: number;
|
|
127
|
+
/** UI bookmarks. The renderer never reads any of these — they are what the
|
|
128
|
+
* Basic tab shows as the current selection, and what the AI agent will set
|
|
129
|
+
* when it learns to. */
|
|
130
|
+
preset?: string;
|
|
131
|
+
/** Biome id from `landscapeTypes.ts`. */
|
|
132
|
+
landscapeType?: string;
|
|
133
|
+
/** Terrain-shape folder the heightmap came from. */
|
|
134
|
+
shape?: string;
|
|
135
|
+
}
|
|
136
|
+
export interface LandscapeQualityConfig {
|
|
137
|
+
/** RTIN error budget in world units — the maximum height a triangle may be
|
|
138
|
+
* wrong by. 0 puts a vertex on every heightmap texel. */
|
|
139
|
+
meshError: number;
|
|
140
|
+
/** The same budget on a slow GPU or a phone. */
|
|
141
|
+
mobileMeshError: number;
|
|
142
|
+
/** N x N index-buffer chunks over one shared vertex buffer, so the tile
|
|
143
|
+
* frustum-culls. Neighbouring chunks share vertices exactly, so there is no
|
|
144
|
+
* crack risk. */
|
|
145
|
+
chunks: number;
|
|
146
|
+
/** Edge of the square texture arrays every surface is resized into. 2048
|
|
147
|
+
* costs four times the memory of 1024 for detail you will not see past a
|
|
148
|
+
* few metres. */
|
|
149
|
+
arrayResolution: 512 | 1024 | 2048;
|
|
150
|
+
anisotropy: number;
|
|
151
|
+
/** Stochastic tiling for every surface flagged aperiodic. A material define,
|
|
152
|
+
* so turning it off compiles the code out. */
|
|
153
|
+
stochastic: boolean;
|
|
154
|
+
/** Enable the biplanar path for surfaces flagged triplanar. Also a define. */
|
|
155
|
+
triplanar: boolean;
|
|
156
|
+
castShadows: boolean;
|
|
157
|
+
receiveShadows: boolean;
|
|
158
|
+
wireframe: boolean;
|
|
159
|
+
}
|
|
160
|
+
export interface LandscapeSettings {
|
|
161
|
+
id: string;
|
|
162
|
+
type: 'landscape';
|
|
163
|
+
config: LandscapeConfig;
|
|
164
|
+
quality: LandscapeQualityConfig;
|
|
165
|
+
}
|
|
166
|
+
export declare const defaultLandscapeSurface: LandscapeSurface;
|
|
167
|
+
export declare const defaultAutoSplat: AutoSplatConfig;
|
|
168
|
+
export declare const defaultLandscapeConfig: LandscapeConfig;
|
|
169
|
+
export declare const defaultLandscapeQuality: LandscapeQualityConfig;
|
|
170
|
+
export declare const defaultLandscapeSettings: LandscapeSettings;
|
|
171
|
+
/** Hard ceiling. Two splat maps carry four channels each, and the index is packed
|
|
172
|
+
* as `i / MAX_SURFACES` in the weight pair. */
|
|
173
|
+
export declare const MAX_LANDSCAPE_SURFACES = 8;
|
|
174
|
+
/** The object host keeps the same material with a shorter list. */
|
|
175
|
+
export declare const MAX_OBJECT_SURFACES = 4;
|
|
176
|
+
export type LandscapePropertyGroup = 'maps' | 'form' | 'surface' | 'quality';
|
|
177
|
+
export interface LandscapePropertySchema {
|
|
178
|
+
key: string;
|
|
179
|
+
label: string;
|
|
180
|
+
group: LandscapePropertyGroup;
|
|
181
|
+
type?: 'number' | 'boolean' | 'texture' | 'select';
|
|
182
|
+
min?: number;
|
|
183
|
+
max?: number;
|
|
184
|
+
step?: number;
|
|
185
|
+
unit?: string;
|
|
186
|
+
options?: string[];
|
|
187
|
+
description: string;
|
|
188
|
+
advanced?: boolean;
|
|
189
|
+
/** Absent means both hosts. */
|
|
190
|
+
hosts?: LandscapeHost[];
|
|
191
|
+
}
|
|
192
|
+
export declare const LANDSCAPE_SCHEMA: LandscapePropertySchema[];
|
|
193
|
+
export declare const LANDSCAPE_AUTOSPLAT_SCHEMA: LandscapePropertySchema[];
|
|
194
|
+
export declare const LANDSCAPE_QUALITY_SCHEMA: LandscapePropertySchema[];
|
|
195
|
+
/** Config keys that are uniforms and nothing else. */
|
|
196
|
+
export declare const LANDSCAPE_LIVE_CONFIG_KEYS: readonly string[];
|
|
197
|
+
/** Quality keys that are uniforms, material flags or texture state. */
|
|
198
|
+
export declare const LANDSCAPE_LIVE_QUALITY_KEYS: readonly string[];
|
|
199
|
+
/**
|
|
200
|
+
* Keys that rebuild something, listed for the panel to explain itself with.
|
|
201
|
+
*
|
|
202
|
+
* meshError, chunks re-run RTIN and rebuild every index buffer
|
|
203
|
+
* arrayResolution repacks up to sixteen textures
|
|
204
|
+
* surfaceSamples changes a #define, so the shader recompiles
|
|
205
|
+
* stochastic, triplanar likewise
|
|
206
|
+
* size, heightMap, splatMaps, heightEncoding, splatSource, surfaces
|
|
207
|
+
* change the mesh or the arrays
|
|
208
|
+
*/
|
|
209
|
+
export declare const LANDSCAPE_REBUILD_KEYS: readonly string[];
|
|
210
|
+
/** Every surface field except the three texture slots is a uniform. */
|
|
211
|
+
export declare const LANDSCAPE_LIVE_SURFACE_KEYS: readonly string[];
|
|
212
|
+
/** Auto-splat is entirely uniforms — all four rows plus the band list. */
|
|
213
|
+
export declare const LANDSCAPE_LIVE_AUTOSPLAT_KEYS: readonly string[];
|
|
214
|
+
export declare function normalizeLandscapeSurface(raw: unknown, index?: number): LandscapeSurface;
|
|
215
|
+
export declare function normalizeLandscape(raw: unknown): LandscapeConfig | null;
|
|
216
|
+
export declare function normalizeLandscapeQuality(raw: unknown): LandscapeQualityConfig;
|
|
217
|
+
export declare function normalizeLandscapeSettings(raw: unknown): LandscapeSettings;
|
|
218
|
+
//# sourceMappingURL=landscapeConfigs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"landscapeConfigs.d.ts","sourceRoot":"","sources":["../../src/types/landscapeConfigs.ts"],"names":[],"mappings":"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"}
|