{"record":{"id":"afdf0672d9b69d1c","repo":"remotion-dev/remotion","slug":"venetian-blinds-shader-compile-failed-log","errorCode":null,"errorMessage":"Venetian blinds shader compile failed: ${log ?? '(no log)'}","messagePattern":"Venetian blinds shader compile failed: (.+?)","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/effects/src/venetian-blinds.ts","lineNumber":199,"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 WebGL 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(\n\t\t\t`Venetian blinds shader compile failed: ${log ?? '(no log)'}`,\n\t\t);\n\t}\n\n\treturn shader;\n};\n\nconst linkProgram = (\n\tgl: WebGL2RenderingContext,\n\tvs: WebGLShader,\n\tfs: WebGLShader,\n): WebGLProgram => {\n\tconst program = gl.createProgram();\n\tif (!program) {\n\t\tthrow new Error('Failed to create WebGL program');\n\t}\n\n\tgl.attachShader(program, vs);","sourceCodeStart":181,"sourceCodeEnd":217,"githubUrl":"https://github.com/remotion-dev/remotion/blob/78fe4bb3fdb5a2cd68724393d63cb223db333fa7/packages/effects/src/venetian-blinds.ts#L181-L217","documentation":"Thrown by the venetian-blinds effect's compileShader when the GLSL ES 3.00 fragment or vertex shader fails to compile. The error message includes the GL info log from the driver, which explains the specific GLSL error (syntax, unsupported feature, precision). The library deletes the failed shader and throws so the caller sees exactly which compilation step failed.","triggerScenarios":"gl.compileShader succeeds without throwing but gl.getShaderParameter(shader, gl.COMPILE_STATUS) returns false. The bundled VENETIAN_BLINDS_FS or VENETIAN_BLINDS_VS GLSL is rejected by the GPU driver — typically because the driver lacks GLSL ES 3.00 (#version 300 es) support required by WebGL2, or the driver has a bug in handling specific GLSL constructs.","commonSituations":"Old GPU drivers that nominally report WebGL2 support but have incomplete GLSL ES 3.00 implementations; software renderers (SwiftShader, llvmpipe) with limited precision or extension support; GPU driver version regressions; rendering on outdated mobile GPUs.","solutions":["Update GPU drivers to the latest version from the vendor (NVIDIA, AMD, Intel, Apple)","If rendering server-side, switch to a GPU/instance type known to have full WebGL2/GLSL ES 3.00 support","Check the GL info log in the error message for the specific GLSL line/feature that failed","Report the issue to @remotion/effects maintainers with the GPU vendor, driver version, and the GL info log text"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"try {\n  const state = setupVenetianBlinds(canvas);\n} catch (err) {\n  if (err instanceof Error && err.message.startsWith('Venetian blinds shader compile failed')) {\n    // The GPU driver cannot compile the bundled GLSL ES 3.00 shaders.\n    // This is a driver/hardware compatibility issue, not a user config problem.\n    console.error('Shader compile log:', err.message);\n    throw new Error('GPU does not support required GLSL ES 3.00 features. Update drivers or use a different GPU.');\n  }\n  throw err;\n}","preventionTips":["Keep GPU drivers up to date to ensure full GLSL ES 3.00 / WebGL2 support","Test rendering environments with a WebGL2 capability check before deploying to production","Use GPU instances known to have complete WebGL2 implementations for server-side rendering","Report persistent compile failures to @remotion/effects maintainers with the GL info log"],"tags":["webgl","gpu","glsl","shader-compile","venetian-blinds","driver-compatibility"],"backgroundTag":null,"analyzedSha":"78fe4bb3fdb5a2cd68724393d63cb223db333fa7","analyzedAt":"2026-08-12T17:18:50.444Z","schemaVersion":2},"datasetVersion":"2026-08-12T18:17:37.767Z"}