Source: filters/noise/NoiseFilter.js

filters/noise/NoiseFilter.js

  1. import * as core from '../../core';
  2. import { readFileSync } from 'fs';
  3. import { join } from 'path';
  4. /**
  5. * @author Vico @vicocotea
  6. * original filter: https://github.com/evanw/glfx.js/blob/master/src/filters/adjust/noise.js
  7. */
  8. /**
  9. * A Noise effect filter.
  10. *
  11. * @class
  12. * @extends PIXI.Filter
  13. * @memberof PIXI.filters
  14. */
  15. export default class NoiseFilter extends core.Filter
  16. {
  17. /**
  18. * @param {number} noise - The noise intensity, should be a normalized value in the range [0, 1].
  19. * @param {number} seed - A random seed for the noise generation. Default is `Math.random()`.
  20. */
  21. constructor(noise = 0.5, seed = Math.random())
  22. {
  23. super(
  24. // vertex shader
  25. readFileSync(join(__dirname, '../fragments/default.vert'), 'utf8'),
  26. // fragment shader
  27. readFileSync(join(__dirname, './noise.frag'), 'utf8')
  28. );
  29. this.noise = noise;
  30. this.seed = seed;
  31. }
  32. /**
  33. * The amount of noise to apply, this value should be in the range (0, 1].
  34. *
  35. * @member {number}
  36. * @default 0.5
  37. */
  38. get noise()
  39. {
  40. return this.uniforms.uNoise;
  41. }
  42. set noise(value) // eslint-disable-line require-jsdoc
  43. {
  44. this.uniforms.uNoise = value;
  45. }
  46. /**
  47. * A seed value to apply to the random noise generation. `Math.random()` is a good value to use.
  48. *
  49. * @member {number}
  50. */
  51. get seed()
  52. {
  53. return this.uniforms.uSeed;
  54. }
  55. set seed(value) // eslint-disable-line require-jsdoc
  56. {
  57. this.uniforms.uSeed = value;
  58. }
  59. }