mdx-m3-viewer
Version:
A browser WebGL model viewer. Mainly focused on models of the games Warcraft 3 and Starcraft 2.
48 lines (38 loc) • 1.07 kB
JavaScript
let lineNumberReg = /:(\d+):/g;
/**
* A wrapper around a WebGL shader unit.
*/
export default class ShaderUnit {
/**
* @param {WebGLRenderingContext} gl
* @param {string} src
* @param {number} type
*/
constructor(gl, src, type) {
let id = gl.createShader(type);
/** @member {boolean} */
this.ok = false;
/** @member {WebGLShader} */
this.webglResource = id;
/** @member {string} */
this.src = src;
/** @member {number} */
this.shaderType = type;
gl.shaderSource(id, src);
gl.compileShader(id);
if (gl.getShaderParameter(id, gl.COMPILE_STATUS)) {
this.ok = true;
} else {
let error = gl.getShaderInfoLog(id);
let lines = src.split('\n');
console.error('Shader unit failed to compile!');
console.error(error);
let lineNumber = lineNumberReg.exec(error);
while (lineNumber) {
let integer = parseInt(lineNumber[1]);
console.error(integer + ': ' + lines[integer - 1]);
lineNumber = lineNumberReg.exec(error);
}
}
}
}