Shapes
A shape gives a flat cloud band a form, from a preset or from steps you build. It is the shape section of a layer file in plugins/MythicSeasons/cloud-layers/ (see Layers), and it only works on a band, a layer with a thickness of 0 or more.
- A shaped band is a whole number of
voxel-heightrows, starting on the first row at or above its floor, and ignoresnoise-scale,noise-scale-yandnoise-seed. - In the layer file, shape numbers must be plain numbers. A quoted value or an operator falls back to the default and an out-of-range number moves to the nearest end, both with a warning.
- Numbers with Yes in the Season column can also change per season, world or profile, see Numbers a season can change.
How a shape draws
At every spot the form may fill a share of the sky:
share = cover x coverage x the larger of (weather strength, patch)
- The weather strength (0 to 1) comes from the layer's reading through
forms-atandfull-at, see Layer Types. - Patches fill their whole share whatever the weather. They keep cirrus in a calm sky and are all a
nonelayer draws.
Shape settings
Keys under shape. Lengths are in blocks, and a voxel in the ranges is the layer's voxel-size.
| Option | Default | Range | Season | What it does |
|---|---|---|---|---|
preset |
none | fibrous, hooked, rippled, veil |
No | A built-in form (not case-sensitive), see Presets. With steps too, the preset wins with a warning. |
steps |
none | No | Named steps that build your own form, see Building a form from steps. | |
cover |
0.3 |
0 to 1 | Yes | Share of the sky filled at full weather strength or in a patch, times the layer's coverage. |
angle |
0 |
-360 to 360 | Yes | Turns the form away from the wind direction, before snap. |
snap |
90 |
0 to 180 | No | Rounds the direction to a multiple of this many degrees (90: north-south or east-west). 0 keeps the exact direction, with stepped edges and more cloud entities. |
seed |
1 |
whole number | No | Picks another pattern. A quoted number warns and uses 1. |
patches.share |
0 |
0 to 1 | Yes | Share of the sky that patches take. 0 = no patches. |
patches.size |
2600 |
8 voxels to 65536 | Yes | Larger gives fewer, wider patches. |
patches.edge |
0.3 |
0 to 1 | Yes | Softness of the patch edges. 0 = hard. |
vertical |
flat |
flat, dome |
No | flat fills every row alike, dome thins toward the top. |
avoid |
none | layer names | No | Layers whose cloud the band keeps out of, see below. |
drift-scale |
1 |
0 to 4 | No | Speed of the pattern and patches compared with their wind (0 = still, the shipped high layers use 0.25). |
avoidtakes a layer name or a list (avoid: [cumulus]) of layers that follow the simulated clouds (thickness: -1). The band is cleared where such a layer has cloud at the band's height, at or above that layer's floor (min-yandground-clearance).- A layer missing from the current
clouds.layersclears nothing. A flat band, a name without a file or the layer itself is ignored with a warning. - A
nonelayer with a shape and nopatches.sharedraws nothing, without a warning.
type: none
opacity: 0.25
visible-from-inside: false
color: "EEF1F6"
voxel-height: 8
thickness: 8
min-y: 200
shape:
preset: veil
cover: 0.7
patches:
share: 1
size: 4000
avoid: [cumulus]
The patches cover the whole sky, so this veil ignores the weather.
Direction and drift
The form lies along a line: the world's forcing.wind.direction (without the slow swings of the upper wind) plus angle, rounded to a multiple of snap. 0 is east, 90 south, 180 west and 270 north, see Forcing. Streaks run along the line, rows across it, and hook tails trail upwind.
- The pattern slides along its line and the patches move with the full wind, both times
drift-scale. - The layer file picks the wind that moves a band: at
clouds.outflow.wind-ywithtop-clearance, otherwise at the ground withground-clearance, otherwise at the band's middle (min-yplus half ofthickness). - Drift is not saved. After a restart the patterns start from their original place.
Presets
| Preset | Form | Shipped layer |
|---|---|---|
fibrous |
Long streaks along the wind, a little curved and ragged | cirrus |
hooked |
Mares' tails: sparse tufts in the top two rows, with tails stepping down as they trail upwind | cirrus-hooks, five rows thick |
rippled |
Rows of cloudlets across the wind | none |
veil |
A faint wide veil thinned by ragged streaks | cirrostratus |
| Preset | Key | Default | Range | Season | What it does |
|---|---|---|---|---|---|
fibrous |
length |
1000 |
4 voxels to 65536 | Yes | How long the streaks run. |
fibrous |
spacing |
160 |
2 voxels to 65536 | Yes | How far apart they sit. |
fibrous |
bend |
0.35 |
0 to 2 | Yes | How much they curve. |
fibrous |
fray |
0.3 |
0 to 1 | No | How ragged their edges are. 0 = smooth. |
hooked |
spacing |
240 |
4 voxels to 65536 | Yes | Distance between tufts. Tufts and tails grow with it. |
hooked |
length |
600 |
0.5 to 6 times the spacing in the file |
No | Length of a tail. |
hooked |
curl |
0.8 |
-2 to 2 | No | How far a tail curls sideways. |
rippled |
spacing |
200 |
4 voxels to 65536 | Yes | Distance between the rows. |
rippled |
size |
140 |
2 voxels to 65536 | Yes | Size of the cloudlets. |
rippled |
wobble |
0.5 |
0 to 4 | Yes | How wavy the rows are. |
veil |
size |
1400 |
4 voxels to 65536 | Yes | Size of the broad sheets. |
veil |
length |
1200 |
4 voxels to 65536 | Yes | Length of the streaks that thin them. |
veil |
spacing |
200 |
2 voxels to 65536 | Yes | Distance between those streaks. |
veil |
streaks |
0.4 |
0 to 1 | No | How strongly the streaks cut in (0 = smooth sheets, 1 = mostly streaks). |
A key of another preset, or a preset key without a preset, is ignored with a warning.
Building a form from steps
Without a preset, steps builds the form from named steps, run in file order. Each has a kind:
| Kind | Draws |
|---|---|
noise |
Soft blobs |
cells |
Separate cloudlets |
waves |
Parallel rows across the wind |
warp |
Nothing itself: it bends every step after it |
- The first
noise,cellsorwavesstep draws the form, and later ones join it by theircombine. - A step named with a number or
START,EARLY,MIDDLE,LATEorENDis ignored with a warning. - A step's pattern comes from
seedand its name, so renaming a step changes its pattern. - With a warning, an unknown
kindskips the step, an unknownstyle,axisorcombineuses the default, and a key the kind does not have is ignored.
| Key | Kinds | Default | Range | Season | What it does |
|---|---|---|---|---|---|
style |
noise |
smooth |
smooth, billow, ridged |
No | Soft blobs, puffs or thin crests. |
style |
cells |
grains |
grains, blobs, comets |
No | Round cloudlets, packed cloudlets, or tufts with tails in the band's rows like hooked. |
size |
noise, cells |
256 |
2 voxels to 65536 | Yes | Size along the wind. |
across |
noise, cells |
the size |
2 voxels to 65536 | Yes, when the file sets it | Size across the wind. Left out, it follows size, also a season's size. |
octaves |
noise |
2 |
1 to 5 | No | Layers of finer detail, rounded. 1 adds none. |
jitter |
cells |
0.9 |
0 to 1 | No | 0 keeps the cloudlets on a grid, 1 scatters them. |
vary |
cells |
0 |
0 to 1 | No | 0 makes all cloudlets alike, 1 makes some fainter. |
tail |
cells, comets only |
3 |
0.5 to 6 | No | Length of a tail, in cloudlet sizes. |
bend |
cells, comets only |
0.6 |
-2 to 2 | No | How far a tail curls sideways. |
wavelength |
waves |
160 |
4 voxels to 65536 | Yes | Distance between the rows. |
angle |
waves |
0 |
-360 to 360 | Yes | Turns the rows. 0 runs them across the wind. |
wobble |
waves |
0.5 |
0 to 4 | Yes | How wavy the rows are. |
wobble-size |
waves |
800 |
2 voxels to 65536 | Yes | Size of the pattern that makes them wavy. |
size |
warp |
512 |
2 voxels to 65536 | Yes | How wide one bend is. |
amount |
warp |
64 |
0 to 4096 | Yes | How far a bend pushes, in blocks. |
axis |
warp |
both |
both, along, across |
No | Whether a bend pushes along the wind, across it or both. |
combine |
all but warp |
multiply |
set, multiply, max, add |
No | How the step joins the form so far. The first pattern step ignores it. |
weight |
all but warp |
1 |
0 to 4 | No | Strength of the step. Only add uses it. |
combine |
Result |
|---|---|
set |
Replaces the form so far |
multiply |
Cloud only where both are strong |
max |
Cloud where either is strong |
add |
Blends the step in by its weight: roughens or softens the form without moving it |
type: surface-humidity
forms-at: 0.85
full-at: 1.0
opacity: 0.35
color: "DDE3E8"
voxel-size: 16
voxel-height: 8
max-distance: 256
thickness: 24
ground-clearance: 0
ground-clearance-cap: 2032
ground-grid: 32
shape:
steps:
twist:
kind: warp
size: 400
amount: 80
lanes:
kind: noise
style: ridged
size: 700
across: 160
clumps:
kind: cells
style: blobs
size: 220
combine: multiply
cover: 0.5
vertical: dome
seed: 12
Ground mist in long bent lanes, cut into banks.
Numbers a season can change
Under cloud-layers.<layer>.shape a season, world or profile can change these numbers:
| Group | Numbers |
|---|---|
| Every shape | cover, angle, patches.share, patches.size, patches.edge |
fibrous |
length, spacing, bend |
hooked |
spacing |
rippled |
spacing, size, wobble |
veil |
size, length, spacing |
| Steps | steps.<step>.size, .across (only when the file sets it), .wavelength, .angle, .wobble, .wobble-size and .amount, where the step has them |
Everything else is file only: preset, steps and every other key of a step, fray, the length and curl of hooked, streaks, seed, snap, vertical, avoid and drift-scale.
atmosphere:
cloud-layers:
cirrus:
coverage: "*0.75"
shape:
cover: 0.2
spacing: "*1.5"
patches:
share:
START: 0.1
END: 0.4
In a season file. Where outflow is full, the cirrus streaks fill 0.15 of the sky (
cover0.2 timescoverage0.75).
- Values take every form of Value forms, formulas included. The result is kept inside the range without a message.
- Right after each load, a file-only key, a number the shape does not have, or a number for a layer without a shape is ignored with a warning naming the block (see Profiles).
- During a season blend the numbers blend evenly, but the direction,
angleincluded, switches at the halfway point.
Checking a shape
/ms atmosphere profile [world] prints a line like this under each shaped layer:
shape <name>: frame <a> deg (season wind direction plus angle <b>, snapped to <c>), up to <p>% of the sky where present
<name> is the preset, or recipe for steps. <a> is the direction of the form's line, <b> is angle, <c> is snap and <p> is cover times coverage. The shape numbers set by a season, world or profile follow, with their source. The Outflow: line at the end shows how much of the sky has storm outflow.
Console messages
Messages from a layer file start with cloud-layers/<file>.yml shape.
| Message | Meaning |
|---|---|
shapes only draw on band layers (layers with a thickness); this layer keeps its plain look |
The layer has thickness: -1. |
type noise gives a shaped layer half strength everywhere; use type none with shape.patches ... |
A shape on a layer of type noise. |
preset '<name>' is not one of fibrous, hooked, rippled, veil; the layer keeps its plain look |
Unknown preset. |
has no preset and no noise, cells or waves step, so it draws nothing; the layer keeps its plain look |
Nothing to draw. |
unknown shape setting '<key>', ignoring, or '<key>' is not a setting of the <preset> preset ... |
A typo, or a setting of another preset. |
<key> '<value>' is not a number; using <n> |
A quoted value or an operator in the layer file. |
<key> <value> is outside <min>..<max>; using <n>, or is smaller than <n> voxels of this layer; using <m> |
A number out of range. |
cover <x> is more than this form can fill (about <n>% of the sky); it draws that much and no more |
cover above what the form can fill. |
features <n> blocks across are smaller than two voxels ..., rows <n> blocks apart are closer than three voxels ..., at cover <x> the <what> rows are about <n> blocks wide, thinner than a voxel ... |
Sizes too fine for the voxels at the layer's farthest distance, so they break into coarse dashes there. Make them larger, or lower voxel-size or max-distance. |
avoid lists '<name>', but there is no cloud-layers/<name>.yml, or avoid lists '<name>', a flat band; ... |
A layer that avoid cannot use. |