refactored post shader to be part of the light world but still able to use it on its own, took out globals, and made adding and removing effects independant from the draw calls

This commit is contained in:
Tim Anema 2014-10-06 17:27:41 -04:00
parent 5e0320c4bf
commit 702de1389a
4 changed files with 259 additions and 227 deletions

View File

@ -1,5 +1,4 @@
-- Example: Complex Example -- Example: Complex Example
require "lib/postshader"
local LightWorld = require "lib/light_world" local LightWorld = require "lib/light_world"
function initScene() function initScene()
@ -226,14 +225,27 @@ function love.update(dt)
offsetOldX = offsetX offsetOldX = offsetX
offsetOldY = offsetY offsetOldY = offsetY
-- draw shader
if colorAberration > 0.0 then
-- vert / horz blur
lightWorld.post_shader:addEffect("blur", 2.0, 2.0)
lightWorld.post_shader:addEffect("chromatic", math.sin(lightDirection * 10.0) * colorAberration, math.cos(lightDirection * 10.0) * colorAberration, math.cos(lightDirection * 10.0) * colorAberration, math.sin(lightDirection * 10.0) * -colorAberration, math.sin(lightDirection * 10.0) * colorAberration, math.cos(lightDirection * 10.0) * -colorAberration)
else
lightWorld.post_shader:removeEffect("blur")
lightWorld.post_shader:removeEffect("chromatic")
end
if bloomOn > 0.0 then
-- blur, strength
lightWorld.post_shader:addEffect("bloom", 2.0, bloomOn)
else
lightWorld.post_shader:removeEffect("bloom")
end
end end
function love.draw() function love.draw()
-- set shader buffer -- set shader buffer
if bloomOn then
love.postshader.setBuffer("render")
end
lightWorld:draw() lightWorld:draw()
love.graphics.draw(imgLight, mx - 5, (my - 5) - (16.0 + (math.sin(lightDirection) + 1.0) * 64.0)) love.graphics.draw(imgLight, mx - 5, (my - 5) - (16.0 + (math.sin(lightDirection) + 1.0) * 64.0))
@ -327,31 +339,6 @@ function love.draw()
love.graphics.setColor(255, 255, 255, 191) love.graphics.setColor(255, 255, 255, 191)
love.graphics.print("F1: Help", 4, 4) love.graphics.print("F1: Help", 4, 4)
end end
-- draw shader
if colorAberration > 0.0 then
-- vert / horz blur
love.postshader.addEffect("blur", 2.0, 2.0)
love.postshader.addEffect("chromatic", math.sin(lightDirection * 10.0) * colorAberration, math.cos(lightDirection * 10.0) * colorAberration, math.cos(lightDirection * 10.0) * colorAberration, math.sin(lightDirection * 10.0) * -colorAberration, math.sin(lightDirection * 10.0) * colorAberration, math.cos(lightDirection * 10.0) * -colorAberration)
end
if bloomOn > 0.0 then
-- blur, strength
love.postshader.addEffect("bloom", 2.0, bloomOn)
end
if effectOn == 1.0 then
love.postshader.addEffect("4colors", {15, 56, 15}, {48, 98, 48}, {139, 172, 15}, {155, 188, 15})
--love.postshader.addEffect("4colors", {108, 108, 78}, {142, 139, 87}, {195, 196, 165}, {227, 230, 201})
elseif effectOn == 2.0 then
love.postshader.addEffect("monochrom")
elseif effectOn == 3.0 then
love.postshader.addEffect("scanlines")
elseif effectOn == 4.0 then
love.postshader.addEffect("tiltshift", 4.0)
end
love.postshader.draw()
end end
function drawBackground(l,t,w,h) function drawBackground(l,t,w,h)
@ -493,6 +480,32 @@ function love.keypressed(k, u)
if effectOn > 4.0 then if effectOn > 4.0 then
effectOn = 0.0 effectOn = 0.0
end end
if effectOn == 1.0 then
lightWorld.post_shader:addEffect("4colors", {15, 56, 15}, {48, 98, 48}, {139, 172, 15}, {155, 188, 15})
--lightWorld.post_shader:addEffect("4colors", {108, 108, 78}, {142, 139, 87}, {195, 196, 165}, {227, 230, 201})
else
lightWorld.post_shader:removeEffect("4colors")
end
if effectOn == 2.0 then
lightWorld.post_shader:addEffect("monochrome")
else
lightWorld.post_shader:removeEffect("monochrome")
end
if effectOn == 3.0 then
lightWorld.post_shader:addEffect("scanlines")
else
lightWorld.post_shader:removeEffect("scanlines")
end
if effectOn == 4.0 then
lightWorld.post_shader:addEffect("tiltshift", 4.0)
else
lightWorld.post_shader:removeEffect("tiltshift")
end
elseif k == "f11" then elseif k == "f11" then
physicWorld:destroy() physicWorld:destroy()
lightWorld:clearBodys() lightWorld:clearBodys()

View File

@ -86,16 +86,18 @@ end
-- refresh -- refresh
function body:refresh() function body:refresh()
self.data = { if self.x and self.y and self.width and self.height and self.ox and self.oy then
self.x - self.ox, self.data = {
self.y - self.oy, self.x - self.ox,
self.x - self.ox + self.width, self.y - self.oy,
self.y - self.oy, self.x - self.ox + self.width,
self.x - self.ox + self.width, self.y - self.oy,
self.y - self.oy + self.height, self.x - self.ox + self.width,
self.x - self.ox, self.y - self.oy + self.height,
self.y - self.oy + self.height self.x - self.ox,
} self.y - self.oy + self.height
}
end
end end
-- set position -- set position
@ -165,9 +167,7 @@ function body:setOffset(ox, oy)
if ox ~= self.ox or oy ~= self.oy then if ox ~= self.ox or oy ~= self.oy then
self.ox = ox self.ox = ox
self.oy = oy self.oy = oy
if self.shadowType == "rectangle" then self:refresh()
self:refresh()
end
end end
end end

View File

@ -26,6 +26,7 @@ local class = require(_PACKAGE..'/class')
local Light = require(_PACKAGE..'/light') local Light = require(_PACKAGE..'/light')
local Body = require(_PACKAGE..'/body') local Body = require(_PACKAGE..'/body')
local normal_map = require(_PACKAGE..'/normal_map') local normal_map = require(_PACKAGE..'/normal_map')
local PostShader = require(_PACKAGE..'/postshader')
require(_PACKAGE..'/postshader') require(_PACKAGE..'/postshader')
local light_world = class() local light_world = class()
@ -38,6 +39,7 @@ light_world.reflectionShader = love.graphics.newShader(_PACKAGE.."/shaders/ref
function light_world:init(options) function light_world:init(options)
self.lights = {} self.lights = {}
self.body = {} self.body = {}
self.post_shader = PostShader()
self.ambient = {0, 0, 0} self.ambient = {0, 0, 0}
self.normalInvert = false self.normalInvert = false
@ -258,12 +260,7 @@ function light_world:draw(l,t,w,h,s)
self:drawReflection( sl,st,sw,sh,s) self:drawReflection( sl,st,sw,sh,s)
love.graphics.pop() love.graphics.pop()
love.graphics.setBackgroundColor(0, 0, 0) self.post_shader:drawWith(self.render_buffer)
love.graphics.setBlendMode("alpha")
love.graphics.setCanvas(last_buffer)
love.graphics.setShader()
love.graphics.setColor(255, 255, 255)
love.graphics.draw(self.render_buffer, l, t)
end end
-- draw shadow -- draw shadow

View File

@ -25,189 +25,211 @@ local _PACKAGE = (...):match("^(.+)[%./][^%./]+") or ""
local class = require(_PACKAGE..'/class') local class = require(_PACKAGE..'/class')
local post_shader = class() local post_shader = class()
post_shader.blurv = love.graphics.newShader(_PACKAGE.."/shaders/blurv.glsl")
post_shader.blurh = love.graphics.newShader(_PACKAGE.."/shaders/blurh.glsl")
post_shader.contrast = love.graphics.newShader(_PACKAGE.."/shaders/contrast.glsl")
post_shader.chromatic_aberration = love.graphics.newShader(_PACKAGE.."/shaders/chromatic_aberration.glsl")
post_shader.four_color = love.graphics.newShader(_PACKAGE.."/shaders/four_colors.glsl")
post_shader.monochrome = love.graphics.newShader(_PACKAGE.."/shaders/monochrome.glsl")
post_shader.scanlines = love.graphics.newShader(_PACKAGE.."/shaders/scanlines.glsl")
post_shader.tilt_shift = love.graphics.newShader(_PACKAGE.."/shaders/tilt_shift.glsl")
LOVE_POSTSHADER_BUFFER_RENDER = love.graphics.newCanvas() function post_shader:init()
LOVE_POSTSHADER_BUFFER_BACK = love.graphics.newCanvas() self:refreshScreenSize()
LOVE_POSTSHADER_LAST_BUFFER = nil self.effects = {}
LOVE_POSTSHADER_BLURV = love.graphics.newShader(_PACKAGE.."/shaders/blurv.glsl")
LOVE_POSTSHADER_BLURH = love.graphics.newShader(_PACKAGE.."/shaders/blurh.glsl")
LOVE_POSTSHADER_CONTRAST = love.graphics.newShader(_PACKAGE.."/shaders/contrast.glsl")
LOVE_POSTSHADER_CHROMATIC_ABERRATION = love.graphics.newShader(_PACKAGE.."/shaders/chromatic_aberration.glsl")
LOVE_POSTSHADER_FOUR_COLOR = love.graphics.newShader(_PACKAGE.."/shaders/four_colors.glsl")
LOVE_POSTSHADER_MONOCHROM = love.graphics.newShader(_PACKAGE.."/shaders/monochrome.glsl")
LOVE_POSTSHADER_SCANLINES = love.graphics.newShader(_PACKAGE.."/shaders/scanlines.glsl")
LOVE_POSTSHADER_TILT_SHIFT = love.graphics.newShader(_PACKAGE.."/shaders/tilt_shift.glsl")
love.postshader = {}
love.postshader.setBuffer = function(path)
if path == "back" then
love.graphics.setCanvas(LOVE_POSTSHADER_BUFFER_BACK)
else
love.graphics.setCanvas(LOVE_POSTSHADER_BUFFER_RENDER)
end
LOVE_POSTSHADER_LAST_BUFFER = love.graphics.getCanvas()
end end
love.postshader.addEffect = function(shader, ...) function post_shader:refreshScreenSize()
args = {...} self.render_buffer = love.graphics.newCanvas()
LOVE_POSTSHADER_LAST_BUFFER = love.graphics.getCanvas() self.back_buffer = love.graphics.newCanvas()
post_shader.blurv:send("screen", {love.window.getWidth(), love.window.getHeight()})
if shader == "bloom" then post_shader.blurh:send("screen", {love.window.getWidth(), love.window.getHeight()})
-- Bloom Shader post_shader.scanlines:send("screen", {love.window.getWidth(), love.window.getHeight()})
love.graphics.setCanvas(LOVE_POSTSHADER_BUFFER_BACK)
love.graphics.setBlendMode("alpha")
LOVE_POSTSHADER_BLURV:send("screen", {love.window.getWidth(), love.window.getHeight()})
LOVE_POSTSHADER_BLURH:send("screen", {love.window.getWidth(), love.window.getHeight()})
LOVE_POSTSHADER_BLURV:send("steps", args[1] or 2.0)
LOVE_POSTSHADER_BLURH:send("steps", args[1] or 2.0)
love.graphics.setShader(LOVE_POSTSHADER_BLURV)
love.graphics.draw(LOVE_POSTSHADER_BUFFER_RENDER)
love.graphics.setShader(LOVE_POSTSHADER_BLURH)
love.graphics.draw(LOVE_POSTSHADER_BUFFER_BACK)
love.graphics.setShader(LOVE_POSTSHADER_CONTRAST)
love.graphics.draw(LOVE_POSTSHADER_BUFFER_BACK)
love.graphics.setCanvas(LOVE_POSTSHADER_LAST_BUFFER)
love.graphics.setShader()
love.graphics.setColor(255, 255, 255)
love.graphics.draw(LOVE_POSTSHADER_BUFFER_RENDER)
love.graphics.setBlendMode("additive")
love.graphics.setColor(255, 255, 255, (args[2] or 0.25) * 255)
love.graphics.draw(LOVE_POSTSHADER_BUFFER_BACK)
love.graphics.setBlendMode("alpha")
elseif shader == "blur" then
-- Blur Shader
love.graphics.setCanvas(LOVE_POSTSHADER_BUFFER_BACK)
love.graphics.setBlendMode("alpha")
LOVE_POSTSHADER_BLURV:send("screen", {love.window.getWidth(), love.window.getHeight()})
LOVE_POSTSHADER_BLURH:send("screen", {love.window.getWidth(), love.window.getHeight()})
LOVE_POSTSHADER_BLURV:send("steps", args[1] or 2.0)
LOVE_POSTSHADER_BLURH:send("steps", args[2] or 2.0)
love.graphics.setShader(LOVE_POSTSHADER_BLURV)
love.graphics.draw(LOVE_POSTSHADER_BUFFER_RENDER)
love.graphics.setShader(LOVE_POSTSHADER_BLURH)
love.graphics.draw(LOVE_POSTSHADER_BUFFER_BACK)
love.graphics.setBlendMode("alpha")
love.graphics.setCanvas(LOVE_POSTSHADER_LAST_BUFFER)
love.graphics.setShader()
love.graphics.setColor(255, 255, 255)
love.graphics.draw(LOVE_POSTSHADER_BUFFER_BACK)
elseif shader == "chromatic" then
-- Chromatic Shader
love.graphics.setCanvas(LOVE_POSTSHADER_BUFFER_BACK)
love.graphics.setBlendMode("alpha")
LOVE_POSTSHADER_CHROMATIC_ABERRATION:send("redStrength", {args[1] or 0.0, args[2] or 0.0})
LOVE_POSTSHADER_CHROMATIC_ABERRATION:send("greenStrength", {args[3] or 0.0, args[4] or 0.0})
LOVE_POSTSHADER_CHROMATIC_ABERRATION:send("blueStrength", {args[5] or 0.0, args[6] or 0.0})
love.graphics.setCanvas(LOVE_POSTSHADER_BUFFER_BACK)
love.graphics.setShader(LOVE_POSTSHADER_CHROMATIC_ABERRATION)
love.graphics.draw(LOVE_POSTSHADER_BUFFER_RENDER)
love.graphics.setBlendMode("alpha")
love.graphics.setCanvas(LOVE_POSTSHADER_LAST_BUFFER)
love.graphics.setShader()
love.graphics.setColor(255, 255, 255)
love.graphics.draw(LOVE_POSTSHADER_BUFFER_BACK)
elseif shader == "4colors" then
-- 4 Color Shader
love.graphics.setCanvas(LOVE_POSTSHADER_BUFFER_BACK)
love.graphics.setBlendMode("alpha")
for i = 1, 4 do
for k = 1, 3 do
args[i][k] = args[i][k] / 255.0
end
end
LOVE_POSTSHADER_FOUR_COLOR:send("palette", args[1], args[2], args[3], args[4])
love.graphics.setShader(LOVE_POSTSHADER_FOUR_COLOR)
love.graphics.draw(LOVE_POSTSHADER_BUFFER_RENDER)
love.graphics.setBlendMode("alpha")
love.graphics.setCanvas(LOVE_POSTSHADER_LAST_BUFFER)
love.graphics.setShader()
love.graphics.setColor(255, 255, 255)
love.graphics.draw(LOVE_POSTSHADER_BUFFER_BACK)
elseif shader == "monochrom" then
-- Monochrom Shader
love.graphics.setCanvas(LOVE_POSTSHADER_BUFFER_BACK)
love.graphics.setBlendMode("alpha")
for i = 1, 3 do
if args[i] then
args[i] = args[i] / 255.0
end
end
LOVE_POSTSHADER_MONOCHROM:send("tint", {args[1] or 1.0, args[2] or 1.0, args[3] or 1.0})
LOVE_POSTSHADER_MONOCHROM:send("fudge", args[4] or 0.1)
LOVE_POSTSHADER_MONOCHROM:send("time", args[5] or love.timer.getTime())
love.graphics.setShader(LOVE_POSTSHADER_MONOCHROM)
love.graphics.draw(LOVE_POSTSHADER_BUFFER_RENDER)
love.graphics.setBlendMode("alpha")
love.graphics.setCanvas(LOVE_POSTSHADER_LAST_BUFFER)
love.graphics.setShader()
love.graphics.setColor(255, 255, 255)
love.graphics.draw(LOVE_POSTSHADER_BUFFER_BACK)
elseif shader == "scanlines" then
-- Scanlines Shader
love.graphics.setCanvas(LOVE_POSTSHADER_BUFFER_BACK)
love.graphics.setBlendMode("alpha")
LOVE_POSTSHADER_SCANLINES:send("screen", {love.window.getWidth(), love.window.getHeight()})
LOVE_POSTSHADER_SCANLINES:send("strength", args[1] or 2.0)
LOVE_POSTSHADER_SCANLINES:send("time", args[2] or love.timer.getTime())
love.graphics.setShader(LOVE_POSTSHADER_SCANLINES)
love.graphics.draw(LOVE_POSTSHADER_BUFFER_RENDER)
love.graphics.setBlendMode("alpha")
love.graphics.setCanvas(LOVE_POSTSHADER_LAST_BUFFER)
love.graphics.setShader()
love.graphics.setColor(255, 255, 255)
love.graphics.draw(LOVE_POSTSHADER_BUFFER_BACK)
elseif shader == "tiltshift" then
-- Blur Shader
love.graphics.setCanvas(LOVE_POSTSHADER_BUFFER_BACK)
love.graphics.setBlendMode("alpha")
LOVE_POSTSHADER_BLURH:send("screen", {love.window.getWidth(), love.window.getHeight()})
LOVE_POSTSHADER_BLURV:send("steps", args[1] or 2.0)
LOVE_POSTSHADER_BLURH:send("steps", args[1] or 2.0)
love.graphics.setShader(LOVE_POSTSHADER_BLURV)
love.graphics.draw(LOVE_POSTSHADER_BUFFER_RENDER)
love.graphics.setShader(LOVE_POSTSHADER_BLURH)
love.graphics.draw(LOVE_POSTSHADER_BUFFER_BACK)
LOVE_POSTSHADER_TILT_SHIFT:send("imgBuffer", LOVE_POSTSHADER_BUFFER_RENDER)
love.graphics.setShader(LOVE_POSTSHADER_TILT_SHIFT)
love.graphics.draw(LOVE_POSTSHADER_BUFFER_BACK)
love.graphics.setBlendMode("alpha")
love.graphics.setCanvas(LOVE_POSTSHADER_LAST_BUFFER)
love.graphics.setShader()
love.graphics.setColor(255, 255, 255)
love.graphics.draw(LOVE_POSTSHADER_BUFFER_BACK)
end
end end
love.postshader.draw = function() function post_shader:addEffect(shaderName, ...)
if LOVE_POSTSHADER_LAST_BUFFER then self.effects[shaderName] = {...}
love.graphics.setBackgroundColor(0, 0, 0)
love.graphics.setBlendMode("alpha")
love.graphics.setCanvas()
love.graphics.setShader()
love.graphics.setColor(255, 255, 255)
love.graphics.draw(LOVE_POSTSHADER_LAST_BUFFER)
end
end end
love.postshader.refreshScreenSize = function() function post_shader:removeEffect(shaderName)
LOVE_POSTSHADER_BUFFER_RENDER = love.graphics.newCanvas() self.effects[shaderName] = nil
LOVE_POSTSHADER_BUFFER_BACK = love.graphics.newCanvas()
end end
function post_shader:toggleEffect(shaderName, ...)
if self.effects[shaderName] ~= nil then
self:removeEffect(shaderName)
else
self:addEffect(shaderName, ...)
end
end
function post_shader:drawWith(canvas)
for shader, args in pairs(self.effects) do
if shader == "bloom" then
self:drawBloom(canvas, args)
elseif shader == "blur" then
self:drawBlur(canvas, args)
elseif shader == "chromatic" then
self:drawChromatic(canvas, args)
elseif shader == "4colors" then
self:draw4Color(canvas, args)
elseif shader == "monochrome" then
self:drawMonochome(canvas, args)
elseif shader == "scanlines" then
self:drawScanlines(canvas, args)
elseif shader == "tiltshift" then
self:drawTiltshift(canvas, args)
end
end
love.graphics.setBackgroundColor(0, 0, 0)
love.graphics.setBlendMode("alpha")
love.graphics.setCanvas()
love.graphics.setShader()
love.graphics.setColor(255, 255, 255)
love.graphics.draw(canvas)
end
function post_shader:drawBloom(canvas, args)
love.graphics.setCanvas(self.back_buffer)
love.graphics.setBlendMode("alpha")
post_shader.blurv:send("steps", args[1] or 2.0)
post_shader.blurh:send("steps", args[1] or 2.0)
love.graphics.setShader(post_shader.blurv)
love.graphics.draw(canvas)
love.graphics.setShader(post_shader.blurh)
love.graphics.draw(self.back_buffer)
love.graphics.setShader(post_shader.contrast)
love.graphics.draw(self.back_buffer)
love.graphics.setCanvas(canvas)
love.graphics.setShader()
love.graphics.setColor(255, 255, 255)
love.graphics.draw(canvas)
love.graphics.setBlendMode("additive")
love.graphics.setColor(255, 255, 255, (args[2] or 0.25) * 255)
love.graphics.draw(self.back_buffer)
love.graphics.setBlendMode("alpha")
end
function post_shader:drawBlur(canvas, args)
love.graphics.setCanvas(self.back_buffer)
love.graphics.setBlendMode("alpha")
post_shader.blurv:send("steps", args[1] or 2.0)
post_shader.blurh:send("steps", args[2] or 2.0)
love.graphics.setShader(post_shader.blurv)
love.graphics.draw(canvas)
love.graphics.setShader(post_shader.blurh)
love.graphics.draw(self.back_buffer)
love.graphics.setBlendMode("alpha")
love.graphics.setCanvas(canvas)
love.graphics.setShader()
love.graphics.setColor(255, 255, 255)
love.graphics.draw(self.back_buffer)
end
function post_shader:drawChromatic(canvas, args)
love.graphics.setCanvas(self.back_buffer)
love.graphics.setBlendMode("alpha")
post_shader.chromatic_aberration:send("redStrength", {args[1] or 0.0, args[2] or 0.0})
post_shader.chromatic_aberration:send("greenStrength", {args[3] or 0.0, args[4] or 0.0})
post_shader.chromatic_aberration:send("blueStrength", {args[5] or 0.0, args[6] or 0.0})
love.graphics.setCanvas(self.back_buffer)
love.graphics.setShader(post_shader.chromatic_aberration)
love.graphics.draw(canvas)
love.graphics.setBlendMode("alpha")
love.graphics.setCanvas(canvas)
love.graphics.setShader()
love.graphics.setColor(255, 255, 255)
love.graphics.draw(self.back_buffer)
end
function post_shader:draw4Color(canvas, args)
love.graphics.setCanvas(self.back_buffer)
love.graphics.setBlendMode("alpha")
local palette = {{unpack(args[1])}, {unpack(args[2])}, {unpack(args[3])}, {unpack(args[4])}}
for i = 1, 4 do
for k = 1, 3 do
palette[i][k] = args[i][k] / 255.0
end
end
self.four_color:send("palette", palette[1], palette[2], palette[3], palette[4])
love.graphics.setShader(self.four_color)
love.graphics.draw(canvas)
love.graphics.setBlendMode("alpha")
love.graphics.setCanvas(canvas)
love.graphics.setShader()
love.graphics.setColor(255, 255, 255)
love.graphics.draw(self.back_buffer)
end
function post_shader:drawMonochome(canvas, args)
love.graphics.setCanvas(self.back_buffer)
love.graphics.setBlendMode("alpha")
local tint = {args[1], args[2], args[3]}
for i = 1, 3 do
if tint[i] then
tint[i] = tint[i] / 255.0
end
end
post_shader.monochrome:send("tint", {tint[1] or 1.0, tint[2] or 1.0, tint[3] or 1.0})
post_shader.monochrome:send("fudge", args[4] or 0.1)
post_shader.monochrome:send("time", args[5] or love.timer.getTime())
love.graphics.setShader(post_shader.monochrome)
love.graphics.draw(canvas)
love.graphics.setBlendMode("alpha")
love.graphics.setCanvas(canvas)
love.graphics.setShader()
love.graphics.setColor(255, 255, 255)
love.graphics.draw(self.back_buffer)
end
function post_shader:drawScanlines(canvas, args)
love.graphics.setCanvas(self.back_buffer)
love.graphics.setBlendMode("alpha")
post_shader.scanlines:send("strength", args[1] or 2.0)
post_shader.scanlines:send("time", args[2] or love.timer.getTime())
love.graphics.setShader(post_shader.scanlines)
love.graphics.draw(canvas)
love.graphics.setBlendMode("alpha")
love.graphics.setCanvas(canvas)
love.graphics.setShader()
love.graphics.setColor(255, 255, 255)
love.graphics.draw(self.back_buffer)
end
function post_shader:drawTiltshift(canvas, args)
love.graphics.setCanvas(self.back_buffer)
love.graphics.setBlendMode("alpha")
post_shader.tilt_shift:send("imgBuffer", canvas)
love.graphics.setShader(post_shader.tilt_shift)
love.graphics.draw(self.back_buffer)
love.graphics.setBlendMode("alpha")
love.graphics.setCanvas(canvas)
love.graphics.setShader()
love.graphics.setColor(255, 255, 255)
love.graphics.draw(self.back_buffer)
end
return post_shader