remotion-dev/remotion · error · Error
Radial progressive blur program link failed: ${log ?? '(no l
Error message
Radial progressive blur program link failed: ${log ?? '(no log)'} What it means
The radial-progressive-blur effect links the compiled vertex and fragment shaders into a single GPU program via gl.linkProgram. If linking fails (gl.LINK_STATUS is false), the effect deletes the program and throws with the driver-supplied info log. Link failures occur when shaders are individually valid but incompatible when combined, or when the driver hits an internal limit.
Source
Thrown at packages/effects/src/radial-progressive-blur/radial-progressive-blur-runtime.ts:74
};
const linkProgram = (
gl: WebGL2RenderingContext,
vs: WebGLShader,
fs: WebGLShader,
): WebGLProgram => {
const program = gl.createProgram();
if (!program) {
throw new Error('Failed to create WebGL program');
}
gl.attachShader(program, vs);
gl.attachShader(program, fs);
gl.linkProgram(program);
if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {
const log = gl.getProgramInfoLog(program);
gl.deleteProgram(program);
throw new Error(
`Radial progressive blur program link failed: ${log ?? '(no log)'}`,
);
}
return program;
};
const createProgram = (
gl: WebGL2RenderingContext,
vertexSource: string,
fragmentSource: string,
): WebGLProgram => {
const vs = compileShader(gl, gl.VERTEX_SHADER, vertexSource);
const fs = compileShader(gl, gl.FRAGMENT_SHADER, fragmentSource);
const program = linkProgram(gl, vs, fs);
gl.deleteShader(vs);
gl.deleteShader(fs);
return program;View on GitHub (pinned to 78fe4bb3fd)
Solutions
- Read the info log in the error message to identify the mismatched varying, attribute, or exceeded limit
- Update GPU drivers to eliminate known link-time false negatives
- If the info log indicates a limit (e.g. too many uniforms), reduce shader complexity
- Report the bug with driver info and the info log text
Defensive patterns
Strategy: try-catch
Try / catch
try {
const effect = radialProgressiveBlur({ radius: 10 });
} catch (err) {
if (err instanceof Error && err.message.includes('program link failed')) {
console.error('Shader program link failed:', err.message);
// fall back to a non-WebGL effect or skip
}
throw err;
} Prevention
- Test on multiple GPU vendors before deploying effects to production
- Keep drivers updated
- Report repeatable link failures with the info log to the library maintainers
When it happens
Trigger: Vertex and fragment shaders declare varying/attribute interfaces that do not match; exceeding the driver's maximum number of uniforms, varyings, or attributes during link-time validation; shader source referencing built-in functions removed in the active GLSL ES version.
Common situations: Effect source code changes that alter varyings without updating both shader stages; GPUs with stricter link-time validation than the development machine; driver bugs that report false link failures under memory pressure.
Related errors
- Failed to create WebGL shader
- Radial progressive blur shader compile failed: ${log ?? '(no
- Program link failed: ${log ?? '(no log)'}
- Metallic swirl shader compile failed: ${log ?? '(no log)'}
- Metallic swirl program link failed: ${log ?? '(no log)'}
AI-assisted analysis of remotion-dev/remotion@78fe4bb3fd (2026-08-12).
Data as JSON: /api/errors/c6ddbc74712b4fc6.
Report an issue: GitHub.