remotion-dev/remotion · error · Error
Failed to create vibrance vertex buffer
Error message
Failed to create vibrance vertex buffer
What it means
Thrown during vibrance setup when gl.createBuffer() returns null. The vertex buffer holds the fullscreen-quad geometry fed to the shader; without it the vibrance pass cannot run. A null return signals context loss or GL object/memory exhaustion, not a usage error.
Source
Thrown at packages/effects/src/vibrance.ts:176
premultipliedAlpha: true,
alpha: true,
preserveDrawingBuffer: true,
});
if (!gl) {
throw createWebGL2ContextError('vibrance effect');
}
gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, true);
const program = createProgram(gl);
const vao = gl.createVertexArray();
if (!vao) {
throw new Error('Failed to create vibrance vertex array');
}
const vbo = gl.createBuffer();
if (!vbo) {
throw new Error('Failed to create vibrance vertex buffer');
}
gl.bindVertexArray(vao);
gl.bindBuffer(gl.ARRAY_BUFFER, vbo);
gl.bufferData(
gl.ARRAY_BUFFER,
new Float32Array([-1, -1, 0, 0, 1, -1, 1, 0, -1, 1, 0, 1, 1, 1, 1, 1]),
gl.STATIC_DRAW,
);
const aPos = gl.getAttribLocation(program, 'aPos');
const aUv = gl.getAttribLocation(program, 'aUv');
gl.enableVertexAttribArray(aPos);
gl.vertexAttribPointer(aPos, 2, gl.FLOAT, false, 16, 0);
gl.enableVertexAttribArray(aUv);
gl.vertexAttribPointer(aUv, 2, gl.FLOAT, false, 16, 8);
gl.bindVertexArray(null);
View on GitHub (pinned to 78fe4bb3fd)
Solutions
- Reload to reset the context and release GL buffers.
- Cut the number of simultaneously-applied WebGL effects.
- Verify hardware-accelerated WebGL2 and update drivers if needed.
- Ensure effects on unmounted/offscreen sequences are cleaned up rather than lingering.
Example fix
// before
const effect = vibrance({amount: 1});
// after
const effect = (() => {
try { return vibrance({amount: 1}); } catch { return null; }
})(); Defensive patterns
Strategy: try-catch
Try / catch
let effect = null;
try {
effect = vibrance({amount: 1});
} catch (err) {
console.warn('vibrance VBO alloc failed, skipping effect', err);
} Prevention
- Dispose offscreen effects to release GL buffers.
- Handle 'webglcontextlost'/'webglcontextrestored' and rebuild effects.
- Limit concurrent WebGL effects to avoid buffer-object exhaustion.
- Render on hardware with adequate GL resources.
When it happens
Trigger: setupVibrance() calls gl.createBuffer() after the VAO is created and bound; it returns null because the context is lost or the buffer object limit is hit.
Common situations: Context loss under heavy concurrent effect load in Studio; GPU memory pressure; headless Chrome resource limits on Lambda.
Related errors
- Failed to create vibrance texture
- Failed to create vibrance vertex array
- Failed to create WebGL vertex array
- Failed to create WebGL buffer
- Failed to create WebGL shader
AI-assisted analysis of remotion-dev/remotion@78fe4bb3fd (2026-08-12).
Data as JSON: /api/errors/b429f584cffae83c.
Report an issue: GitHub.