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

  1. Read the `info log` embedded in the message to identify the specific GLSL error reported by the driver.
  2. Update GPU drivers and/or the browser to the latest version.
  3. Try a different machine or browser to isolate a driver-specific bug.
  4. 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`).
  5. 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

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


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