{"version":3,"file":"ExtractBrightnessFilter.mjs","sources":["../../src/advanced-bloom/ExtractBrightnessFilter.ts"],"sourcesContent":["import { Filter, GlProgram, GpuProgram } from 'pixi.js';\nimport { vertex, wgslVertex } from '../defaults';\nimport fragment from './extract-brightness.frag';\nimport source from './extract-brightness.wgsl';\n\nexport interface ExtractBrightnessFilterOptions\n{\n    /**\n     * Defines how bright a color needs to be extracted.\n     */\n    threshold?: number;\n}\n\n/**\n * Internal filter for retrieving the brightness of the source image.\n * @class\n * @private\n */\nexport class ExtractBrightnessFilter extends Filter\n{\n    /** Default values for options. */\n    public static readonly DEFAULT_OPTIONS: ExtractBrightnessFilterOptions = {\n        threshold: 0.5\n    };\n\n    public uniforms: {\n        uThreshold: number;\n    };\n\n    constructor(options?: ExtractBrightnessFilterOptions)\n    {\n        options = { ...ExtractBrightnessFilter.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: 'extract-brightness-filter',\n        });\n\n        super({\n            gpuProgram,\n            glProgram,\n            resources: {\n                extractBrightnessUniforms: {\n                    uThreshold: { value: options.threshold, type: 'f32' },\n                }\n            },\n        });\n\n        this.uniforms = this.resources.extractBrightnessUniforms.uniforms;\n    }\n\n    /**\n     * Defines how bright a color needs to be extracted.\n     * @default 0.5\n     */\n    get threshold(): number { return this.uniforms.uThreshold; }\n    set threshold(value: number) { this.uniforms.uThreshold = value; }\n}\n"],"names":[],"mappings":";;;;;;;;;;;;AAkBO,MAAM,wBAAA,GAAN,MAAM,wBAAA,SAAgC,MAC7C,CAAA;AAAA,EAUI,YAAY,OACZ,EAAA;AACI,IAAA,OAAA,GAAU,EAAE,GAAG,wBAAwB,CAAA,eAAA,EAAiB,GAAG,OAAQ,EAAA,CAAA;AAEnE,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,2BAAA;AAAA,KACT,CAAA,CAAA;AAED,IAAM,KAAA,CAAA;AAAA,MACF,UAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAW,EAAA;AAAA,QACP,yBAA2B,EAAA;AAAA,UACvB,YAAY,EAAE,KAAA,EAAO,OAAQ,CAAA,SAAA,EAAW,MAAM,KAAM,EAAA;AAAA,SACxD;AAAA,OACJ;AAAA,KACH,CAAA,CAAA;AAjCL,IAAO,aAAA,CAAA,IAAA,EAAA,UAAA,CAAA,CAAA;AAmCH,IAAK,IAAA,CAAA,QAAA,GAAW,IAAK,CAAA,SAAA,CAAU,yBAA0B,CAAA,QAAA,CAAA;AAAA,GAC7D;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,SAAoB,GAAA;AAAE,IAAA,OAAO,KAAK,QAAS,CAAA,UAAA,CAAA;AAAA,GAAY;AAAA,EAC3D,IAAI,UAAU,KAAe,EAAA;AAAE,IAAA,IAAA,CAAK,SAAS,UAAa,GAAA,KAAA,CAAA;AAAA,GAAO;AACrE,CAAA,CAAA;AAAA;AAhDI,aAAA,CAHS,0BAGc,iBAAkD,EAAA;AAAA,EACrE,SAAW,EAAA,GAAA;AACf,CAAA,CAAA,CAAA;AALG,IAAM,uBAAN,GAAA;;;;"}