remotion-dev/remotion · error · Error
Venetian blinds program link failed: ${log ?? '(no log)'}
Error message
Venetian blinds program link failed: ${log ?? '(no log)'} What it means
Thrown by the venetian-blinds effect's linkProgram when gl.linkProgram succeeds but gl.getProgramParameter(program, gl.LINK_STATUS) returns false. The error includes the GL program info log explaining the link failure. Link failures indicate the vertex and fragment shaders are individually valid but incompatible (e.g. varying/interface mismatch), or a driver bug in the linker.
Source
Thrown at packages/effects/src/venetian-blinds.ts:223
};
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(
`Venetian blinds program link failed: ${log ?? '(no log)'}`,
);
}
return program;
};
const setupVenetianBlinds = (
target: HTMLCanvasElement,
): VenetianBlindsState => {
const gl = target.getContext('webgl2', {
premultipliedAlpha: true,
alpha: true,
preserveDrawingBuffer: true,
});
if (!gl) {
throw createWebGL2ContextError('venetian blinds effect');View on GitHub (pinned to 78fe4bb3fd)
Solutions
- Update GPU drivers to the latest version
- Check the program info log in the error message for the specific linker diagnostic
- Switch to a different GPU or rendering environment with known-good WebGL2 support
- Report to @remotion/effects maintainers with the GPU model, driver version, and the info log text
Defensive patterns
Strategy: try-catch
Try / catch
try {
const state = setupVenetianBlinds(canvas);
} catch (err) {
if (err instanceof Error && err.message.startsWith('Venetian blinds program link failed')) {
// Shaders compiled but the driver linker rejected the program.
console.error('Program link log:', err.message);
throw new Error('GPU linker cannot link venetian-blinds shaders. Update drivers or use a different GPU.');
}
throw err;
} Prevention
- Keep GPU drivers current to avoid linker bugs with GLSL ES 3.00
- Verify the rendering GPU has full WebGL2 support before production deployment
- Report link failures with the info log to @remotion/effects maintainers
When it happens
Trigger: Both shaders compiled, a program was created, gl.linkProgram was called, but LINK_STATUS is false. The VENETIAN_BLINDS_VS and VENETIAN_BLINDS_FS have a mismatched varying interface or the driver's linker has a bug with the specific GLSL constructs used.
Common situations: GPU driver linker bugs with GLSL ES 3.00; driver updates that introduced regressions; rendering on GPUs with incomplete WebGL2 implementations. Since the shaders are bundled and tested, a link failure almost always points to a driver/hardware issue rather than a user config problem.
Related errors
- Venetian blinds shader compile failed: ${log ?? '(no log)'}
- Vibrance shader compile failed: ${log ?? '(no log)'}
- Failed to create WebGL shader
- Checkerboard shader compile failed: ${log ?? '(no log)'}
- Failed to create WebGL program
AI-assisted analysis of remotion-dev/remotion@78fe4bb3fd (2026-08-12).
Data as JSON: /api/errors/4c50340edd8051c9.
Report an issue: GitHub.