{"record":{"id":"64788ba9192eae46","repo":"remotion-dev/remotion","slug":"vibrance-shader-compile-failed-log-no-log","errorCode":null,"errorMessage":"Vibrance shader compile failed: ${log ?? '(no log)'}","messagePattern":"Vibrance shader compile failed: (.+?)","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/effects/src/vibrance.ts","lineNumber":112,"sourceCode":"}\n`;\n\nconst compileShader = (\n\tgl: WebGL2RenderingContext,\n\ttype: number,\n\tsource: string,\n): WebGLShader => {\n\tconst shader = gl.createShader(type);\n\tif (!shader) {\n\t\tthrow new Error('Failed to create vibrance shader');\n\t}\n\n\tgl.shaderSource(shader, source);\n\tgl.compileShader(shader);\n\tif (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {\n\t\tconst log = gl.getShaderInfoLog(shader);\n\t\tgl.deleteShader(shader);\n\t\tthrow new Error(`Vibrance shader compile failed: ${log ?? '(no log)'}`);\n\t}\n\n\treturn shader;\n};\n\nconst createProgram = (gl: WebGL2RenderingContext): WebGLProgram => {\n\tconst vertexShader = compileShader(gl, gl.VERTEX_SHADER, VERTEX_SHADER);\n\tconst fragmentShader = compileShader(gl, gl.FRAGMENT_SHADER, FRAGMENT_SHADER);\n\tconst program = gl.createProgram();\n\tif (!program) {\n\t\tthrow new Error('Failed to create vibrance shader program');\n\t}\n\n\tgl.attachShader(program, vertexShader);\n\tgl.attachShader(program, fragmentShader);\n\tgl.linkProgram(program);\n\tgl.deleteShader(vertexShader);\n\tgl.deleteShader(fragmentShader);","sourceCodeStart":94,"sourceCodeEnd":130,"githubUrl":"https://github.com/remotion-dev/remotion/blob/78fe4bb3fdb5a2cd68724393d63cb223db333fa7/packages/effects/src/vibrance.ts#L94-L130","documentation":"Thrown by the vibrance effect's compileShader when the GLSL ES 3.00 shader (VERTEX_SHADER or FRAGMENT_SHADER, the latter incorporating VIBRANCE_GLSL from color-correction-shader-utils) fails to compile. The error message includes the GL info log identifying the specific GLSL error. The library deletes the failed shader before throwing.","triggerScenarios":"gl.compileShader runs but gl.getShaderParameter(shader, gl.COMPILE_STATUS) returns false. The bundled vibrance GLSL (which includes the applyVibrance function from VIBRANCE_GLSL) is rejected by the GPU driver — typically due to incomplete GLSL ES 3.00 support or a driver bug with the specific color-correction math constructs.","commonSituations":"Old GPU drivers with incomplete WebGL2/GLSL ES 3.00 implementations; software renderers with precision limitations; driver version regressions; outdated mobile or integrated GPUs.","solutions":["Update GPU drivers to the latest vendor release","Check the GL info log in the error message for the specific failing GLSL line or feature","Switch to a GPU/rendering environment with verified full WebGL2 support","Report to @remotion/effects maintainers with GPU model, driver version, and the info log text"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"try {\n  const state = setupVibrance(canvas);\n} catch (err) {\n  if (err instanceof Error && err.message.startsWith('Vibrance shader compile failed')) {\n    console.error('Shader compile log:', err.message);\n    throw new Error('GPU cannot compile vibrance GLSL ES 3.00 shaders. Update drivers or use a different GPU.');\n  }\n  throw err;\n}","preventionTips":["Keep GPU drivers up to date for full GLSL ES 3.00 / WebGL2 support","Verify the rendering environment passes a WebGL2 capability check before production","Report persistent compile failures with the GL info log to @remotion/effects maintainers"],"tags":["webgl","gpu","glsl","shader-compile","vibrance","driver-compatibility"],"backgroundTag":null,"analyzedSha":"78fe4bb3fdb5a2cd68724393d63cb223db333fa7","analyzedAt":"2026-08-12T17:18:50.444Z","schemaVersion":2},"datasetVersion":"2026-08-12T18:17:37.767Z"}