remotion-dev/remotion · critical · Error
Starburst shader compile failed: ${log ?? '(no log)'}
Error message
Starburst shader compile failed: ${log ?? '(no log)'} What it means
The starburst effect's GLSL shader failed to compile. After `gl.createShader` succeeds and the source is uploaded, the driver reports `COMPILE_STATUS === false`, and the info log is appended. Because the vertex/fragment sources (`STARBURST_VS`/`STARBURST_FS`) are static string constants shipped with the library, a compile failure almost always points to a driver/GPU compatibility bug rather than user input.
Source
Thrown at packages/effects/src/starburst.ts:246
palettePixelData: Uint8Array;
};
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(`Starburst 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
- Read the `info log` embedded in the message to identify the specific GLSL error reported by the driver.
- Update GPU drivers and/or the browser to the latest version.
- Try a different machine or browser to isolate a driver-specific bug.
- If you are editing the shader source in the library, validate the GLSL against the GLSL ES 3.00 spec (e.g. `precision` qualifiers, `texture()` vs `texture2D`).
- Report the driver/browser combination and info log to the Remotion maintainers if the shader is unmodified.
Defensive patterns
Strategy: try-catch
Try / catch
try {
starburst({...params});
} catch (e) {
const msg = (e as Error).message;
if (/shader compile failed/.test(msg)) {
console.error('Driver GLSL bug:', msg);
// fall back to a non-webgl2 effect or skip starburst
renderFallbackFrame();
} else throw e;
} Prevention
- Keep GPU drivers and browsers up to date to maximize GLSL ES 3.00 compatibility.
- If you edit the bundled shaders, test compilation on multiple GPU/driver combos.
- Provide a non-webgl2 fallback composition for environments where the shader fails.
When it happens
Trigger: A GPU driver that rejects valid GLSL ES 3.00 (`#version 300 es`) syntax; a browser/OS combo with a buggy WebGL2 implementation; a regression in the bundled shader string introduced by a library edit. The shader is deleted before throwing to avoid leaks.
Common situations: Users on outdated mobile GPU drivers; older integrated GPUs with incomplete WebGL2/GLSL ES 3.00 support; software-rendered backends (SwiftShader/LLVMpipe) with known GLSL gaps; a library regression after editing `STARBURST_FS` or `STARBURST_VS`.
Related errors
- Shader compile failed: ${log ?? '(no log)'}
- Burlap shader compile failed: ${log ?? '(no log)'}
- Starburst program link failed: ${log ?? '(no log)'}
- Thermal vision shader compile failed: ${log ?? '(no log)'}
- Program link failed: ${log ?? '(no log)'}
AI-assisted analysis of remotion-dev/remotion@78fe4bb3fd (2026-08-12).
Data as JSON: /api/errors/60996f5fba6542a8.
Report an issue: GitHub.