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.