UNPKG

pixi.js

Version:

PixiJS — The HTML5 Creation Engine =============

1 lines 4.04 kB
{"version":3,"file":"AlphaFilter.mjs","sources":["../../../../src/filters/defaults/alpha/AlphaFilter.ts"],"sourcesContent":["import { GlProgram } from '../../../rendering/renderers/gl/shader/GlProgram';\nimport { GpuProgram } from '../../../rendering/renderers/gpu/shader/GpuProgram';\nimport { UniformGroup } from '../../../rendering/renderers/shared/shader/UniformGroup';\nimport { Filter } from '../../Filter';\nimport vertex from '../defaultFilter.vert';\nimport fragment from './alpha.frag';\nimport source from './alpha.wgsl';\n\nimport type { FilterOptions } from '../../Filter';\n\n/**\n * Options for AlphaFilter\n * @memberof filters\n */\nexport interface AlphaFilterOptions extends FilterOptions\n{\n /**\n * Amount of alpha from 0 to 1, where 0 is transparent\n * @default 1\n */\n alpha: number;\n}\n\n/**\n * Simplest filter - applies alpha.\n *\n * Use this instead of Container's alpha property to avoid visual layering of individual elements.\n * AlphaFilter applies alpha evenly across the entire display object and any opaque elements it contains.\n * If elements are not opaque, they will blend with each other anyway.\n *\n * Very handy if you want to use common features of all filters:\n *\n * 1. Assign a blendMode to this filter, blend all elements inside display object with background.\n *\n * 2. To use clipping in display coordinates, assign a filterArea to the same container that has this filter.\n * @memberof filters\n */\nexport class AlphaFilter extends Filter\n{\n /** Default filter options */\n public static readonly defaultOptions: AlphaFilterOptions = {\n /** Amount of alpha from 0 to 1, where 0 is transparent */\n alpha: 1,\n };\n\n constructor(options?: AlphaFilterOptions)\n {\n options = { ...AlphaFilter.defaultOptions, ...options };\n\n const gpuProgram = GpuProgram.from({\n vertex: {\n source,\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: 'alpha-filter'\n });\n\n const { alpha, ...rest } = options;\n\n const alphaUniforms = new UniformGroup({\n uAlpha: { value: alpha, type: 'f32' },\n });\n\n super({\n ...rest,\n gpuProgram,\n glProgram,\n resources: {\n alphaUniforms\n },\n });\n }\n\n /**\n * Coefficient for alpha multiplication\n * @default 1\n */\n get alpha(): number { return this.resources.alphaUniforms.uniforms.uAlpha; }\n set alpha(value: number) { this.resources.alphaUniforms.uniforms.uAlpha = value; }\n}\n"],"names":[],"mappings":";;;;;;;;;AAqCO,MAAM,YAAA,GAAN,MAAM,YAAA,SAAoB,MACjC,CAAA;AAAA,EAOI,YAAY,OACZ,EAAA;AACI,IAAA,OAAA,GAAU,EAAE,GAAG,YAAY,CAAA,cAAA,EAAgB,GAAG,OAAQ,EAAA,CAAA;AAEtD,IAAM,MAAA,UAAA,GAAa,WAAW,IAAK,CAAA;AAAA,MAC/B,MAAQ,EAAA;AAAA,QACJ,MAAA;AAAA,QACA,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,cAAA;AAAA,KACT,CAAA,CAAA;AAED,IAAA,MAAM,EAAE,KAAA,EAAO,GAAG,IAAA,EAAS,GAAA,OAAA,CAAA;AAE3B,IAAM,MAAA,aAAA,GAAgB,IAAI,YAAa,CAAA;AAAA,MACnC,MAAQ,EAAA,EAAE,KAAO,EAAA,KAAA,EAAO,MAAM,KAAM,EAAA;AAAA,KACvC,CAAA,CAAA;AAED,IAAM,KAAA,CAAA;AAAA,MACF,GAAG,IAAA;AAAA,MACH,UAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAW,EAAA;AAAA,QACP,aAAA;AAAA,OACJ;AAAA,KACH,CAAA,CAAA;AAAA,GACL;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,KAAgB,GAAA;AAAE,IAAO,OAAA,IAAA,CAAK,SAAU,CAAA,aAAA,CAAc,QAAS,CAAA,MAAA,CAAA;AAAA,GAAQ;AAAA,EAC3E,IAAI,MAAM,KAAe,EAAA;AAAE,IAAK,IAAA,CAAA,SAAA,CAAU,aAAc,CAAA,QAAA,CAAS,MAAS,GAAA,KAAA,CAAA;AAAA,GAAO;AACrF,CAAA,CAAA;AAAA;AAnDa,YAAA,CAGc,cAAqC,GAAA;AAAA;AAAA,EAExD,KAAO,EAAA,CAAA;AACX,CAAA,CAAA;AANG,IAAM,WAAN,GAAA;;;;"}