fx_streak_mat
Additive glow material for the incoming fire that hits the energy shield. `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_streak_mat
Additive glow material for the incoming fire that hits the energy shield. 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 "streak": up to 16 instances of a 6-sided tapered prism along +x with a pointed
tail at x = 0 and a blunt head at x = 1, whose uv.x runs from tail to head. Each shot starts far out
over the horizon, flies at 75 to 120 m/s toward a point on the dome, and is drawn as one streak 8 to
15 m long and 0.34 to 0.56 wide stretched from its tail to its head; lane 0 carries (0, 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 0,
with a the uv.x along the streak, it returns (mix(color1, color2, a^5) * (0.12 + 2.4 * a^1.6) + color2 * a^5 * 4.5) times a soft edge term: color1 along the tail and color2 at the head.
Render state: blend: additive, cull: none, depth_write: false.
Properties
form: 0: selects the tracer streak.gain: 1.0: multiplier on the output.color1: { r: 1.0, g: 0.32, b: 0.06, a: 1.0 }: tail colour.color2: { r: 1.0, g: 0.85, b: 0.6, a: 1.0 }: head colour.
Scoped to this part · feeds back into the world's score.