31 lines
836 B
TypeScript
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);
|
|
}
|
|
}
|