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

  1. Update GPU drivers to the latest version
  2. Check the program info log in the error message for the specific linker diagnostic
  3. Switch to a different GPU or rendering environment with known-good WebGL2 support
  4. 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

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


AI-assisted analysis of remotion-dev/remotion@78fe4bb3fd (2026-08-12). Data as JSON: /api/errors/4c50340edd8051c9. Report an issue: GitHub.