remotion-dev/remotion · error · Error
Light leak shader compile failed: ${log ?? '(no log)'}
Error message
Light leak shader compile failed: ${log ?? '(no log)'} What it means
Thrown by `compileShader()` in the light-leak effect when `gl.getShaderParameter(shader, gl.COMPILE_STATUS)` is false — the bundled GLSL (`LIGHT_LEAK_VS` / `LIGHT_LEAK_FS`) failed to compile, and the driver's info log is appended. Since the shaders are static and shipped with the package, a compile failure usually indicates a driver/GPU bug or a non-conformant WebGL2/GLSL ES 3.00 implementation.
Source
Thrown at packages/effects/src/light-leak.ts:199
uResolution: WebGLUniformLocation | null;
};
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(`Light leak 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);
gl.attachShader(program, fs);
gl.linkProgram(program);View on GitHub (pinned to 78fe4bb3fd)
Solutions
- Update GPU driver, Chromium, and Remotion to latest.
- Switch the headless renderer to a GPU-backed Chrome or newer swiftshader.
- Capture the appended `log` and report it with driver/Chrome versions to the Remotion tracker.
- Temporarily remove the `lightLeak()` effect to unblock rendering.
Defensive patterns
Strategy: try-catch
Try / catch
try {
lightLeak({...})(...);
} catch (err) {
if (/Light leak shader compile failed/.test(String(err))) {
console.error('lightLeak() shader compile:', String(err));
} else {
throw err;
}
} Prevention
- Pin a known-good Chromium/GPU combination for CI and Lambda.
- Capture and report the appended info log — identical retries won't fix a driver bug.
- Keep @remotion/effects updated for shader fixes.
When it happens
Trigger: GPU driver with incomplete GLSL ES 3.00 support; swiftshader/llvmpipe rejecting an instruction; Chromium regression; virtual display without WebGL2 backing.
Common situations: CI on software rasterizers; older mobile drivers; Chromium downgrade; containers without a GPU device.
Related errors
- Levels shader compile failed: ${log ?? '(no log)'}
- Light leak program link failed: ${log ?? '(no log)'}
- Levels shader link failed: ${log ?? '(no log)'}
- Dot grid shader compile failed: ${log ?? '(no log)'}
- Dot grid program link failed: ${log ?? '(no log)'}
AI-assisted analysis of remotion-dev/remotion@78fe4bb3fd (2026-08-12).
Data as JSON: /api/errors/b5af221e97906856.
Report an issue: GitHub.