blast_spark
Additive streak or dot for sparks and embers; velocity-aligned via `zero_billboard_streak`. The instance's +Y runs along its velocity and its Y scale is stretched by speed, so a fast spark draws as a streak and a slow ember as a dot. The fragment shapes a capsule with a bright co…
blast_spark
Additive streak or dot for sparks and embers; velocity-aligned via zero_billboard_streak. The
instance's +Y runs along its velocity and its Y scale is stretched by speed, so a fast spark draws
as a streak and a slow ember as a dot. The fragment shapes a capsule with a bright core and a soft
tail, and flickers it with 0.72 + 0.28 * sin(time * rate + seed * 91). It returns the HDR colour
times coverage with the coverage as alpha.
The wall_blast graph (blast/wall_blast.procGraph) uses it through spark_mat (additive) for the
embers and sparks thrown from the blast. The graph turns each particle onto its velocity, stretches
its Y scale from 1 to 9 times its size over speeds 0 to 32, colours it from an HDR ramp that cools
from yellow-white to dull red over life, and writes data1 as (life, a random seed, a flicker rate
of 45, 0).
The shader includes @builtin::shaderModules.billboard.
Properties
| Property | Type | Default | Meaning |
|---|---|---|---|
unused | float | 0 | The one entry properties.yaml lists (range 0 to 1). Every value the shader reads comes from the lanes below. |
vertexBoundsDilation | float | 0.1 | How far the vertex hook moves a vertex past the mesh, in world units: the culling bounds grow by it so a moved vertex stays inside them. |
Lanes
| Lane | Carries |
|---|---|
data0.rgb | HDR colour. |
data0.a | Intensity, multiplied into the colour. |
data1.x | Life 0 to 1, as the header states and the graph writes it. |
data1.y | Seed: the flicker's phase. |
data1.z | Flicker rate, multiplied by time inside the flicker sine. |
data1.w | 0. |
Scoped to this part · feeds back into the world's score.