remotion-dev/remotion · error · Error

Venetian blinds shader compile failed: ${log ?? '(no log)'}

Error message

Venetian blinds shader compile failed: ${log ?? '(no log)'}

What it means

Thrown by the venetian-blinds effect's compileShader when the GLSL ES 3.00 fragment or vertex shader fails to compile. The error message includes the GL info log from the driver, which explains the specific GLSL error (syntax, unsupported feature, precision). The library deletes the failed shader and throws so the caller sees exactly which compilation step failed.

Source

Thrown at packages/effects/src/venetian-blinds.ts:199

}
`;

const compileShader = (
	gl: WebGL2RenderingContext,
	type: number,
	source: string,
): WebGLShader => {
	const shader = gl.createShader(type);
	if (!shader) {
		throw new Error('Failed to create WebGL shader');
	}

	gl.shaderSource(shader, source);
	gl.compileShader(shader);
	if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {
		const log = gl.getShaderInfoLog(shader);
		gl.deleteShader(shader);
		throw new Error(
			`Venetian blinds shader compile failed: ${log ?? '(no log)'}`,
		);
	}

	return shader;
};

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);

View on GitHub (pinned to 78fe4bb3fd)

Solutions

  1. Update GPU drivers to the latest version from the vendor (NVIDIA, AMD, Intel, Apple)
  2. If rendering server-side, switch to a GPU/instance type known to have full WebGL2/GLSL ES 3.00 support
  3. Check the GL info log in the error message for the specific GLSL line/feature that failed
  4. Report the issue to @remotion/effects maintainers with the GPU vendor, driver version, and the GL 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 shader compile failed')) {
    // The GPU driver cannot compile the bundled GLSL ES 3.00 shaders.
    // This is a driver/hardware compatibility issue, not a user config problem.
    console.error('Shader compile log:', err.message);
    throw new Error('GPU does not support required GLSL ES 3.00 features. Update drivers or use a different GPU.');
  }
  throw err;
}

Prevention

When it happens

Trigger: gl.compileShader succeeds without throwing but gl.getShaderParameter(shader, gl.COMPILE_STATUS) returns false. The bundled VENETIAN_BLINDS_FS or VENETIAN_BLINDS_VS GLSL is rejected by the GPU driver — typically because the driver lacks GLSL ES 3.00 (#version 300 es) support required by WebGL2, or the driver has a bug in handling specific GLSL constructs.

Common situations: Old GPU drivers that nominally report WebGL2 support but have incomplete GLSL ES 3.00 implementations; software renderers (SwiftShader, llvmpipe) with limited precision or extension support; GPU driver version regressions; rendering on outdated mobile GPUs.

Related errors


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