perspective-dev/perspective · error · Error
Vertex shader compile error
Error message
Vertex shader compile error [${name}]: ${info} What it means
During program creation in ShaderRegistry.getOrCreate, the vertex shader failed to compile: gl.COMPILE_STATUS was false and the driver's getShaderInfoLog is embedded in the message. This indicates a GLSL syntax error, unsupported version directive, or driver-specific incompatibility in the source registered under the given program name.
Solutions
- Read the attached GLSL info log for the exact line/column error
- Check shader version directives (#version 300 es) match the available context (WebGL1 vs WebGL2)
- Validate GLSL offline (glslangValidator) and fix syntax/type errors in the vertex source
Defensive patterns
Strategy: try-catch
When it happens
Trigger: Thrown at packages/viewer-charts/src/ts/webgl/shader-registry.ts:56 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of perspective-dev/perspective@11c8238c0c (2026-09-09).
Data as JSON: /api/errors/c7efbcc3584aae01.
Report an issue: GitHub.
Appendix: source
Thrown at packages/viewer-charts/src/ts/webgl/shader-registry.ts:56
this.getOrCreate(spec.name, spec.vert, spec.frag);
}
}
getOrCreate(name: string, vertSrc: string, fragSrc: string): WebGLProgram {
let program = this._programs.get(name);
if (program) {
return program;
}
const gl = this._gl;
const vert = gl.createShader(gl.VERTEX_SHADER)!;
gl.shaderSource(vert, vertSrc);
gl.compileShader(vert);
if (!gl.getShaderParameter(vert, gl.COMPILE_STATUS)) {
const info = gl.getShaderInfoLog(vert);
gl.deleteShader(vert);
throw new Error(`Vertex shader compile error [${name}]: ${info}`);
}
const frag = gl.createShader(gl.FRAGMENT_SHADER)!;
gl.shaderSource(frag, fragSrc);
gl.compileShader(frag);
if (!gl.getShaderParameter(frag, gl.COMPILE_STATUS)) {
const info = gl.getShaderInfoLog(frag);
gl.deleteShader(vert);
gl.deleteShader(frag);
throw new Error(`Fragment shader compile error [${name}]: ${info}`);
}
program = gl.createProgram()!;
gl.attachShader(program, vert);
gl.attachShader(program, frag);
gl.linkProgram(program);
if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {View on GitHub (pinned to 11c8238c0c)