{"version":3,"file":"PixelateFilter.mjs","sources":["../../src/pixelate/PixelateFilter.ts"],"sourcesContent":["import { Filter, GlProgram, GpuProgram, Point } from 'pixi.js';\nimport { vertex, wgslVertex } from '../defaults';\nimport fragment from './pixelate.frag';\nimport source from './pixelate.wgsl';\n\ntype Size = number | number[] | Point;\n\n/**\n * This filter applies a pixelate effect making display objects appear 'blocky'.<br>\n * ![original](../screenshots/original.png)![filter](../screenshots/pixelate.png)\n *\n * @class\n * @extends Filter\n */\nexport class PixelateFilter extends Filter\n{\n    /**\n     * @param {Point|Array<number>|number} [size=10] - Either the width/height of the size of the pixels, or square size\n     */\n    constructor(size: Size = 10)\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: 'pixelate-filter',\n        });\n\n        super({\n            gpuProgram,\n            glProgram,\n            resources: {\n                pixelateUniforms: {\n                    uSize: { value: new Float32Array(2), type: 'vec2<f32>' },\n                },\n            },\n        });\n\n        this.size = size;\n    }\n\n    /**\n     * The size of the pixels\n     * @default [10,10]\n     */\n    get size(): Size { return this.resources.pixelateUniforms.uniforms.uSize; }\n    set size(value: Size)\n    {\n        if (value instanceof Point)\n        {\n            this.sizeX = value.x;\n            this.sizeY = value.y;\n        }\n        else if (Array.isArray(value))\n        {\n            this.resources.pixelateUniforms.uniforms.uSize = value;\n        }\n        else\n        {\n            this.sizeX = this.sizeY = value;\n        }\n    }\n\n    /**\n    * The size of the pixels on the `x` axis\n    * @default 10\n    */\n    get sizeX(): number { return this.resources.pixelateUniforms.uniforms.uSize[0]; }\n    set sizeX(value: number) { this.resources.pixelateUniforms.uniforms.uSize[0] = value; }\n\n    /**\n    * The size of the pixels on the `y` axis\n    * @default 10\n    */\n    get sizeY(): number { return this.resources.pixelateUniforms.uniforms.uSize[1]; }\n    set sizeY(value: number) { this.resources.pixelateUniforms.uniforms.uSize[1] = value; }\n}\n"],"names":[],"mappings":";;;;;;AAcO,MAAM,uBAAuB,MACpC,CAAA;AAAA;AAAA;AAAA;AAAA,EAII,WAAA,CAAY,OAAa,EACzB,EAAA;AACI,IAAM,MAAA,UAAA,GAAa,WAAW,IAAK,CAAA;AAAA,MAC/B,MAAQ,EAAA;AAAA,QACJ,MAAQ,EAAA,UAAA;AAAA,QACR,UAAY,EAAA,YAAA;AAAA,OAChB;AAAA,MACA,QAAU,EAAA;AAAA,QACN,MAAA;AAAA,QACA,UAAY,EAAA,cAAA;AAAA,OAChB;AAAA,KACH,CAAA,CAAA;AAED,IAAM,MAAA,SAAA,GAAY,UAAU,IAAK,CAAA;AAAA,MAC7B,MAAA;AAAA,MACA,QAAA;AAAA,MACA,IAAM,EAAA,iBAAA;AAAA,KACT,CAAA,CAAA;AAED,IAAM,KAAA,CAAA;AAAA,MACF,UAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAW,EAAA;AAAA,QACP,gBAAkB,EAAA;AAAA,UACd,KAAA,EAAO,EAAE,KAAO,EAAA,IAAI,aAAa,CAAC,CAAA,EAAG,MAAM,WAAY,EAAA;AAAA,SAC3D;AAAA,OACJ;AAAA,KACH,CAAA,CAAA;AAED,IAAA,IAAA,CAAK,IAAO,GAAA,IAAA,CAAA;AAAA,GAChB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,IAAa,GAAA;AAAE,IAAO,OAAA,IAAA,CAAK,SAAU,CAAA,gBAAA,CAAiB,QAAS,CAAA,KAAA,CAAA;AAAA,GAAO;AAAA,EAC1E,IAAI,KAAK,KACT,EAAA;AACI,IAAA,IAAI,iBAAiB,KACrB,EAAA;AACI,MAAA,IAAA,CAAK,QAAQ,KAAM,CAAA,CAAA,CAAA;AACnB,MAAA,IAAA,CAAK,QAAQ,KAAM,CAAA,CAAA,CAAA;AAAA,KAEd,MAAA,IAAA,KAAA,CAAM,OAAQ,CAAA,KAAK,CAC5B,EAAA;AACI,MAAK,IAAA,CAAA,SAAA,CAAU,gBAAiB,CAAA,QAAA,CAAS,KAAQ,GAAA,KAAA,CAAA;AAAA,KAGrD,MAAA;AACI,MAAK,IAAA,CAAA,KAAA,GAAQ,KAAK,KAAQ,GAAA,KAAA,CAAA;AAAA,KAC9B;AAAA,GACJ;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,KAAgB,GAAA;AAAE,IAAA,OAAO,IAAK,CAAA,SAAA,CAAU,gBAAiB,CAAA,QAAA,CAAS,MAAM,CAAC,CAAA,CAAA;AAAA,GAAG;AAAA,EAChF,IAAI,MAAM,KAAe,EAAA;AAAE,IAAA,IAAA,CAAK,SAAU,CAAA,gBAAA,CAAiB,QAAS,CAAA,KAAA,CAAM,CAAC,CAAI,GAAA,KAAA,CAAA;AAAA,GAAO;AAAA;AAAA;AAAA;AAAA;AAAA,EAMtF,IAAI,KAAgB,GAAA;AAAE,IAAA,OAAO,IAAK,CAAA,SAAA,CAAU,gBAAiB,CAAA,QAAA,CAAS,MAAM,CAAC,CAAA,CAAA;AAAA,GAAG;AAAA,EAChF,IAAI,MAAM,KAAe,EAAA;AAAE,IAAA,IAAA,CAAK,SAAU,CAAA,gBAAA,CAAiB,QAAS,CAAA,KAAA,CAAM,CAAC,CAAI,GAAA,KAAA,CAAA;AAAA,GAAO;AAC1F;;;;"}