remotion-dev/remotion · error · Error

Radial progressive blur framebuffer incomplete: 0x${status.t

Error message

Radial progressive blur framebuffer incomplete: 0x${status.toString(16)}

What it means

After attaching the intermediate RGBA texture to the framebuffer, the effect calls gl.checkFramebufferStatus. If the status is not FRAMEBUFFER_COMPLETE, the effect throws with the hexadecimal status code. Common status codes include 0x8CD6 (incomplete attachment) and 0x8CDB (unsupported).

Source

Thrown at packages/effects/src/radial-progressive-blur/radial-progressive-blur-runtime.ts:211

		0,
		gl.RGBA,
		gl.UNSIGNED_BYTE,
		null,
	);
	gl.bindTexture(gl.TEXTURE_2D, null);

	gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);
	gl.framebufferTexture2D(
		gl.FRAMEBUFFER,
		gl.COLOR_ATTACHMENT0,
		gl.TEXTURE_2D,
		textureIntermediate,
		0,
	);
	const status = gl.checkFramebufferStatus(gl.FRAMEBUFFER);
	gl.bindFramebuffer(gl.FRAMEBUFFER, null);
	if (status !== gl.FRAMEBUFFER_COMPLETE) {
		throw new Error(
			`Radial progressive blur framebuffer incomplete: 0x${status.toString(16)}`,
		);
	}

	return {
		gl,
		programHorizontal,
		programVertical,
		vao,
		vbo,
		textureSource,
		textureIntermediate,
		framebuffer,
		horizontal: getUniforms(gl, programHorizontal),
		vertical: getUniforms(gl, programVertical),
	};
};

View on GitHub (pinned to 78fe4bb3fd)

Solutions

  1. Ensure the target element has non-zero width and height before calling the effect
  2. Check the hex status code: 0x8CD6 = incomplete attachment, 0x8CDD = missing attachment, 0x8CDB = unsupported, 0x8CD7 = dimensions mismatch
  3. Update GPU drivers if the RGBA8 format should be renderable but the driver rejects it
  4. Report the status code and driver info to the Remotion team
Defensive patterns

Strategy: validation

Validate before calling

const targetWidth = canvas.width;
const targetHeight = canvas.height;
if (targetWidth < 1 || targetHeight < 1) {
  throw new Error('Target canvas must have non-zero dimensions before applying radialProgressiveBlur');
}

Try / catch

try {
  setupRadialProgressiveBlur(gl, canvas);
} catch (err) {
  if (err instanceof Error && err.message.includes('framebuffer incomplete')) {
    console.error('Framebuffer incomplete. Check canvas dimensions and texture format:', err.message);
  }
  throw err;
}

Prevention

When it happens

Trigger: The intermediate texture was allocated with zero dimensions (after the Math.max(1, ...) floor), the texture format/driver combination does not support rendering to that attachment, or the texture was deleted between creation and framebuffer check.

Common situations: Target canvas with zero width or height (collapsed element); drivers that disallow RGBA8 render targets in certain configurations; a WebGL2 context in a partially-lost state where texture allocation silently fails.

Related errors


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