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

  1. Read the attached GLSL info log for the exact line/column error
  2. Check shader version directives (#version 300 es) match the available context (WebGL1 vs WebGL2)
  3. 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)