odyssey-client/src/graphics/utils/RTTShader.ts

31 lines
836 B
TypeScript

import { RenderTexture, Container, Renderer, Filter } from "pixi.js";
export default class RTTShader {
readonly texture: RenderTexture;
readonly container: Container;
readonly renderer: Renderer;
constructor(renderer: Renderer, filter: Filter, scale: number = 2) {
this.renderer = renderer;
this.texture = RenderTexture.create({
width: this.renderer.width / scale,
height: this.renderer.height / scale,
});
this.container = new Container();
this.container.filterArea = this.texture.frame;
this.container.filters = [filter];
}
rescale(scale: number) {
this.texture.resize(
this.renderer.width / scale,
this.renderer.height / scale
);
this.container.filterArea = this.texture.frame;
}
render() {
this.renderer.render(this.container, this.texture);
}
}