UNPKG

@omnimedia/omnitool

Version:

open source video processing tools

53 lines 1.84 kB
//@ts-ignore import transitions from "gl-transitions"; import { Filter, GlProgram, RenderTexture, Sprite, Texture } from "pixi.js"; import { vertex } from "./parts/vertex.js"; import { uniforms } from "./parts/uniforms.js"; import { fragment } from "./parts/fragment.js"; export function makeTransition({ name, renderer }) { const transition = transitions.find((t) => t.name === name); const transitionSprite = new Sprite(Texture.WHITE); const output = RenderTexture.create({ width: 1, height: 1 }); const filter = new Filter({ glProgram: new GlProgram({ vertex, fragment: fragment(transition.glsl), }), resources: { from: Texture.WHITE.source, to: Texture.WHITE.source, uniforms: { ...uniforms.basics, ...uniforms.custom(transition) } } }); transitionSprite.filters = [filter]; const resize = (width, height) => { if (transitionSprite.width !== width || transitionSprite.height !== height) { transitionSprite.setSize({ width, height }); output.resize(width, height); } }; return { dispose() { transitionSprite.destroy(true); output.destroy(true); }, render({ from, to, width, height, progress }) { resize(width, height); filter.resources.from = from.source; filter.resources.to = to.source; filter.resources.uniforms.uniforms.progress = progress; renderer.render({ container: transitionSprite, target: output, clear: true, width, height }); return output; } }; } //# sourceMappingURL=transition.js.map