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-y and high-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, lit and 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-steps steps (1 to 64, default 16).
  • live (0 to 1) passes a value per face, such as weather, to the shader input live, in 16 steps.
  • A look that follows sun-height or golden-hour resends the whole layer to every player at each colour step during sunrise and sunset, so keep colour-steps low 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 amount of a color step.
  • A puffs step, and any step that reads world-x, world-y, world-z, puff-up or puff-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 post soften or stays hard (the console warns). They skip ink too when post.ink is set.
  • feather treats an edge as outline only with open sky in front of it and up to three voxels behind it. ink, and formulas reading edge, edge-px or outline-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 not use or 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 functions min, max, abs, clamp, mix, smoothstep, step, sin, cos, pow, sqrt, floor and fract.
  • Write a - b with spaces, since a - between letters joins a name.
  • Dividing by 0 and sqrt of 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. edge counts less on faces seen almost edge-on.
  • edge, face-width and face-height are 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, crevice or ink is above 0.
  • With puff, ink still follows the block outline over the rounded-off corners, and the console warns.
  • ink and crevice fade out by 1024 blocks, or follow clouds.shader-pack.fog-start and fog-end when 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-ramp reads 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
  • use names a file in cloud-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:

  1. The cloud fog pack is on. It holds shader looks for at most 16 layers whose style has shader steps or a post look.
  2. Your players get that version of the pack (the plugin checks Nexo's pack, or you set clouds.shader-pack.served).
  3. 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 profile prints style <name>; shader steps: <steps>; post: <settings> for each styled layer, then each variable with its value and source.
  • /ms atmosphere stats shows shader looks on and post effect on on the Renderer: line for a player who gets them.
  • /ms atmosphere info shows 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.
Updated Nov 11, 2026