Advertisement
Snusmumriken

Love2d/glsl blur radial shader

Mar 5th, 2016
329
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.88 KB | None | 0 0
  1. --(c)Kekeke License, all rights not reserved, creating by Tomato for love2d-framework.
  2. --OH MY GOSH! I WRITE A SHADER! WOW!
  3.  
  4. --It's silly way for creating glow effect, but fast and ok.
  5. --If you want to use it into glsl, replace all 'number' to 'float'.
  6. --This shader
  7.  
  8. ragialGlow = love.graphics.newShader[[
  9. extern number quality = 2.0;                            //1.0 = ~pi steps  (1-inf)
  10. extern number depth = 5.0;                              //depth of pixels (1-inf)
  11. extern number power = 0.8;                              //power of bloom  (0.0-inf)
  12. number tau = 2*3.1415;                                  //pi*2
  13.  
  14. float average(vec4 p) { return (p.r + p.g + p.b)*0.33;}
  15.  
  16. vec4 effect(vec4 color, Image texture, vec2 texture_coords, vec2 pixel_coords)
  17. {
  18.     vec2 screenFactor = vec2(1)/vec2(love_ScreenSize);  //vec2 pixel size, use vec2(1)/vec2(image_size), i use it for post-processing
  19.     number i;                                           //optimisation
  20.     vec4 pixel = Texel(texture, texture_coords);        //current pixel
  21.     float step = 1.0/quality;                           //angle step
  22.     float averageFactor = 1.0/quality/tau;              //also, count of steps
  23.     vec4 bloom = vec4(0);                               //capacitor of color
  24.     if (pixel.a < 0.1 || average(pixel) < 0.1){         //optimisation (do that for low color/alpha)
  25.         for (i = 0.0; i < tau; i += step)               //angles for check-points
  26.             bloom += Texel(texture, texture_coords + vec2(cos(i), sin(i)) * screenFactor * depth);  //store colors of check-points
  27.         return vec4(bloom)*averageFactor*power;         //average color
  28.     }
  29.     return pixel;
  30. }
  31. ]]
  32.  
  33. --Example images:
  34. --low power, low depth:     pp.vk.me/c629520/v629520715/3767b/yJQFxw0AkWU.jpg
  35. --low power, high depth:    pp.vk.me/c629520/v629520715/3768a/DDN6akGcdJc.jpg
  36. --low power, high depth 2:  pp.vk.me/c629520/v629520715/376c5/-esPnKpapMQ.jpg
  37. --high power, high depth:   pp.vk.me/c629520/v629520715/376ce/mGwzlt_iiiE.jpg
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement