{"version":3,"file":"mapWebGLBlendModesToPixi.mjs","sources":["../../../../../src/rendering/renderers/gl/state/mapWebGLBlendModesToPixi.ts"],"sourcesContent":["import { DOMAdapter } from '../../../../environment/adapter';\n\nimport type { BLEND_MODES } from '../../shared/state/const';\nimport type { GlRenderingContext } from '../context/GlRenderingContext';\n\n/**\n * Maps gl blend combinations to WebGL.\n * @param gl\n * @returns {object} Map of gl blend combinations to WebGL.\n */\nexport function mapWebGLBlendModesToPixi(gl: GlRenderingContext): Record\n{\n const blendMap: Partial> = {};\n\n // TODO - premultiply alpha would be different.\n // add a boolean for that!\n blendMap.normal = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA];\n blendMap.add = [gl.ONE, gl.ONE];\n blendMap.multiply = [gl.DST_COLOR, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA];\n blendMap.screen = [gl.ONE, gl.ONE_MINUS_SRC_COLOR, gl.ONE, gl.ONE_MINUS_SRC_ALPHA];\n blendMap.none = [0, 0];\n\n // not-premultiplied blend modes\n blendMap['normal-npm'] = [gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA];\n blendMap['add-npm'] = [gl.SRC_ALPHA, gl.ONE, gl.ONE, gl.ONE];\n blendMap['screen-npm'] = [gl.SRC_ALPHA, gl.ONE_MINUS_SRC_COLOR, gl.ONE, gl.ONE_MINUS_SRC_ALPHA];\n\n blendMap.erase = [gl.ZERO, gl.ONE_MINUS_SRC_ALPHA];\n\n const isWebGl2 = !(gl instanceof DOMAdapter.get().getWebGLRenderingContext());\n\n if (isWebGl2)\n {\n blendMap.min = [gl.ONE, gl.ONE, gl.ONE, gl.ONE, gl.MIN, gl.MIN];\n blendMap.max = [gl.ONE, gl.ONE, gl.ONE, gl.ONE, gl.MAX, gl.MAX];\n }\n else\n {\n const ext = gl.getExtension('EXT_blend_minmax');\n\n if (ext)\n {\n blendMap.min = [gl.ONE, gl.ONE, gl.ONE, gl.ONE, ext.MIN_EXT, ext.MIN_EXT];\n blendMap.max = [gl.ONE, gl.ONE, gl.ONE, gl.ONE, ext.MAX_EXT, ext.MAX_EXT];\n }\n }\n\n // TODO - implement if requested!\n // composite operations\n // array[BLEND_MODES.SRC_IN] = [gl.DST_ALPHA, gl.ZERO];\n // array[BLEND_MODES.SRC_OUT] = [gl.ONE_MINUS_DST_ALPHA, gl.ZERO];\n // array[BLEND_MODES.SRC_ATOP] = [gl.DST_ALPHA, gl.ONE_MINUS_SRC_ALPHA];\n // array[BLEND_MODES.DST_OVER] = [gl.ONE_MINUS_DST_ALPHA, gl.ONE];\n // array[BLEND_MODES.DST_IN] = [gl.ZERO, gl.SRC_ALPHA];\n // array[BLEND_MODES.DST_OUT] = [gl.ZERO, gl.ONE_MINUS_SRC_ALPHA];\n // array[BLEND_MODES.DST_ATOP] = [gl.ONE_MINUS_DST_ALPHA, gl.SRC_ALPHA];\n // array[BLEND_MODES.XOR] = [gl.ONE_MINUS_DST_ALPHA, gl.ONE_MINUS_SRC_ALPHA];\n // SUBTRACT from flash\n // array[BLEND_MODES.SUBTRACT] = [gl.ONE, gl.ONE, gl.ONE, gl.ONE, gl.FUNC_REVERSE_SUBTRACT, gl.FUNC_ADD];\n\n return blendMap as Record;\n}\n"],"names":[],"mappings":";;;AAUO,SAAS,yBAAyB,EACzC,EAAA;AACI,EAAA,MAAM,WAAmD,EAAC,CAAA;AAI1D,EAAA,QAAA,CAAS,MAAS,GAAA,CAAC,EAAG,CAAA,GAAA,EAAK,GAAG,mBAAmB,CAAA,CAAA;AACjD,EAAA,QAAA,CAAS,GAAM,GAAA,CAAC,EAAG,CAAA,GAAA,EAAK,GAAG,GAAG,CAAA,CAAA;AAC9B,EAAS,QAAA,CAAA,QAAA,GAAW,CAAC,EAAG,CAAA,SAAA,EAAW,GAAG,mBAAqB,EAAA,EAAA,CAAG,GAAK,EAAA,EAAA,CAAG,mBAAmB,CAAA,CAAA;AACzF,EAAS,QAAA,CAAA,MAAA,GAAS,CAAC,EAAG,CAAA,GAAA,EAAK,GAAG,mBAAqB,EAAA,EAAA,CAAG,GAAK,EAAA,EAAA,CAAG,mBAAmB,CAAA,CAAA;AACjF,EAAS,QAAA,CAAA,IAAA,GAAO,CAAC,CAAA,EAAG,CAAC,CAAA,CAAA;AAGrB,EAAS,QAAA,CAAA,YAAY,CAAI,GAAA,CAAC,EAAG,CAAA,SAAA,EAAW,GAAG,mBAAqB,EAAA,EAAA,CAAG,GAAK,EAAA,EAAA,CAAG,mBAAmB,CAAA,CAAA;AAC9F,EAAS,QAAA,CAAA,SAAS,CAAI,GAAA,CAAC,EAAG,CAAA,SAAA,EAAW,GAAG,GAAK,EAAA,EAAA,CAAG,GAAK,EAAA,EAAA,CAAG,GAAG,CAAA,CAAA;AAC3D,EAAS,QAAA,CAAA,YAAY,CAAI,GAAA,CAAC,EAAG,CAAA,SAAA,EAAW,GAAG,mBAAqB,EAAA,EAAA,CAAG,GAAK,EAAA,EAAA,CAAG,mBAAmB,CAAA,CAAA;AAE9F,EAAA,QAAA,CAAS,KAAQ,GAAA,CAAC,EAAG,CAAA,IAAA,EAAM,GAAG,mBAAmB,CAAA,CAAA;AAEjD,EAAA,MAAM,WAAW,EAAE,EAAA,YAAc,UAAW,CAAA,GAAA,GAAM,wBAAyB,EAAA,CAAA,CAAA;AAE3E,EAAA,IAAI,QACJ,EAAA;AACI,IAAA,QAAA,CAAS,GAAM,GAAA,CAAC,EAAG,CAAA,GAAA,EAAK,EAAG,CAAA,GAAA,EAAK,EAAG,CAAA,GAAA,EAAK,EAAG,CAAA,GAAA,EAAK,EAAG,CAAA,GAAA,EAAK,GAAG,GAAG,CAAA,CAAA;AAC9D,IAAA,QAAA,CAAS,GAAM,GAAA,CAAC,EAAG,CAAA,GAAA,EAAK,EAAG,CAAA,GAAA,EAAK,EAAG,CAAA,GAAA,EAAK,EAAG,CAAA,GAAA,EAAK,EAAG,CAAA,GAAA,EAAK,GAAG,GAAG,CAAA,CAAA;AAAA,GAGlE,MAAA;AACI,IAAM,MAAA,GAAA,GAAM,EAAG,CAAA,YAAA,CAAa,kBAAkB,CAAA,CAAA;AAE9C,IAAA,IAAI,GACJ,EAAA;AACI,MAAA,QAAA,CAAS,GAAM,GAAA,CAAC,EAAG,CAAA,GAAA,EAAK,EAAG,CAAA,GAAA,EAAK,EAAG,CAAA,GAAA,EAAK,EAAG,CAAA,GAAA,EAAK,GAAI,CAAA,OAAA,EAAS,IAAI,OAAO,CAAA,CAAA;AACxE,MAAA,QAAA,CAAS,GAAM,GAAA,CAAC,EAAG,CAAA,GAAA,EAAK,EAAG,CAAA,GAAA,EAAK,EAAG,CAAA,GAAA,EAAK,EAAG,CAAA,GAAA,EAAK,GAAI,CAAA,OAAA,EAAS,IAAI,OAAO,CAAA,CAAA;AAAA,KAC5E;AAAA,GACJ;AAeA,EAAO,OAAA,QAAA,CAAA;AACX;;;;"}