{"record":{"id":"60a452d77fe647f7","repo":"remotion-dev/remotion","slug":"drop-shadow-shader-compile-failed-log-no-l","errorCode":null,"errorMessage":"Drop shadow shader compile failed: ${log ?? '(no log)'}","messagePattern":"Drop shadow shader compile failed: (.+?)","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/effects/src/drop-shadow/drop-shadow-runtime.ts","lineNumber":66,"sourceCode":"\tcachedColorRgba: ParsedColorRgba;\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(`Drop shadow shader compile failed: ${log ?? '(no log)'}`);\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);\n\tgl.attachShader(program, fs);\n\tgl.linkProgram(program);","sourceCodeStart":48,"sourceCodeEnd":84,"githubUrl":"https://github.com/remotion-dev/remotion/blob/78fe4bb3fdb5a2cd68724393d63cb223db333fa7/packages/effects/src/drop-shadow/drop-shadow-runtime.ts#L48-L84","documentation":"Thrown by the drop-shadow runtime's compileShader helper after a failed COMPILE_STATUS, with the driver's info log embedded. Because the four drop-shadow shaders are bundled constants, a compile failure points to a non-conformant WebGL2 driver that rejects valid GLSL ES 3.00, or a driver bug.","triggerScenarios":"One of DROP_SHADOW_VS, DROP_SHADOW_EXTRACT_FS, DROP_SHADOW_BLUR_FS_HORIZONTAL, DROP_SHADOW_BLUR_FS_VERTICAL, or DROP_SHADOW_COMPOSITE_FS fails to compile on the user's GPU. Typical of outdated mobile GPUs, virtualized GL, or buggy driver versions.","commonSituations":"Older Android/Windows GPUs with stale drivers; VMs with passthrough GL; remote desktop; browsers that fell back to a limited software rasterizer.","solutions":["Read the embedded info log to find the rejected GLSL line/feature.","Update GPU drivers and browser; retry on a different device or browser.","For headless/CI, switch to a SwiftShader software renderer with conformant GLSL ES 3.00.","If the log reveals a genuine shader bug, file a Remotion issue with the log and GPU/driver details."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"try {\n  state = setupDropShadow(canvas);\n} catch (err) {\n  if (err instanceof Error && /shader compile failed/i.test(err.message)) {\n    console.error('Driver rejected drop-shadow GLSL:', err.message);\n    // fall back to a CSS / SVG shadow\n  } else {\n    throw err;\n  }\n}","preventionTips":["Capture the embedded info log when reporting issues.","Test on the target GPU/driver early in development.","Use a conformant software renderer in CI/headless.","Keep GPU drivers and browser current."],"tags":["webgl2","drop-shadow","shader","glsl","gpu-driver","compile"],"backgroundTag":null,"analyzedSha":"78fe4bb3fdb5a2cd68724393d63cb223db333fa7","analyzedAt":"2026-08-12T17:18:50.444Z","schemaVersion":2},"datasetVersion":"2026-08-12T18:17:37.767Z"}