Styles
A style changes how a cloud layer looks, in steps that each change the colour or shape of the faces. It has up to three looks:
- a server look that every player sees,
- a shader look for players who loaded the cloud fog pack,
- a post look, a screen effect on top, which players on Minecraft 26.3 and newer can get.
Styles live in the cloud-styles folder, and a layer file picks one with style.
shader:
steps:
puffs:
kind: puffs
scale: 40
shading:
kind: light
amount: "1 + 0.3 * puff-up - 0.25 * smoothstep(0.25, 0.6, puff-gap)"
tones:
kind: bands
count: 4
line:
kind: ink
width: 1.5
post:
round: 8
ink: 2
Puff shading in 4 flat tones with an ink outline, plus a post look on 26.3.
Shipped styles
No shipped layer uses a style until you give it one.
| Style | Variables | Server look | Shader look | Post look (26.3+) |
|---|---|---|---|---|
soft |
warmth, edge-softness, low-y, high-y |
Brighter toward the sun, warm sun side at sunrise and sunset | Outline fades into the sky, sides lighter higher up (26.2+), darker bases, darker in storms | Soft silhouettes, rounded cube edges |
billowy |
depth-shading, detail, flatten, puff-light, valleys |
Darker toward the base | Light and shadow of round puffs anchored to the world (26.2+) | Round outline, the blocks blend into one soft mass |
toon |
contrast, low-y, high-y |
A few flat tones, sides away from the sun darker | Light bands, tinted shadows, rim light, ink outline | Ink on every edge with something behind it |
wisp |
dusk-glow |
Pink at sunrise and sunset | Thinned by drifting noise (26.2+) | None |
wisp suits see-through layers such as cirrus, the others solid layers such as cumulus. The variables, with their shipped value:
warmth(0.35): warmth of the sun side at sunrise and sunset, 0 to 1.edge-softness(10): width of the outline fade, in blocks.low-yandhigh-y(224 and 480): block Y of the darkest and lightest sides (soft), or where the side shadow is deepest and where it is gone (toon). Set them to your cloud bases and tops:style: {use: soft, low-y: 256, high-y: 512}.depth-shading(0.18): how much darker the base is than the top, 0 to 1.detail,flatten,puff-light,valleys(0.25, 0.7, 0.7, 1): puff shading strength, how far all faces are pulled to one brightness, the share of light from the puffs, and the depth of the gaps between them.contrast(0.22): darkening of sides and bottoms away from the sun and at night, 0 to 1.dusk-glow(0.5): how pink the layer turns at sunrise and sunset, 0 to 1.
Style files
Each file in cloud-styles is one style, named after the file (a-z, 0-9, _ and - only). The plugin copies the shipped styles when they are missing and never overwrites yours.
| Section | What it holds | Who sees it | Applies |
|---|---|---|---|
variables |
Named numbers and formulas, which layers and seasons can change | ||
server |
steps, colour-steps and live |
Every player, with or without the pack | Live, and on /ms reload |
shader |
steps and post |
Players with the pack loaded | After a restart |
Steps
server.steps and shader.steps hold named steps, run in file order, each with a kind and that kind's settings.
- Step names (lower-case words joined by
-) are only labels. - Settings are numbers or quoted formulas, except
kind,blend,litand the colours.
Server steps
| Kind | Settings | What it does |
|---|---|---|
light |
amount (default 1, 0 to 2) |
Multiplies the face colour. |
color |
color (quoted hex), amount (default 0, 0 to 1), blend (mix or multiply, default mix) |
mix moves the colour toward color by amount, multiply tints it by amount like coloured glass. |
- Each amount is rounded to
colour-stepssteps (1 to 64, default 16). live(0 to 1) passes a value per face, such as weather, to the shader inputlive, in 16 steps.- A look that follows
sun-heightorgolden-hourresends the whole layer to every player at each colour step during sunrise and sunset, so keepcolour-stepslow and such looks off large layers.
Shader steps
| Kind | Settings (default, range) | What it does |
|---|---|---|
light |
amount (1) |
Multiplies the colour by any value. The final colour stays between black and white. |
color |
color (quoted hex, or fog for the player's fog colour), amount (0, 0 to 1), blend (mix or multiply), lit (false) |
Like the server color step. lit: true dims it with the face's light. |
bands |
count (3, 1 to 8) |
Rounds the brightness to this many flat tones. |
opacity |
amount (1, 0 to 1) |
How much of the face to keep. Solid layers speckle, see-through layers fade. |
feather |
blocks (10, 0 to 64), pixels (20, 0 to 256), top (0, 0 to 1) |
Fades faces toward the outline over blocks, at most pixels screen pixels wide. top is how much the top edge of sides fades too (0 keeps tops crisp). |
ink |
width (1.5, 0 to 8), color (2B3550) |
An ink line along the outline, width screen pixels wide. |
puffs |
scale (48, 4 to 512), drift (0.5, 0 to 8), sharpness (8, 2 to 32) |
Round puffs scale blocks across, anchored in the world, that later steps read as puff-up and puff-gap. Higher sharpness gives separate puffs, lower merged blobs. |
debug |
none | Colours faces by kind, darker for a lower live, with a 5-pixel stripe on each side (full colour on outline sides), to check the pack in game. |
- Settings stay inside their range, except a formula
amountof acolorstep. - A
puffsstep, and any step that readsworld-x,world-y,world-z,puff-uporpuff-gap, runs on 26.2 and newer only. Older clients skip it. - Players who get the post look skip
feather, so their outline needs the postsoftenor stays hard (the console warns). They skipinktoo whenpost.inkis set. feathertreats an edge as outline only with open sky in front of it and up to three voxels behind it.ink, and formulas readingedge,edge-pxoroutline-px, use every outer edge. With both, the feather rule wins and the console warns.
Variables and formulas
- Variable names are lower-case words joined by
-, but notuseor the name of an input or function. A variable may not refer to itself through other variables. - A formula can use numbers,
+ - * /, parentheses, variables, inputs, and the functionsmin,max,abs,clamp,mix,smoothstep,step,sin,cos,pow,sqrt,floorandfract. - Write
a - bwith spaces, since a-between letters joins a name. - Dividing by 0 and
sqrtof a negative give 0, and an input without a value reads 0. - A value belongs to the side whose inputs it reads: server steps cannot read shader inputs, and shader steps cannot read server inputs. Pass weather to the shader with
live.
These functions work in shader steps only:
| Function | Gives |
|---|---|
noise(x, y, z) |
Smooth random values 0 to 1 at a point, changing about once per unit. |
height-ramp(low, high) |
0 below block Y low to 1 above high, smooth in between. Before 26.2 it reads 0.5. |
drift-noise(scale, speed) |
Noise 0 to 1 in blobs about scale blocks across, anchored in the world and drifting at speed. Before 26.2 it is a pattern across each face. |
Inputs
Server inputs:
| Input | Meaning |
|---|---|
sun-height |
1 at noon, 0 at sunrise and sunset, -1 at midnight |
daylight |
0 at night to 1 by day |
golden-hour |
1 with the sun on the horizon, 0 once it is higher or lower |
facing-sun |
How much the face looks toward the sun, -1 to 1 (the sun rises in the east, +X) |
height |
Block Y of the cloud there |
cloud-base, cloud-top, cloud-depth |
Bottom, top and thickness of the cloud there, in blocks |
inside |
0 at the cloud's base to 1 at its top |
storm |
0 to 1, how stormy the column is |
rain |
Rain at the ground, 0 to 8, in the unit of rain-precip-threshold |
humidity, temperature, wind |
Ground humidity (0 to 1), temperature (C) and wind (m/s) |
Shader inputs:
| Input | Meaning |
|---|---|
u, v |
Position across the face, 0 to 1 (v grows upward on sides) |
edge |
Blocks to the nearest outline edge, as the player sees the outline |
edge-px |
Screen pixels to the nearest outline edge of the face |
outline-px |
Like edge-px, but leaves out edges the player can see around, as edge does |
face-width, face-height |
Size of the face in blocks |
distance |
Blocks from the camera |
time |
Seconds, looping every 1200 |
light |
Brightness of the face after the game's lighting, 0 to 1 |
world-x, world-y, world-z |
Block position of the spot drawn |
puff-up |
How much the puff surface there faces up, -1 to 1. 0 until a puffs step runs |
puff-gap |
0 inside a puff, larger in the gaps between puffs. 0 until a puffs step runs |
live |
The server's live value for the face |
top, bottom and side work in both server and shader steps: 1 on a face of that kind, 0 otherwise.
- An outline edge is a face edge with nothing of the cloud beyond it, by the rules under Shader steps.
edgecounts less on faces seen almost edge-on. edge,face-widthandface-heightare estimates, so use them for gradual changes, not hard cut-offs.
Post look
Players on Minecraft 26.3 and newer get the post look while clouds.shader-pack.post-effects is on, see Shader Pack. Any style can set it under shader.post, in plain numbers. Pixel sizes are for a 1080 pixel tall window and scale with it.
| Setting | Default | Range | What it does |
|---|---|---|---|
round |
0 | 0 to 32 | Blocks along the surface over which neighbouring faces blend, so cube edges turn soft. |
overlap-blend |
0 | 0 to 1 | How far round also blends where parts of a cloud overlap (1 = one soft mass). |
soften |
0 | 0 to 32 | Screen pixels over which the outline fades into what is behind it. |
fade-curve |
1 | 0.25 to 4 | Shape of the soften fade: above 1 the edge sits further inside, below 1 further out. |
silver-lining |
0 | 0 to 1 | A light rim against the daytime sky. Needs soften. |
lining-from, lining-to |
0.15, 0.45 | 0 to 1 | Sky brightness where the rim starts and is full, so it fades out at dusk. |
puff |
0 | 0 to 64 | Rounds the outline with this radius in blocks. soften follows the rounded outline. |
puff-max |
128 | 4 to 128 | Largest puff radius in screen pixels, for clouds up close. |
crevice |
0 | 0 to 1 | A soft shadow on cloud close behind a nearer part. |
crevice-width |
16 | 1 to 128 | Width of that shadow in blocks. |
ink |
0 | 0 to 4 | Ink line width in screen pixels, along every edge with something farther behind it. |
ink-color |
the ink step's colour, else 2B3550 |
colour | Colour of that line, as quoted hex. |
- A style gets a post look when
round,soften,puff,creviceorinkis above 0. - With
puff,inkstill follows the block outline over the rounded-off corners, and the console warns. inkandcrevicefade out by 1024 blocks, or followclouds.shader-pack.fog-startandfog-endwhen those are set.- See-through layers never get a post look, and anything see-through drawn over a cloud (ground fog, rain, another layer) hides that part from it.
Examples
Storms and dusk for every player, no pack needed:
server:
colour-steps: 8
steps:
storm:
kind: color
blend: multiply
color: "6A7180"
amount: "storm"
dusk:
kind: color
color: "FF9AB8"
amount: "0.6 * golden-hour * max(0, facing-sun)"
Slate grey in storms, pink on the sun side at dusk.
Glowing cloud bottoms over a lava sea:
shader:
steps:
glow:
kind: color
color: "FF7A3A"
amount: "0.6 * bottom * (1 - height-ramp(80, 200))"
Before 26.2 every bottom glows at half strength, since
height-rampreads 0.5 there.
Eaten edges, after a puffs step:
erode:
kind: opacity
amount: "1 - (1 - step(20, edge)) * step(mix(1, 0.2, 0.5 * (1 - edge / 20)), puff-gap)"
Cuts the gaps between puffs out of the cloud within 20 blocks of its outline, more toward the edge (26.2+).
Using a style
Only the layer file picks a style, never a season, world or profile.
style:
use: billowy
depth-shading: 0.25
usenames a file incloud-styles. Without the file, the layer keeps its plain look and the console says so.- Other keys must be variables of the style, as numbers or formulas. A value that would make a server step read a shader input, or the reverse, is ignored with a console message.
A season, world or profile can change a layer's style variables under cloud-layers.<layer>.style, with numbers, operators like "*1.4", keyframes and formulas:
atmosphere:
cloud-layers:
cumulus:
style:
warmth:
START: 0.2
END: 0.6
In a season file.
Only the server look follows these changes. A variable only the shader reads keeps its file value, with a warning.
Who sees the shader look
A player sees the shader look when all three hold:
- The cloud fog pack is on. It holds shader looks for at most 16 layers whose style has shader steps or a post look.
- Your players get that version of the pack (the plugin checks Nexo's pack, or you set
clouds.shader-pack.served). - The player's client loaded the pack.
Everyone else sees the server look. A changed shader look needs a restart, and players need the new pack.
| Feature | 1.21 to 1.21.5 | 1.21.6 to 26.1.2 | 26.2+ |
|---|---|---|---|
| Server look | Yes | Yes | Yes |
u, v, top, bottom, side, live, light, edge-px |
Yes | Yes | Yes |
outline-px |
Same as edge-px |
Yes | Yes |
distance |
Rough up close | Yes | Yes |
time |
Fixed at 0 | Yes | Yes |
edge, face-width, face-height |
No (edge reads 10000, sizes 0) |
Yes | Yes |
puffs steps and steps that read world-x/y/z, puff-up or puff-gap |
Skipped | Skipped | Yes |
height-ramp |
Reads 0.5 | Reads 0.5 | Yes |
drift-noise |
Pattern across each face | Pattern across each face | Anchored in the world |
| Post look | No | No | 26.3+ |
- Players with a shader pack loaded in Iris or a similar mod see the server look. Sodium and ImmediatelyFast work with both looks.
- With MythicHUD's pack also served, clients on 1.21.6 to 1.21.8 and 26.1 see only the server look.
Checking a style
/ms atmosphere profileprintsstyle <name>; shader steps: <steps>; post: <settings>for each styled layer, then each variable with its value and source./ms atmosphere statsshowsshader looks onandpost effect onon theRenderer:line for a player who gets them./ms atmosphere infoshows on the Fog pack line how many shader looks the pack holds and whether players get them.- Console warnings start with the file and the step, for example
cloud-styles/soft.yml shader.steps.outline: 'blokcs' is not a setting of a feather step (its settings are blocks, kind, pixels, top), ignoring.