Files
netrunner-landing/matrix-engine/gl-utils.js
T
2026-07-02 23:13:24 +07:00

37 lines
1.3 KiB
JavaScript

/**
* Вспомогательные функции для работы с WebGL 2.0.
* Используются в matrix_worker.js при сборке трёх шейдерных программ
* (matrix/glitch/post-process, см. initWebGL()) — тонкая обёртка над
* стандартным boilerplate компиляции/линковки с логированием ошибок,
* без которой WebGL молча возвращает null вместо программы.
*/
export function compileShader(gl, type, source) {
const shader = gl.createShader(type);
gl.shaderSource(shader, source);
gl.compileShader(shader);
if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {
console.error("Shader Compile Error:", gl.getShaderInfoLog(shader));
gl.deleteShader(shader);
return null;
}
return shader;
}
export function createProgram(gl, vsSource, fsSource) {
const vs = compileShader(gl, gl.VERTEX_SHADER, vsSource);
const fs = compileShader(gl, gl.FRAGMENT_SHADER, fsSource);
if (!vs || !fs) return null;
const prog = gl.createProgram();
gl.attachShader(prog, vs);
gl.attachShader(prog, fs);
gl.linkProgram(prog);
if (!gl.getProgramParameter(prog, gl.LINK_STATUS)) {
console.error("Program Link Error:", gl.getProgramInfoLog(prog));
return null;
}
return prog;
}