{"version":3,"file":"MultisampleSystem.mjs","sources":["../../src/framebuffer/MultisampleSystem.ts"],"sourcesContent":["import { MSAA_QUALITY } from 'pixijs/constants';\nimport { extensions, ExtensionType } from 'pixijs/extensions';\n\nimport type { ExtensionMetadata } from 'pixijs/extensions';\nimport type { IRenderingContext } from '../IRenderer';\nimport type { Renderer } from '../Renderer';\nimport type { ISystem } from '../system/ISystem';\n\n/**\n * System that manages the multisample property on the WebGL renderer\n * @memberof PIXI\n */\nexport class MultisampleSystem implements ISystem\n{\n    /** @ignore */\n    static extension: ExtensionMetadata = {\n        type: ExtensionType.RendererSystem,\n        name: '_multisample',\n    };\n\n    /**\n     * The number of msaa samples of the canvas.\n     * @readonly\n     */\n    public multisample: MSAA_QUALITY;\n\n    private renderer: Renderer;\n\n    constructor(renderer: Renderer)\n    {\n        this.renderer = renderer;\n    }\n\n    protected contextChange(gl: IRenderingContext): void\n    {\n        let samples;\n\n        if (this.renderer.context.webGLVersion === 1)\n        {\n            const framebuffer = gl.getParameter(gl.FRAMEBUFFER_BINDING);\n\n            gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n\n            samples = gl.getParameter(gl.SAMPLES);\n\n            gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);\n        }\n        else\n        {\n            const framebuffer = gl.getParameter(gl.DRAW_FRAMEBUFFER_BINDING);\n\n            gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, null);\n\n            samples = gl.getParameter(gl.SAMPLES);\n\n            gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, framebuffer);\n        }\n\n        if (samples >= MSAA_QUALITY.HIGH)\n        {\n            this.multisample = MSAA_QUALITY.HIGH;\n        }\n        else if (samples >= MSAA_QUALITY.MEDIUM)\n        {\n            this.multisample = MSAA_QUALITY.MEDIUM;\n        }\n        else if (samples >= MSAA_QUALITY.LOW)\n        {\n            this.multisample = MSAA_QUALITY.LOW;\n        }\n        else\n        {\n            this.multisample = MSAA_QUALITY.NONE;\n        }\n    }\n\n    destroy(): void\n    {\n        // ka boom!\n    }\n}\n\nextensions.add(MultisampleSystem);\n"],"names":[],"mappings":";;;AAYO,MAAM,iBACb,CAAA;AAAA,EAeI,YAAY,QACZ,EAAA;AACI,IAAA,IAAA,CAAK,QAAW,GAAA,QAAA,CAAA;AAAA,GACpB;AAAA,EAEU,cAAc,EACxB,EAAA;AACI,IAAI,IAAA,OAAA,CAAA;AAEJ,IAAA,IAAI,IAAK,CAAA,QAAA,CAAS,OAAQ,CAAA,YAAA,KAAiB,CAC3C,EAAA;AACI,MAAA,MAAM,WAAc,GAAA,EAAA,CAAG,YAAa,CAAA,EAAA,CAAG,mBAAmB,CAAA,CAAA;AAE1D,MAAG,EAAA,CAAA,eAAA,CAAgB,EAAG,CAAA,WAAA,EAAa,IAAI,CAAA,CAAA;AAEvC,MAAU,OAAA,GAAA,EAAA,CAAG,YAAa,CAAA,EAAA,CAAG,OAAO,CAAA,CAAA;AAEpC,MAAG,EAAA,CAAA,eAAA,CAAgB,EAAG,CAAA,WAAA,EAAa,WAAW,CAAA,CAAA;AAAA,KAGlD,MAAA;AACI,MAAA,MAAM,WAAc,GAAA,EAAA,CAAG,YAAa,CAAA,EAAA,CAAG,wBAAwB,CAAA,CAAA;AAE/D,MAAG,EAAA,CAAA,eAAA,CAAgB,EAAG,CAAA,gBAAA,EAAkB,IAAI,CAAA,CAAA;AAE5C,MAAU,OAAA,GAAA,EAAA,CAAG,YAAa,CAAA,EAAA,CAAG,OAAO,CAAA,CAAA;AAEpC,MAAG,EAAA,CAAA,eAAA,CAAgB,EAAG,CAAA,gBAAA,EAAkB,WAAW,CAAA,CAAA;AAAA,KACvD;AAEA,IAAI,IAAA,OAAA,IAAW,aAAa,IAC5B,EAAA;AACI,MAAA,IAAA,CAAK,cAAc,YAAa,CAAA,IAAA,CAAA;AAAA,KACpC,MAAA,IACS,OAAW,IAAA,YAAA,CAAa,MACjC,EAAA;AACI,MAAA,IAAA,CAAK,cAAc,YAAa,CAAA,MAAA,CAAA;AAAA,KACpC,MAAA,IACS,OAAW,IAAA,YAAA,CAAa,GACjC,EAAA;AACI,MAAA,IAAA,CAAK,cAAc,YAAa,CAAA,GAAA,CAAA;AAAA,KAGpC,MAAA;AACI,MAAA,IAAA,CAAK,cAAc,YAAa,CAAA,IAAA,CAAA;AAAA,KACpC;AAAA,GACJ;AAAA,EAEA,OACA,GAAA;AAAA,GAEA;AACJ,CAAA;AApEa,kBAGF,SAA+B,GAAA;AAAA,EAClC,MAAM,aAAc,CAAA,cAAA;AAAA,EACpB,IAAM,EAAA,cAAA;AACV,CAAA,CAAA;AAgEJ,UAAA,CAAW,IAAI,iBAAiB,CAAA;;;;"}