{"version":3,"file":"FilterPipe.mjs","sources":["../../src/filters/FilterPipe.ts"],"sourcesContent":["import { ExtensionType } from '../extensions/Extensions';\n\nimport type { InstructionSet } from '../rendering/renderers/shared/instructions/InstructionSet';\nimport type { InstructionPipe } from '../rendering/renderers/shared/instructions/RenderPipe';\nimport type { Renderer } from '../rendering/renderers/types';\nimport type { Container } from '../scene/container/Container';\nimport type { Effect } from '../scene/container/Effect';\nimport type { FilterInstruction } from './FilterSystem';\n\n/** @internal */\nexport class FilterPipe implements InstructionPipe<FilterInstruction>\n{\n    public static extension = {\n        type: [\n            ExtensionType.WebGLPipes,\n            ExtensionType.WebGPUPipes,\n            ExtensionType.CanvasPipes,\n        ],\n        name: 'filter',\n    } as const;\n\n    private _renderer: Renderer;\n\n    constructor(renderer: Renderer)\n    {\n        this._renderer = renderer;\n    }\n\n    public push(filterEffect: Effect, container: Container, instructionSet: InstructionSet): void\n    {\n        const renderPipes = this._renderer.renderPipes;\n\n        renderPipes.batch.break(instructionSet);\n\n        instructionSet.add({\n            renderPipeId: 'filter',\n            canBundle: false,\n            action: 'pushFilter',\n            container,\n            filterEffect,\n        } as FilterInstruction);\n    }\n\n    public pop(_filterEffect: Effect, _container: Container, instructionSet: InstructionSet): void\n    {\n        this._renderer.renderPipes.batch.break(instructionSet);\n\n        instructionSet.add({\n            renderPipeId: 'filter',\n            action: 'popFilter',\n            canBundle: false,\n        });\n    }\n\n    public execute(instruction: FilterInstruction)\n    {\n        if (instruction.action === 'pushFilter')\n        {\n            this._renderer.filter.push(instruction);\n        }\n        else if (instruction.action === 'popFilter')\n        {\n            this._renderer.filter.pop();\n        }\n    }\n\n    public destroy(): void\n    {\n        this._renderer = null;\n    }\n}\n"],"names":[],"mappings":";;;AAUO,MAAM,UAAA,CACb;AAAA,EAYI,YAAY,QAAA,EACZ;AACI,IAAA,IAAA,CAAK,SAAA,GAAY,QAAA;AAAA,EACrB;AAAA,EAEO,IAAA,CAAK,YAAA,EAAsB,SAAA,EAAsB,cAAA,EACxD;AACI,IAAA,MAAM,WAAA,GAAc,KAAK,SAAA,CAAU,WAAA;AAEnC,IAAA,WAAA,CAAY,KAAA,CAAM,MAAM,cAAc,CAAA;AAEtC,IAAA,cAAA,CAAe,GAAA,CAAI;AAAA,MACf,YAAA,EAAc,QAAA;AAAA,MACd,SAAA,EAAW,KAAA;AAAA,MACX,MAAA,EAAQ,YAAA;AAAA,MACR,SAAA;AAAA,MACA;AAAA,KACkB,CAAA;AAAA,EAC1B;AAAA,EAEO,GAAA,CAAI,aAAA,EAAuB,UAAA,EAAuB,cAAA,EACzD;AACI,IAAA,IAAA,CAAK,SAAA,CAAU,WAAA,CAAY,KAAA,CAAM,KAAA,CAAM,cAAc,CAAA;AAErD,IAAA,cAAA,CAAe,GAAA,CAAI;AAAA,MACf,YAAA,EAAc,QAAA;AAAA,MACd,MAAA,EAAQ,WAAA;AAAA,MACR,SAAA,EAAW;AAAA,KACd,CAAA;AAAA,EACL;AAAA,EAEO,QAAQ,WAAA,EACf;AACI,IAAA,IAAI,WAAA,CAAY,WAAW,YAAA,EAC3B;AACI,MAAA,IAAA,CAAK,SAAA,CAAU,MAAA,CAAO,IAAA,CAAK,WAAW,CAAA;AAAA,IAC1C,CAAA,MAAA,IACS,WAAA,CAAY,MAAA,KAAW,WAAA,EAChC;AACI,MAAA,IAAA,CAAK,SAAA,CAAU,OAAO,GAAA,EAAI;AAAA,IAC9B;AAAA,EACJ;AAAA,EAEO,OAAA,GACP;AACI,IAAA,IAAA,CAAK,SAAA,GAAY,IAAA;AAAA,EACrB;AACJ;AA5Da,UAAA,CAEK,SAAA,GAAY;AAAA,EACtB,IAAA,EAAM;AAAA,IACF,aAAA,CAAc,UAAA;AAAA,IACd,aAAA,CAAc,WAAA;AAAA,IACd,aAAA,CAAc;AAAA,GAClB;AAAA,EACA,IAAA,EAAM;AACV,CAAA;;;;"}