{"version":3,"file":"RGBSplitFilter.mjs","sources":["../../src/rgb-split/RGBSplitFilter.ts"],"sourcesContent":["import { deprecation, Filter, GlProgram, GpuProgram, PointData } from 'pixi.js';\nimport { vertex, wgslVertex } from '../defaults';\nimport fragment from './rgb-split.frag';\nimport source from './rgb-split.wgsl';\n\ntype OffsetType = PointData | [number, number];\n\n/** Options for the RGBSplitFilter constructor. */\nexport interface RGBSplitFilterOptions\n{\n    /**\n     * The amount of offset for the red channel.\n     * @default {x:-10,y:0}\n     */\n    red?: OffsetType;\n    /**\n     * The amount of offset for the green channel.\n     * @default {x:0,y:10}\n     */\n    green?: OffsetType;\n    /**\n     * The amount of offset for the blue channel.\n     * @default {x:0,y:0}\n     */\n    blue?: OffsetType;\n}\n\n/**\n * An RGB Split Filter.<br>\n * ![original](../screenshots/original.png)![filter](../screenshots/rgb.png)\n *\n * @class\n * @extends Filter\n */\nexport class RGBSplitFilter extends Filter\n{\n    /** Default values for options. */\n    public static readonly DEFAULT_OPTIONS: RGBSplitFilterOptions = {\n        red: { x: -10, y: 0 },\n        green: { x: 0, y: 10 },\n        blue: { x: 0, y: 0 },\n    };\n\n    public uniforms: {\n        uRed: PointData;\n        uGreen: PointData;\n        uBlue: PointData;\n    };\n\n    /**\n     * @param options - Options for the RGBSplitFilter constructor.\n     */\n    constructor(options?: RGBSplitFilterOptions);\n    /**\n     * @deprecated since 6.0.0\n     *\n     * @param {PIXI.PointData | number[]} [red=[-10,0]] - Red channel offset\n     * @param {PIXI.PointData | number[]} [green=[0, 10]] - Green channel offset\n     * @param {PIXI.PointData | number[]} [blue=[0, 0]] - Blue channel offset\n     */\n    constructor(red?: OffsetType, green?: OffsetType, blue?: OffsetType);\n    /** @ignore */\n    constructor(...args: [RGBSplitFilterOptions?] | [OffsetType?, OffsetType?, OffsetType?])\n    {\n        let options = args[0] ?? {};\n\n        if (Array.isArray(options) || ('x' in options && 'y' in options))\n        {\n            // eslint-disable-next-line max-len\n            deprecation('6.0.0', 'RGBSplitFilter constructor params are now options object. See params: { red, green, blue }');\n\n            options = { red: options };\n\n            if (args[1] !== undefined) options.green = args[1];\n            if (args[2] !== undefined) options.blue = args[2];\n        }\n\n        options = { ...RGBSplitFilter.DEFAULT_OPTIONS, ...options };\n\n        const gpuProgram = GpuProgram.from({\n            vertex: {\n                source: wgslVertex,\n                entryPoint: 'mainVertex',\n            },\n            fragment: {\n                source,\n                entryPoint: 'mainFragment',\n            },\n        });\n\n        const glProgram = GlProgram.from({\n            vertex,\n            fragment,\n            name: 'rgb-split-filter',\n        });\n\n        super({\n            gpuProgram,\n            glProgram,\n            resources: {\n                rgbSplitUniforms: {\n                    uRed: { value: { x: 0, y: 0 }, type: 'vec2<f32>' },\n                    uGreen: { value: { x: 0, y: 0 }, type: 'vec2<f32>' },\n                    uBlue: { value: { x: 0, y: 0 }, type: 'vec2<f32>' },\n                }\n            },\n        });\n\n        this.uniforms = this.resources.rgbSplitUniforms.uniforms;\n\n        Object.assign(this, options);\n    }\n\n    /**\n     * Red channel offset.\n     * @default {x:-10,y:0}\n     */\n    get red(): PointData { return this.uniforms.uRed; }\n    set red(value: OffsetType)\n    {\n        if (Array.isArray(value))\n        {\n            value = { x: value[0], y: value[1] };\n        }\n\n        this.uniforms.uRed = value;\n    }\n\n    /**\n     * Amount of x-axis offset for the red channel.\n     * @default -10\n     */\n    get redX(): number { return this.red.x; }\n    set redX(value: number) { this.red.x = value; }\n\n    /**\n     * Amount of y-axis offset for the red channel.\n     * @default 0\n     */\n    get redY(): number { return this.red.y; }\n    set redY(value: number) { this.red.y = value; }\n\n    /**\n     * Green channel offset.\n     * @default {x:0,y:10}\n     */\n    get green(): PointData { return this.uniforms.uGreen; }\n    set green(value: OffsetType)\n    {\n        if (Array.isArray(value))\n        {\n            value = { x: value[0], y: value[1] };\n        }\n\n        this.uniforms.uGreen = value;\n    }\n\n    /**\n     * Amount of x-axis offset for the green channel.\n     * @default 0\n     */\n    get greenX(): number { return this.green.x; }\n    set greenX(value: number) { this.green.x = value; }\n\n    /**\n     * Amount of y-axis offset for the green channel.\n     * @default 10\n     */\n    get greenY(): number { return this.green.y; }\n    set greenY(value: number) { this.green.y = value; }\n\n    /**\n     * Blue channel offset.\n     * @default {x:0,y:0}\n     */\n    get blue(): PointData { return this.uniforms.uBlue; }\n    set blue(value: OffsetType)\n    {\n        if (Array.isArray(value))\n        {\n            value = { x: value[0], y: value[1] };\n        }\n\n        this.uniforms.uBlue = value;\n    }\n\n    /**\n     * Amount of x-axis offset for the blue channel.\n     * @default 0\n     */\n    get blueX(): number { return this.blue.x; }\n    set blueX(value: number) { this.blue.x = value; }\n\n    /**\n     * Amount of y-axis offset for the blue channel.\n     * @default 0\n     */\n    get blueY(): number { return this.blue.y; }\n    set blueY(value: number) { this.blue.y = value; }\n}\n"],"names":[],"mappings":"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"}