Advertisement
Guest User

Love2d Postprocessing

a guest
Jul 15th, 2016
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.06 KB | None | 0 0
  1. function postprocessing()
  2.     local graphics = love.graphics      --optimisation cache
  3.     local buffer = graphics.newCanvas() --buffer in upvalue
  4.     local resX, resY = graphics.getDimensions()
  5.     return function(canvas, shader)
  6.         local x, y = graphics.getDimensions()
  7.         if x ~= resX or y ~= resY then buffer = graphics.newCanvas(); resX, resY = x, y end
  8.         graphics.setCanvas(buffer)
  9.         graphics.setShader(shader)
  10.         graphics.draw(canvas)
  11.         graphics.setShader()
  12.         graphics.setCanvas(canvas)
  13.         graphics.draw(buffer)
  14.         graphics.setCanvas()
  15.     end
  16. end
  17.  
  18. --using:
  19. function love.load()
  20. -- new postprocessor
  21.   post = postprocessing()
  22. -- framebuffer
  23.   canvas = love.graphics.newCanvas()
  24. -- loading shaders
  25.   shader1 = love.graphics.newShader('shader1.glsl')
  26.   shader2 = love.graphics.newShader('shader2.glsl')
  27. end
  28.  
  29. function love.draw()
  30.   love.graphics.setCanvas(canvas)
  31.   love.graphics.rectangle('fill', 100, 200, 100, 200)
  32.   love.graphics.setCanvas()
  33. -- applying shaders
  34.   post(canvas, shader1)
  35.   post(canvas, shader2)
  36. -- draw framebuffer
  37.   love.graphics.draw(canvas)
  38. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement