{"record":{"id":"16d86bba8eb7fb75","repo":"remotion-dev/remotion","slug":"pixel-dissolve-shader-compile-failed-log-n","errorCode":null,"errorMessage":"Pixel Dissolve shader compile failed: ${log ?? '(no log)'}","messagePattern":"Pixel Dissolve shader compile failed: (.+?)","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/effects/src/pixel-dissolve.ts","lineNumber":209,"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`Pixel Dissolve 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":191,"sourceCodeEnd":227,"githubUrl":"https://github.com/remotion-dev/remotion/blob/78fe4bb3fdb5a2cd68724393d63cb223db333fa7/packages/effects/src/pixel-dissolve.ts#L191-L227","documentation":"After pixelDissolve()'s GLSL shader is submitted and compiled, the driver reports COMPILE_STATUS=false. Because the shader is fixed in the library, a genuine compile failure means the driver rejects the GLSL (unsupported feature/precision) or the context is failing operations due to loss. The driver info log is interpolated.","triggerScenarios":"compileShader() calls gl.getShaderParameter(shader, COMPILE_STATUS) which returns false; gl.getShaderInfoLog yields the driver error. Occurs during pixelDissolve effect setup on every frame that instantiates it.","commonSituations":"GPU/driver lacking full GLSL ES 3.00 support; corrupted/lost context; old mobile GPU drivers; virtualized environments without real WebGL2.","solutions":["Render on modern Chromium with full WebGL2 support (or SwiftShader in CI).","Update GPU drivers.","Handle context loss and retry setup on restore.","Report the interpolated info log to the Remotion team if it reproduces on supported hardware."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"// Probe shader compilation capability on this GPU once at startup.\nfunction canCompilePixelDissolveShader(gl: WebGL2RenderingContext): boolean {\n  const s = gl.createShader(gl.FRAGMENT_SHADER);\n  if (!s) return false;\n  gl.shaderSource(s, PIXEL_DISSOLVE_FS);\n  gl.compileShader(s);\n  const ok = gl.getShaderParameter(s, gl.COMPILE_STATUS);\n  gl.deleteShader(s);\n  return Boolean(ok);\n}","typeGuard":null,"tryCatchPattern":"try {\n  initPixelDissolve(canvas);\n} catch (err) {\n  if (String(err.message).startsWith('Pixel Dissolve shader compile failed')) {\n    logShaderIssue(err.message);\n    useNonGpuFallback();\n  } else throw err;\n}","preventionTips":["Render on current Chromium with full WebGL2/GLSL ES 3.00 support.","Use SwiftShader or real GPU passthrough in CI rather than a stub GL.","Update GPU drivers on render machines.","Capture and report the driver info log when this reproduces on supposedly-supported hardware."],"tags":["webgl","gpu","shader","compile","pixel-dissolve","driver"],"backgroundTag":null,"analyzedSha":"78fe4bb3fdb5a2cd68724393d63cb223db333fa7","analyzedAt":"2026-08-12T17:18:50.444Z","schemaVersion":2},"datasetVersion":"2026-08-12T18:17:37.767Z"}