OptionalbpmOrData: number | PhiraExtraOptional initial BPM, or an existing PhiraExtra to wrap.
StaticfromAdd a shader effect and return a fluent EffectBuilder for configuring
its uniform variables inline.
Built-in name ('chromatic') or custom path ('/myshader.glsl').
Effect start beat.
Effect end beat.
Initial variable overrides (static or animated).
Additional options (global, targetRange).
Add a custom shader effect whose default uniform values are auto-parsed from the provided GLSL source code.
Uniforms annotated with // %default% comments in the shader become the
initial variable values. You can then override or animate specific uniforms
via the returned EffectBuilder.
Custom shader path (e.g. '/camera_ssaa.glsl'). A leading
/ is added automatically if missing.
Full GLSL shader source text.
Effect start beat.
Effect end beat.
Additional options.
import { readFileSync } from 'fs';
const glsl = readFileSync('shaders/camera.glsl', 'utf8');
extra.addShader('/camera.glsl', glsl, 0, 32, {
targetRange: { minZIndex: 100, maxZIndex: 101 },
})
.animate('posZ', 5, 0.5, { easing: 'cubicOut' })
.animate('rotX', 0, Math.PI * 6, { easing: 'cubicOut' });
Remove a shader effect by index. Returns this for chaining.
Add a video background.
Remove a video by index. Returns this for chaining.
Offset all effects and videos by beatOffset beats.
Sort effects by start beat.
Validate and return any issues found.
Serialize to a JSON string.
Support JSON.stringify(extra) directly.
Fluent builder for
PhiraExtra.Wraps a
PhiraExtraobject and provides ergonomic methods for creating shader effects (with fluent per-uniform configuration viaEffectBuilder) and videos.Shader workflow