Skip to content

The backdrop — bg_hue is a coordinate in your gradient

The background pre-pass (bg_hue, bg_bright, bg_vignette — the full roster is in Parameter roster) draws a tinted gradient under the scene, and it colours through the same [palette] everything else does (ADR-0086).

ParamDefaultWhat it does
bg_hue0.0Where in the preset’s gradient the backdrop’s tint is taken from — and, with a span, where the ramp starts. Cyclic — same wrap trap as color_center, below.
bg_hue_span0.0How far that coordinate travels across the frame. 0 takes a single sample; anything else paints a segment of the gradient.
  • bg_hue selects a colour from the gradient you declared, not from a fixed ramp. An ember preset draws an ember figure over an ember sky, and a custom crimson -> gold gradient tints its own backdrop. Changing [palette] therefore changes what every bg_hue value means.
  • saturation and palette_mix reach it too. Desaturating a look desaturates the sky with it, and an A/B crossfade moves the whole frame rather than the figure alone.
  • When the preset declares no [palette], bg_hue is readable straight off the ramp table below — that table is the default spectrum gradient, so with no palette declared bg_hue 0.30 is cornflower blue, 0.45 aqua, 0.85 amber. Declare a palette and those readings stop applying, exactly as they stop applying to a line scene’s hue.

The wrap is the same trap color_center has, and on the backdrop it is easier to miss because the surface is dim. bg_hue rides the repeating gradient, so -0.1 and 0.9 are the same place: a negative value nudged toward a palette’s dark end lands in its bright stops instead. On the default spectrum the cosine is genuinely periodic and the wrap is invisible; on the four stop-list palettes it is the sharpest transition in the gradient. To darken a backdrop, use bg_bright.

bg_hue is a position, not a colour name. It is a coordinate in the preset’s own gradient, so the same value does not mean the same thing in two presets: a bg_hue lifted from another preset arrives at whatever colour your gradient holds at that coordinate, which is usually the point and occasionally a surprise.

With bg_hue_span, your stops’ at positions become the sky’s vertical layout (ADR-0094). The backdrop sweeps the segment [bg_hue, bg_hue + bg_hue_span] along a screen axis, so the gradient you already authored is the gradient in the frame — near-black at one stop, a hot band at another — and moving a stop moves that band up or down the picture. There is no separate placement param, on purpose: positions already live here, and a second mechanism could disagree with them. The direction, the brightness ramp and its easing exponent live in Parameter roster, with a worked dusk example.

The wrap matters much more to a span than to a point. A single bg_hue that wrapped landed on one surprising colour; a segment that leaves [0, 1] paints the palette’s far end back into the frame, so a bg_hue = 0.8, bg_hue_span = 0.5 sky is hot at both ends with a hard seam between them. Same repeat addressing, much more visible surface.

One warning specific to shaping a sky through stops: the [palette] is shared with the scene and with the [layer], so re-spacing stops to bend the backdrop’s falloff re-colours the figure too. When it is only the sky’s response you want to shape, bg_ramp_gamma is the lever that touches nothing else.

The band takes a second coordinate in the same gradient (ADR-0095). The backdrop also paints one soft curved band of light over that ground, and it colours through the same [palette], the same palette_mix crossfade and the same saturation — one colour language, two coordinates:

ParamDefaultWhat it does
bg_band_hue0.0The band’s own coordinate in your gradient. Absolute, not an offset from the ground’s — so the arc keeps its colour whatever the ramp underneath it is doing. Cyclic, same wrap.
bg_band_hue_span0.0How far that coordinate travels along the band (not across it), so one end can brighten toward a galactic core.

The shape params that place and bow the band live in Parameter roster, with a worked Milky Way example. What belongs here is the colour consequence, and it is the one real authoring constraint the band creates:

Your palette must now serve three consumers at once — the ground ramp, the band, and the scene (plus any [layer]). They all read the same stops, and there is no second palette to reach for: palette_mix already owns the A/B pair for preset crossfade, so pinning the band to B would fight every dissolve and a dissolve would recolour the galaxy on its way past. A dusk palette spent entirely on a horizon — near-black through deep blue to hot amber, every stop earning its place in the ramp — has no room left for a pale arc, and discovering that after tuning the ground is the expensive order to discover it in. Budget the stops for both before you tune either.

Where that bites hardest is a band and a ground wanting opposite temperatures, which is exactly the Milky Way case: a cool blue-white arc over a warm horizon needs cool stops the ramp never visits, which usually means giving the ramp a shorter bg_hue_span so it leaves a stretch of the gradient free, and pointing bg_band_hue at that stretch.

The band’s wrap behaves like the ramp’s, for the same reason and with the same surface: the segment [bg_band_hue, bg_band_hue + bg_band_hue_span] is repeat-addressed, so a span leaving [0, 1] paints the palette’s far end back into the arc with a hard seam. It is easy to walk into here, because a band that wraps into the ground’s own colours stops reading as a separate object at all.


Built from a8ce055 at version 0.115.0. This site tracks main and is not versioned per release.