{"record":{"id":"7f3309cd50bdc60c","repo":"remotion-dev/remotion","slug":"lut-shader-compile-failed-log-no-log","errorCode":null,"errorMessage":"LUT shader compile failed: ${log ?? '(no log)'}","messagePattern":"LUT shader compile failed: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"packages/effects/src/lut/lut-runtime.ts","lineNumber":39,"sourceCode":"\tcachedContent: string | null;\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 LUT 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(`LUT 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, LUT_VERTEX_SHADER);\n\tconst fragmentShader = compileShader(\n\t\tgl,\n\t\tgl.FRAGMENT_SHADER,\n\t\tLUT_FRAGMENT_SHADER,\n\t);\n\tconst program = gl.createProgram();\n\tif (!program) {\n\t\tthrow new Error('Failed to create LUT shader program');\n\t}\n\n\tgl.attachShader(program, vertexShader);","sourceCodeStart":21,"sourceCodeEnd":57,"githubUrl":"https://github.com/remotion-dev/remotion/blob/46a3a6bf13ca367376ff18bbb06dae2e87e0d068/packages/effects/src/lut/lut-runtime.ts#L21-L57","documentation":"The GLSL shader source shipped with the LUT effect failed to compile. The thrown message includes the driver's shader info log (or '(no log)' if none was produced). Since the bundled LUT shaders are static, this almost always indicates a WebGL/driver problem rather than user code.","triggerScenarios":"setupLut -> createProgram -> compileShader runs and gl.getShaderParameter(shader, COMPILE_STATUS) is false. Happens on browsers/drivers with broken or limited GLSL ES 3.0 support, or when the GLSL ES 3.00 shader (#version 300 es) is rejected by old software renderers.","commonSituations":"Outdated GPU drivers or blocked hardware acceleration forcing ANGLE/SwiftShader quirks; old mobile WebViews with incomplete WebGL2 GLSL support; virtual machines without proper GPU passthrough.","solutions":["Read the log portion of the error message — it names the exact GLSL error and line.","Update GPU drivers / enable hardware acceleration (chrome://settings/system) and retry.","Try another browser (Chrome/Firefox/Safari latest) to isolate a driver-specific GLSL bug.","If the log indicates resource limits, reduce context count or upgrade the environment; report a Remotion bug with the full log if the bundled shader itself is rejected."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"const gl = canvas.getContext('webgl2');\nif (!gl) throw new Error('WebGL2 unavailable');\n// no reliable pre-check for GLSL compilation exists; surface the info log when it fails","typeGuard":null,"tryCatchPattern":"try {\n  applyLutEffect(canvas);\n} catch (e) {\n  if (e instanceof Error && e.message.startsWith('LUT shader compile failed:')) {\n    console.error('GPU/driver rejected the LUT shader:', e.message);\n    // fall back to rendering without the LUT or switch browser/driver\n  } else throw e;\n}","preventionTips":["Keep GPU drivers current and hardware acceleration on","Test rendering in the latest Chrome/Firefox/Safari before deploying","Capture and log the full shader info log for bug reports","Avoid exotic software-rendering environments (minimal VMs without GPU) for video rendering"],"tags":["webgl","glsl","shader-compile","driver"],"backgroundTag":"module-init-failed","analyzedSha":"46a3a6bf13ca367376ff18bbb06dae2e87e0d068","analyzedAt":"2026-09-18T00:12:20.256Z","contentChangedAt":"2026-09-18T00:12:20.256Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}