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
- Update GPU drivers to the latest version from the vendor (NVIDIA, AMD, Intel, Apple)
- If rendering server-side, switch to a GPU/instance type known to have full WebGL2/GLSL ES 3.00 support
- Check the GL info log in the error message for the specific GLSL line/feature that failed
- 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
- Keep GPU drivers up to date to ensure full GLSL ES 3.00 / WebGL2 support
- Test rendering environments with a WebGL2 capability check before deploying to production
- Use GPU instances known to have complete WebGL2 implementations for server-side rendering
- Report persistent compile failures to @remotion/effects maintainers with the GL info log
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
- Venetian blinds program link failed: ${log ?? '(no log)'}
- Vibrance shader compile failed: ${log ?? '(no log)'}
- Shader compile failed: ${log ?? '(no log)'}
- Failed to create WebGL shader
- Checkerboard shader compile failed: ${log ?? '(no log)'}
AI-assisted analysis of remotion-dev/remotion@78fe4bb3fd (2026-08-12).
Data as JSON: /api/errors/afdf0672d9b69d1c.
Report an issue: GitHub.