{"record":{"id":"60996f5fba6542a8","repo":"remotion-dev/remotion","slug":"starburst-shader-compile-failed-log-no-log","errorCode":null,"errorMessage":"Starburst shader compile failed: ${log ?? '(no log)'}","messagePattern":"Starburst shader compile failed: (.+?)","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"critical","filePath":"packages/effects/src/starburst.ts","lineNumber":246,"sourceCode":"\tpalettePixelData: Uint8Array;\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(`Starburst 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":228,"sourceCodeEnd":264,"githubUrl":"https://github.com/remotion-dev/remotion/blob/78fe4bb3fdb5a2cd68724393d63cb223db333fa7/packages/effects/src/starburst.ts#L228-L264","documentation":"The starburst effect's GLSL shader failed to compile. After `gl.createShader` succeeds and the source is uploaded, the driver reports `COMPILE_STATUS === false`, and the info log is appended. Because the vertex/fragment sources (`STARBURST_VS`/`STARBURST_FS`) are static string constants shipped with the library, a compile failure almost always points to a driver/GPU compatibility bug rather than user input.","triggerScenarios":"A GPU driver that rejects valid GLSL ES 3.00 (`#version 300 es`) syntax; a browser/OS combo with a buggy WebGL2 implementation; a regression in the bundled shader string introduced by a library edit. The shader is deleted before throwing to avoid leaks.","commonSituations":"Users on outdated mobile GPU drivers; older integrated GPUs with incomplete WebGL2/GLSL ES 3.00 support; software-rendered backends (SwiftShader/LLVMpipe) with known GLSL gaps; a library regression after editing `STARBURST_FS` or `STARBURST_VS`.","solutions":["Read the `info log` embedded in the message to identify the specific GLSL error reported by the driver.","Update GPU drivers and/or the browser to the latest version.","Try a different machine or browser to isolate a driver-specific bug.","If you are editing the shader source in the library, validate the GLSL against the GLSL ES 3.00 spec (e.g. `precision` qualifiers, `texture()` vs `texture2D`).","Report the driver/browser combination and info log to the Remotion maintainers if the shader is unmodified."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"try {\n  starburst({...params});\n} catch (e) {\n  const msg = (e as Error).message;\n  if (/shader compile failed/.test(msg)) {\n    console.error('Driver GLSL bug:', msg);\n    // fall back to a non-webgl2 effect or skip starburst\n    renderFallbackFrame();\n  } else throw e;\n}","preventionTips":["Keep GPU drivers and browsers up to date to maximize GLSL ES 3.00 compatibility.","If you edit the bundled shaders, test compilation on multiple GPU/driver combos.","Provide a non-webgl2 fallback composition for environments where the shader fails."],"tags":["starburst","webgl2","shader","glsl","compile","driver"],"backgroundTag":null,"analyzedSha":"78fe4bb3fdb5a2cd68724393d63cb223db333fa7","analyzedAt":"2026-08-12T17:18:50.444Z","schemaVersion":2},"datasetVersion":"2026-08-12T23:17:12.415Z"}