← all demos · chapter 06

Halo — a ring that breathes

A halo is an additive ring plus two tiny motions: a scale "breath" of about ±3% on a slow sine, and an alpha shimmer from cheap noise (two sines that never line up). That's the entire recipe — the same one behind auras, selection rings, and save-point circles. Only colour and speed change.

Cover the halo with your thumb and the pebble is just a pebble. The ±3% breath is doing more work than any other number on this page — it's the difference between a drawing of a ring and a presence.

Try tweaking: HUE to "140, 230, 255" (spirit) or "255, 120, 120" (cursed) · BREATH 0.03 → 0.15 (excited pulse — notice it stops feeling holy) · PERIOD 3 → 0.8 (alarm ring) · drop the halo to cy and flatten ry to 6: a selection ring at the feet.

In Godot: an additive-blend ring sprite (CanvasItemMaterial → Add), scale on a 3 s sine — download halo.gd, which even paints the ring texture pixel-by-pixel from code. In Unity: a ring sprite with an additive material, scale + alpha from a looping tween (or one Animator curve). In Unreal: an additive material on a widget or plane; drive scale/opacity with a Timeline. On the web (DOM): a CSS radial-gradient ring with mix-blend-mode: screen and a keyframed scale. Chapter 06.