heathaze
A refraction card. It reads the lit opaque scene already composed behind the fragment through `zero::scene_color` and puts it back displaced, so what stands behind the card genuinely bends — the pylon line liquefying in the burning transformer's heat, and the pressure front cross…
heathaze
A refraction card. It reads the lit opaque scene already composed behind the
fragment through zero::scene_color and puts it back displaced, so what stands
behind the card genuinely bends — the pylon line liquefying in the burning
transformer's heat, and the pressure front crossing the yard at the detonation.
The card is a flat XY quad with uv running 0..1 over it, and it carries two
offset fields because both are the same read with a different displacement:
- plume — rising turbulence, strongest at the base of the card, thinning
toward the top and gone at the sides.
plume_strengthis its amplitude in pixels,turb_scalehow fine the cells are,risehow fast they climb. - ring — a front travelling outward from the centre of the card.
ring_ris where the front stands, in units of half the card's width, so 0 is the centre and 1 the edge;ring_wis its thickness andring_strengthits amplitude in pixels.tintis what the front adds of its own light on top of what it bends.
A field with zero strength contributes no coverage, so one material reads as a plume, another as a ring, and neither needs the shader swapped on it.
Useful offsets are small: 2 to 15 pixels for a plume, 10 to 40 for a blast
front. Draw it with a blend, cull: none, depth_write: false material.
Scoped to this part · feeds back into the world's score.