Blur.hx 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. package h2d.filter;
  2. /**
  3. Utilizes the `h3d.pass.Blur` render pass to perform a blurring operation on the filtered object.
  4. **/
  5. class Blur extends Filter {
  6. /**
  7. @see `h3d.pass.Blur.radius`
  8. **/
  9. public var radius(get, set) : Float;
  10. /**
  11. @see `h3d.pass.Blur.linear`
  12. **/
  13. public var linear(get, set) : Float;
  14. /**
  15. @see `h3d.pass.Blur.gain`
  16. **/
  17. public var gain(get, set) : Float;
  18. /**
  19. @see `h3d.pass.Blur.quality`
  20. **/
  21. public var quality(get, set) : Float;
  22. var pass : h3d.pass.Blur;
  23. /**
  24. Create a new Blur filter.
  25. @param radius The blur distance in pixels.
  26. @param gain The color gain when blurring.
  27. @param quality The sample count on each pixel as a tradeoff of speed/quality.
  28. @param linear Linear blur power. Set to 0 for gaussian blur.
  29. **/
  30. public function new( radius = 1., gain = 1., quality = 1., linear = 0. ) {
  31. super();
  32. smooth = true;
  33. pass = new h3d.pass.Blur(radius, gain, linear, quality);
  34. }
  35. inline function get_quality() return pass.quality;
  36. inline function set_quality(v) return pass.quality = v;
  37. inline function get_radius() return pass.radius;
  38. inline function set_radius(v) return pass.radius = v;
  39. inline function get_gain() return pass.gain;
  40. inline function set_gain(v) return pass.gain = v;
  41. inline function get_linear() return pass.linear;
  42. inline function set_linear(v) return pass.linear = v;
  43. override function sync( ctx : RenderContext, s : Object ) {
  44. boundsExtend = radius * 2;
  45. }
  46. override function draw( ctx : RenderContext, t : h2d.Tile ) {
  47. var out = t.getTexture();
  48. var old = out.filter;
  49. out.filter = Linear;
  50. pass.apply(ctx, out);
  51. out.filter = old;
  52. return t;
  53. }
  54. }