@pixi/core
Version:
Core PixiJS
50 lines (47 loc) • 1.26 kB
JavaScript
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