pixi.js
Version:
PixiJS — The HTML5 Creation Engine =============
1 lines • 4.56 kB
Source Map (JSON)
{"version":3,"file":"NoiseFilter.mjs","sources":["../../../../src/filters/defaults/noise/NoiseFilter.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 './noise.frag';\nimport source from './noise.wgsl';\n\nimport type { FilterOptions } from '../../Filter';\n\n/**\n * Options for NoiseFilter\n * @memberof filters\n */\nexport interface NoiseFilterOptions extends FilterOptions\n{\n /** The amount of noise to apply, this value should be in the range (0, 1]. */\n noise?: number;\n /** A seed value to apply to the random noise generation. `Math.random()` is a good value to use. */\n seed?: number;\n}\n\n/**\n * A Noise effect filter.\n *\n * original filter: https://github.com/evanw/glfx.js/blob/master/src/filters/adjust/noise.js\n * @memberof filters\n * @author Vico @vicocotea\n */\nexport class NoiseFilter extends Filter\n{\n public static readonly defaultOptions: NoiseFilterOptions = {\n noise: 0.5,\n };\n\n /**\n * @param options - The options of the noise filter.\n */\n constructor(options: NoiseFilterOptions = {})\n {\n options = { ...NoiseFilter.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: 'noise-filter'\n });\n\n const { noise, seed, ...rest } = options;\n\n super({\n ...rest,\n gpuProgram,\n glProgram,\n resources: {\n noiseUniforms: new UniformGroup({\n uNoise: { value: 1, type: 'f32' },\n uSeed: { value: 1, type: 'f32' },\n })\n },\n });\n\n this.noise = noise;\n this.seed = seed ?? Math.random();\n }\n\n /**\n * The amount of noise to apply, this value should be in the range (0, 1].\n * @default 0.5\n */\n get noise(): number\n {\n return this.resources.noiseUniforms.uniforms.uNoise;\n }\n\n set noise(value: number)\n {\n this.resources.noiseUniforms.uniforms.uNoise = value;\n }\n\n /** A seed value to apply to the random noise generation. `Math.random()` is a good value to use. */\n get seed(): number\n {\n return this.resources.noiseUniforms.uniforms.uSeed;\n }\n\n set seed(value: number)\n {\n this.resources.noiseUniforms.uniforms.uSeed = value;\n }\n}\n"],"names":[],"mappings":";;;;;;;;;AA6BO,MAAM,YAAA,GAAN,MAAM,YAAA,SAAoB,MACjC,CAAA;AAAA;AAAA;AAAA;AAAA,EAQI,WAAA,CAAY,OAA8B,GAAA,EAC1C,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,IAAM,EAAA,GAAG,MAAS,GAAA,OAAA,CAAA;AAEjC,IAAM,KAAA,CAAA;AAAA,MACF,GAAG,IAAA;AAAA,MACH,UAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAW,EAAA;AAAA,QACP,aAAA,EAAe,IAAI,YAAa,CAAA;AAAA,UAC5B,MAAQ,EAAA,EAAE,KAAO,EAAA,CAAA,EAAG,MAAM,KAAM,EAAA;AAAA,UAChC,KAAO,EAAA,EAAE,KAAO,EAAA,CAAA,EAAG,MAAM,KAAM,EAAA;AAAA,SAClC,CAAA;AAAA,OACL;AAAA,KACH,CAAA,CAAA;AAED,IAAA,IAAA,CAAK,KAAQ,GAAA,KAAA,CAAA;AACb,IAAK,IAAA,CAAA,IAAA,GAAO,IAAQ,IAAA,IAAA,CAAK,MAAO,EAAA,CAAA;AAAA,GACpC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,KACJ,GAAA;AACI,IAAO,OAAA,IAAA,CAAK,SAAU,CAAA,aAAA,CAAc,QAAS,CAAA,MAAA,CAAA;AAAA,GACjD;AAAA,EAEA,IAAI,MAAM,KACV,EAAA;AACI,IAAK,IAAA,CAAA,SAAA,CAAU,aAAc,CAAA,QAAA,CAAS,MAAS,GAAA,KAAA,CAAA;AAAA,GACnD;AAAA;AAAA,EAGA,IAAI,IACJ,GAAA;AACI,IAAO,OAAA,IAAA,CAAK,SAAU,CAAA,aAAA,CAAc,QAAS,CAAA,KAAA,CAAA;AAAA,GACjD;AAAA,EAEA,IAAI,KAAK,KACT,EAAA;AACI,IAAK,IAAA,CAAA,SAAA,CAAU,aAAc,CAAA,QAAA,CAAS,KAAQ,GAAA,KAAA,CAAA;AAAA,GAClD;AACJ,CAAA,CAAA;AAxEa,YAAA,CAEc,cAAqC,GAAA;AAAA,EACxD,KAAO,EAAA,GAAA;AACX,CAAA,CAAA;AAJG,IAAM,WAAN,GAAA;;;;"}