UNPKG

@pixi/core

Version:
50 lines (47 loc) 1.26 kB
import { Runner } from '@pixi/runner'; import { Program } from './Program.mjs'; import { UniformGroup } from './UniformGroup.mjs'; class Shader { constructor(program, uniforms) { this.uniformBindCount = 0; this.program = program; if (uniforms) { if (uniforms instanceof UniformGroup) { this.uniformGroup = uniforms; } else { this.uniformGroup = new UniformGroup(uniforms); } } else { this.uniformGroup = new UniformGroup({}); } this.disposeRunner = new Runner("disposeShader"); } checkUniformExists(name, group) { if (group.uniforms[name]) { return true; } for (const i in group.uniforms) { const uniform = group.uniforms[i]; if (uniform.group) { if (this.checkUniformExists(name, uniform)) { return true; } } } return false; } destroy() { this.uniformGroup = null; this.disposeRunner.emit(this); this.disposeRunner.destroy(); } get uniforms() { return this.uniformGroup.uniforms; } static from(vertexSrc, fragmentSrc, uniforms) { const program = Program.from(vertexSrc, fragmentSrc); return new Shader(program, uniforms); } } export { Shader }; //# sourceMappingURL=Shader.mjs.map