{"record":{"id":"9c75bbcf271f10d1","repo":"remotion-dev/remotion","slug":"liquid-contours-shader-compile-failed-log","errorCode":null,"errorMessage":"Liquid contours shader compile failed: ${log ?? '(no log)'}","messagePattern":"Liquid contours shader compile failed: (.+?)","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"critical","filePath":"packages/effects/src/liquid-contours.ts","lineNumber":293,"sourceCode":"\tfloat selector = smoothstep(-edgeWidth, edgeWidth, wave);\n\tvec4 color = mix(uFirstColor, uSecondColor, selector);\n\tfragColor = vec4(color.rgb * color.a, color.a);\n}\n`;\n\nconst compileShader = (\n\tgl: WebGL2RenderingContext,\n\ttype: number,\n\tsource: string,\n): WebGLShader => {\n\tconst shader = gl.createShader(type);\n\tif (!shader) throw new Error('Failed to create WebGL shader');\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`Liquid contours shader compile failed: ${log ?? '(no log)'}`,\n\t\t);\n\t}\n\n\treturn shader;\n};\n\nconst createProgram = (gl: WebGL2RenderingContext): WebGLProgram => {\n\tconst vs = compileShader(gl, gl.VERTEX_SHADER, VERTEX_SHADER);\n\tconst fs = compileShader(gl, gl.FRAGMENT_SHADER, FRAGMENT_SHADER);\n\tconst program = gl.createProgram();\n\tif (!program) throw new Error('Failed to create WebGL program');\n\tgl.attachShader(program, vs);\n\tgl.attachShader(program, fs);\n\tgl.linkProgram(program);\n\tgl.deleteShader(vs);\n\tgl.deleteShader(fs);\n\tif (!gl.getProgramParameter(program, gl.LINK_STATUS)) {","sourceCodeStart":275,"sourceCodeEnd":311,"githubUrl":"https://github.com/remotion-dev/remotion/blob/78fe4bb3fdb5a2cd68724393d63cb223db333fa7/packages/effects/src/liquid-contours.ts#L275-L311","documentation":"A plain Error thrown by compileShader in the Liquid contours effect when gl.getShaderParameter(shader, gl.COMPILE_STATUS) is false. The shader is deleted and the info log is appended to the message. The VERTEX_SHADER and FRAGMENT_SHADER constants are static library GLSL, so a compile failure indicates a driver/GPU compatibility problem rather than any caller-controlled input.","triggerScenarios":"The device's GLSL ES 3.00 compiler rejects the bundled Liquid contours shaders (e.g. simplex-noise helpers, smoothstep, mix). Cannot be triggered via liquidContours() params because user values are passed as uniforms, not interpolated into the shader text.","commonSituations":"Old or buggy GPU drivers; software GL with incomplete ES 3.00 support; a Chromium/ANGLE build with regressions. Read the embedded info log to confirm.","solutions":["Read the info log embedded in the message to find the rejected GLSL line/feature.","Update GPU driver / browser / Chromium build used to render.","Try a different GL backend (e.g. ANGLE over Vulkan/Metal/D3D or swiftshader).","Report the device + driver + info log to Remotion maintainers (shader source is fixed)."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"try {\n  liquidContours(...);\n} catch (err) {\n  if (err instanceof Error && /shader compile failed/.test(err.message)) {\n    // log the embedded info log, switch GL backend / update driver\n  } else throw err;\n}","preventionTips":["Keep GPU drivers and the Chromium build up to date.","Capture the info log from the error message to confirm a driver (not user) issue.","Test the Liquid contours effect on the target device class before production use."],"tags":["webgl2","liquid-contours-effect","glsl","shader-compile","driver"],"backgroundTag":null,"analyzedSha":"78fe4bb3fdb5a2cd68724393d63cb223db333fa7","analyzedAt":"2026-08-12T17:18:50.444Z","schemaVersion":2},"datasetVersion":"2026-08-12T18:17:37.767Z"}