dragon_smoke
Alpha-blended rolling black smoke puff for the `dragon_breath` graph. `data0 = (life, seed, size, 0)`. Sooty and near-black, underlit orange by the fire only while young.
dragon_smoke
Alpha-blended rolling black smoke puff for the dragon_breath graph. data0 = (life, seed, size, 0). Sooty and near-black, underlit orange by the fire only while young.
Each puff is a zero_billboard card turned by its seed and slowly rotated over its life. A
domain-warped four-octave value noise drifting with time breaks up a soft disc. The puff fades in
over the first 18 percent of its life and out between 0.45 and 1, at a peak opacity of 0.62. Its
colour is a near-black (0.010, 0.009, 0.009) lifted by noise into dark grey as it ages, plus an
orange underglow (1.6, 0.4, 0.08), weighted across the card by 0.5 - 0.5 * p.y and toward its
thin edge, that decays with exp(-9 * life) squared, so only young smoke catches the fire.
The dragon_breath graph (dragon/dragon_breath.procGraph) draws its smoke output with it,
transparent: smoke born where flame particles die, rolled by curl noise and drifting on a constant
breeze, on cards that grow from 0.8 to 2.8 of their size over life. In the Procgen Effects Showcase world, the fx_breath scene plays that
graph. All of its inputs arrive per particle on data0; properties.yaml holds properties: [].
The shader includes @builtin::shaderModules.billboard.
Lanes
| Lane | Carries |
|---|---|
data0.x | Life, 0 to 1: rotation, fades, greying and the underglow's decay. |
data0.y | Seed: rotation and noise offset. |
data0.z | Particle size, written by the graph. |
data0.w | 0. |
Culling
vertexBoundsDilation (float, default 2.5): how far the vertex hook moves a
vertex past the mesh, in world units. The culling bounds grow by it, so a card turned to face the
camera stays inside them where it reaches past the mesh it was drawn from.
Scoped to this part · feeds back into the world's score.