fx_flare_mat
Additive glow material for the flare blobs of the energy-shield effect. `ShieldFx.module` resolves it by name in `M.start` and makes it the material of one of its GPU-instanced pools: a single draw whose instance transforms and lane data the module writes from Luau every frame. `…
fx_flare_mat
Additive glow material for the flare blobs of the energy-shield effect. ShieldFx.module resolves
it by name in M.start and makes it the material of one of its GPU-instanced pools: a single draw
whose instance transforms and lane data the module writes from Luau every frame. ShieldFxDriver on
the ShieldDome entity in the fx_shield scene starts the effect and steps it each frame. This
material's pool is "flare": up to 12 instances of a unit sphere (12 x 16 segments). A flare appears
where each shot strikes the dome (lasting 0.42 s) and at the far point each incoming streak starts
from (lasting 0.22 s); its size grows over its life and lane 0 carries (age / life, 1, 0, 0).
Shader: fx_glow (fx_glow.shader). Its header describes one additive shader for every small
emissive thing in the shield effect: form picks the look, and per-instance lane 0 carries (life
0..1, brightness, seed, 0). The forms are 0 tracer streak, 1 soft flare blob, 2 spark and 3 burning
fragment. The output is the form's colour times brightness times gain, with alpha 1. For form 1 it
takes r = pow(abs(dot(n, v)), 2.2) and returns color2 * r^7 * 12 + color1 * r^2 * 1.1, scaled by
(1 - life)^2: a hot core in color2 inside a halo in color1, fading over the flare's life.
Render state: blend: additive, cull: none, depth_write: false.
Properties
form: 1: selects the soft flare blob.gain: 1.0: multiplier on the output.color1: { r: 0.35, g: 0.75, b: 1.0, a: 1.0 }: halo colour.color2: { r: 1.0, g: 0.97, b: 0.9, a: 1.0 }: core colour.
Scoped to this part · feeds back into the world's score.