pixi.js
Version:
<p align="center"> <a href="https://pixijs.com" target="_blank" rel="noopener noreferrer"> <img height="150" src="https://files.pixijs.download/branding/pixijs-logo-transparent-dark.svg?v=1" alt="PixiJS logo"> </a> </p> <br/> <p align="center">
1 lines • 5.19 kB
Source Map (JSON)
{"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 * @category filters\n * @standard\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 * @category filters\n * @standard\n * @noInheritDoc\n * @example\n * import { AlphaFilter } from 'pixi.js';\n *\n * const filter = new AlphaFilter({ alpha: 0.5 });\n * sprite.filters = filter;\n *\n * // update alpha\n * filter.alpha = 0.8;\n */\nexport class AlphaFilter extends Filter\n{\n /**\n * Default options for the AlphaFilter.\n * @example\n * ```ts\n * AlphaFilter.defaultOptions = {\n * alpha: 0.5, // Default alpha value\n * };\n * // Use default options\n * const filter = new AlphaFilter(); // Uses default alpha of 0.5\n * ```\n */\n public static defaultOptions: AlphaFilterOptions = {\n /**\n * Amount of alpha transparency to apply.\n * - 0 = fully transparent\n * - 1 = fully opaque (default)\n * @default 1\n */\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 * The alpha value of the filter.\n * Controls the transparency of the filtered display object.\n * @example\n * ```ts\n * // Create filter with initial alpha\n * const filter = new AlphaFilter({ alpha: 0.5 });\n *\n * // Update alpha value dynamically\n * filter.alpha = 0.8;\n * ```\n * @default 1\n * @remarks\n * - 0 = fully transparent\n * - 1 = fully opaque\n * - Values are clamped between 0 and 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":";;;;;;;;;AAgDO,MAAM,YAAA,GAAN,MAAM,YAAA,SAAoB,MACjC,CAAA;AAAA,EAsBI,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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAmBA,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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA/Ea,YAAA,CAaK,cAAqC,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAO/C,KAAO,EAAA,CAAA;AACX,CAAA,CAAA;AArBG,IAAM,WAAN,GAAA;;;;"}