Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --(c)Kekeke License, all rights not reserved, creating by Tomato for love2d-framework.
- --OH MY GOSH! I WRITE A SHADER! WOW!
- --It's silly way for creating glow effect, but fast and ok.
- --If you want to use it into glsl, replace all 'number' to 'float'.
- --This shader
- ragialGlow = love.graphics.newShader[[
- extern number quality = 2.0; //1.0 = ~pi steps (1-inf)
- extern number depth = 5.0; //depth of pixels (1-inf)
- extern number power = 0.8; //power of bloom (0.0-inf)
- number tau = 2*3.1415; //pi*2
- float average(vec4 p) { return (p.r + p.g + p.b)*0.33;}
- vec4 effect(vec4 color, Image texture, vec2 texture_coords, vec2 pixel_coords)
- {
- vec2 screenFactor = vec2(1)/vec2(love_ScreenSize); //vec2 pixel size, use vec2(1)/vec2(image_size), i use it for post-processing
- number i; //optimisation
- vec4 pixel = Texel(texture, texture_coords); //current pixel
- float step = 1.0/quality; //angle step
- float averageFactor = 1.0/quality/tau; //also, count of steps
- vec4 bloom = vec4(0); //capacitor of color
- if (pixel.a < 0.1 || average(pixel) < 0.1){ //optimisation (do that for low color/alpha)
- for (i = 0.0; i < tau; i += step) //angles for check-points
- bloom += Texel(texture, texture_coords + vec2(cos(i), sin(i)) * screenFactor * depth); //store colors of check-points
- return vec4(bloom)*averageFactor*power; //average color
- }
- return pixel;
- }
- ]]
- --Example images:
- --low power, low depth: pp.vk.me/c629520/v629520715/3767b/yJQFxw0AkWU.jpg
- --low power, high depth: pp.vk.me/c629520/v629520715/3768a/DDN6akGcdJc.jpg
- --low power, high depth 2: pp.vk.me/c629520/v629520715/376c5/-esPnKpapMQ.jpg
- --high power, high depth: pp.vk.me/c629520/v629520715/376ce/mGwzlt_iiiE.jpg
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement