Cloud Keyframe

struct CloudKeyframe : public simul::sky::BaseKeyframe

The keyframe structure for clouds, used by simul::clouds::CloudKeyframer.

Public Functions

virtual void Save(simul::sky::Output &os) const

Save this keyframe’s values to the stream.

virtual void Load(simul::sky::Input &is, simul::base::MemoryInterface *memoryInterface)

Load this keyframe’s values from the stream.

virtual bool HasFloat(const char *name) const

Return true if the keyframe has a float value with the given, case-insensitive, name; return false otherwise.

The properties are:

  • cloudiness

  • distributionBaseLayer

  • distributionTransition

  • upperDensity

  • localDensity

  • persistence

  • cloudBase

  • cloudHeight

  • cloudWidth

  • cloudWidthKm

  • cloudWidthMetres

  • directLight

  • indirectLight

  • ambientLight

  • lightAsymmetry

  • precipitation

  • fractalAmplitude

  • edgeSharpness

  • churn

  • extinction

  • rainToSnow

  • precipitationBaseKm

  • precipitationWindEffect

  • precipitationWaver

  • diffusivity

  • cache_built

  • lightning

  • maxDensityGm3

  • baseNoiseFactor

  • offsetx

  • offsety

  • rainCentreXKm

  • rainCentreYKm

  • rainRadiusKm

  • rainEdge

  • virgaStrength

  • simulation

  • WorleyNoise

  • WorleyScale

  • EdgeWorleyNoise

  • scalekm

  • scalekm.x

  • scalekm.y

  • scalekm.z

  • EdgeWorleyScale

virtual float GetFloat(const char *name) const

Get a float with the given, case-insensitive, name.

virtual void SetFloat(const char *name, float val)

Set a float with the given, case-insensitive, name.

virtual bool HasInt(const char *name) const

Return true if the keyframe has an integer or true/false value with the given, case-insensitive, name; return false otherwise.

  • Octaves

  • RegionalPrecipitation

  • LockRainToClouds

virtual int GetInt(const char *name) const

Get an int with the given, case-insensitive, name.

virtual void SetInt(const char *name, int val)

Set an int with the given, case-insensitive, name.

virtual unsigned GetPropertiesChecksum() const

Check for properties that, if altered in the keyframe, would require regeneration of the cloud volume:

crossplatform::Quaterniond GetAbsoluteOrientation(const crossplatform::Quaterniond &rel) const

From a relative orientation, get the absolute orientation.

Public Members

float cloudiness

The density of the cloud layer at this time.

float distribution_base_layer

Start of the transition from the cloud base to the upper cloud (0 to 1)

float distribution_transition

The transition from the cloud base to the upper cloud (0 to 1)

float upper_density

The proportion of cloud density retained in the upper layer, above the distribution_transition.

float cloud_base_km

The base altitude of this cloud layer.

float cloud_height_km

The height of the cloud layer, above its base altitude.

float cloud_width_km

The width of the cloud layer in km, or the repeat-length.

vec3 scale_km

For non-repeating clouds, the shape scale.

int octaves

The number of noise octaves used to generate the clouds; default 3.

float persistence

The fractal persistence for generating the clouds, default 0.45.

float fractal_amplitude

The strength of the fractal edge effect.

float edge_sharpness

The sharpness to be applied in rendering a the boundary.

float churn

The strength of the cloud edge churning effect - larger values for more turbulent clouds.

float precipitation

The amount of rain/snow etc.

float rain_to_snow

If zero, precipitation is interpreted as rain. If one, it is snow.

float precipitation_base_km

The lowest altitude that the precipitation can occur; the highest altitude is dictated by cloud_base_km.

float diffusivity

How much the edges of clouds should be diffused.

float max_density_gm3

Grams per cubic metre. Default is 0.5.

float base_noise_factor

What proportion of noise is applied at the cloudbase, between 0 and 1.0.

vec2 offsetKm

The calculated position offset of this keyframe due to the accumulation of wind motion.

float octaves_f

Only used for interpolation - changes will be ignored. See octaves.

float simulation

If 1.0, cloud volume is simulated. If 0.0, it is generated by fractal.

float worley_noise

How much Worley (cell) noise to apply in cloud generation.

float worley_scale

Scale of the Worley noise. Will be locked to an integer if clouds are wrapping.

float edge_worley_noise

The strength of the fractal worley edge noise.

crossplatform::Quaterniond origin

Origin on the globe for this layer.

PrecipitationRegion precipitationRegion

Where rain/snow is found.

std::map<sky::uid, CloudVolumeState> cloudVolumeStates

States for cloud volumes listed in the keyframer.

struct PrecipitationRegion

A structure defining an area where there is rain or snow. If regional is false, it is everywhere.

Public Members

bool regional

If true, rain/snow only occurs within the specified region. If false, it occurs everywhere in the cloud keyframe.

bool lockToClouds

If true, the movement of the region takes into account the wind’s speed and heading.

crossplatform::Quaterniond relative_centre

Origin on the globe for this Precipitation Region relative to keyframe origin.

float radiusKm

The radius of the region.

float virgaStrength

The visual strength of the virga effect when rendered.

float edge

The edge between zero and one. Small numbers give a sharp edge to the region.

float base_radial_km

The base altitude of this Precipitation Region from the centre of the planet.