vignette.lua 1.0 KB

123456789101112131415161718192021222324252627282930313233343536
  1. local g = love.graphics
  2. local Vignette = {}
  3. function Vignette:init()
  4. self:resize()
  5. self.config = config.effects[ctx.biome].vignette
  6. self.radius = self.config.radius[1]
  7. self.blur = self.config.blur[1]
  8. end
  9. function Vignette:update()
  10. local p = ctx.player
  11. self.config = config.effects[ctx.biome].vignette
  12. self.blur = lume.lerp(self.blur, p.dead and self.config.blur[2] or self.config.blur[1], 2 * ls.tickrate)
  13. self.radius = lume.lerp(self.radius, p.dead and self.config.radius[2] or self.config.radius[1], 4 * ls.tickrate)
  14. self.shader:send('blur', self.blur)
  15. self.shader:send('radius', self.radius)
  16. end
  17. function Vignette:applyEffect(source, target)
  18. g.setShader(self.shader)
  19. g.setCanvas(target)
  20. g.draw(source)
  21. g.setShader()
  22. ctx.view:worldPush()
  23. if ctx.player.ghost then ctx.player.ghost:draw() end
  24. ctx.jujus:draw()
  25. g.pop()
  26. end
  27. function Vignette:resize()
  28. self.shader = love.graphics.newShader('media/shaders/vignette.shader')
  29. self.shader:send('frame', {0, 0, love.graphics.getDimensions()})
  30. end
  31. return Vignette