{"record":{"id":"ac88221b86a48a1b","repo":"remotion-dev/remotion","slug":"radial-progressive-blur-framebuffer-incomplete-0x","errorCode":null,"errorMessage":"Radial progressive blur framebuffer incomplete: 0x${status.toString(16)}","messagePattern":"Radial progressive blur framebuffer incomplete: 0x(.+?)","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/effects/src/radial-progressive-blur/radial-progressive-blur-runtime.ts","lineNumber":211,"sourceCode":"\t\t0,\n\t\tgl.RGBA,\n\t\tgl.UNSIGNED_BYTE,\n\t\tnull,\n\t);\n\tgl.bindTexture(gl.TEXTURE_2D, null);\n\n\tgl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);\n\tgl.framebufferTexture2D(\n\t\tgl.FRAMEBUFFER,\n\t\tgl.COLOR_ATTACHMENT0,\n\t\tgl.TEXTURE_2D,\n\t\ttextureIntermediate,\n\t\t0,\n\t);\n\tconst status = gl.checkFramebufferStatus(gl.FRAMEBUFFER);\n\tgl.bindFramebuffer(gl.FRAMEBUFFER, null);\n\tif (status !== gl.FRAMEBUFFER_COMPLETE) {\n\t\tthrow new Error(\n\t\t\t`Radial progressive blur framebuffer incomplete: 0x${status.toString(16)}`,\n\t\t);\n\t}\n\n\treturn {\n\t\tgl,\n\t\tprogramHorizontal,\n\t\tprogramVertical,\n\t\tvao,\n\t\tvbo,\n\t\ttextureSource,\n\t\ttextureIntermediate,\n\t\tframebuffer,\n\t\thorizontal: getUniforms(gl, programHorizontal),\n\t\tvertical: getUniforms(gl, programVertical),\n\t};\n};\n","sourceCodeStart":193,"sourceCodeEnd":229,"githubUrl":"https://github.com/remotion-dev/remotion/blob/78fe4bb3fdb5a2cd68724393d63cb223db333fa7/packages/effects/src/radial-progressive-blur/radial-progressive-blur-runtime.ts#L193-L229","documentation":"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).","triggerScenarios":"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.","commonSituations":"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.","solutions":["Ensure the target element has non-zero width and height before calling the effect","Check the hex status code: 0x8CD6 = incomplete attachment, 0x8CDD = missing attachment, 0x8CDB = unsupported, 0x8CD7 = dimensions mismatch","Update GPU drivers if the RGBA8 format should be renderable but the driver rejects it","Report the status code and driver info to the Remotion team"],"exampleFix":null,"handlingStrategy":"validation","validationCode":"const targetWidth = canvas.width;\nconst targetHeight = canvas.height;\nif (targetWidth < 1 || targetHeight < 1) {\n  throw new Error('Target canvas must have non-zero dimensions before applying radialProgressiveBlur');\n}","typeGuard":null,"tryCatchPattern":"try {\n  setupRadialProgressiveBlur(gl, canvas);\n} catch (err) {\n  if (err instanceof Error && err.message.includes('framebuffer incomplete')) {\n    console.error('Framebuffer incomplete. Check canvas dimensions and texture format:', err.message);\n  }\n  throw err;\n}","preventionTips":["Ensure the target canvas/element has non-zero width and height before applying the effect","Check framebuffer status codes: 0x8CD6 = incomplete attachment, 0x8CDB = unsupported","Test on the target GPU to confirm RGBA8 render target support"],"tags":["webgl","gpu","framebuffer","radial-progressive-blur"],"backgroundTag":null,"analyzedSha":"78fe4bb3fdb5a2cd68724393d63cb223db333fa7","analyzedAt":"2026-08-12T17:18:50.444Z","schemaVersion":2},"datasetVersion":"2026-08-12T23:17:12.415Z"}