Skip to content

Instantly share code, notes, and snippets.

@zorggn
Created January 23, 2016 22:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save zorggn/447e1aa4113e34dd2283 to your computer and use it in GitHub Desktop.
Save zorggn/447e1aa4113e34dd2283 to your computer and use it in GitHub Desktop.
Simple circular fading shader, uses screen_coords instead of texture_coords.
local w,h
local quad
local time, value
local mask_shader
function love.load()
w,h = love.graphics.getDimensions()
time = 0.0
value = math.sin(time)
quad = love.graphics.newQuad(0,0,w,h,w,h)
mask_shader = love.graphics.newShader[[
extern number time;
extern number width;
extern number height;
vec4 effect(vec4 color, Image texture, vec2 texture_coords, vec2 screen_coords) {
number x = (width / 2) - screen_coords.x;
number y = (height / 2) - screen_coords.y;
number xx = x * x;
number yy = y * y;
number sum = xx + yy;
number dist = sqrt(sum);
if(dist > time * min(width, height)){
return color;
}
else
{
discard;
}
}
]]
mask_shader:send("time", 0.0)
mask_shader:send("width", w)
mask_shader:send("height", h)
end
function love.update(dt)
dt = dt / 2
time = time + dt
value = (math.sin(time)+1)/2
end
function love.draw()
love.graphics.setColor(255,0,0)
love.graphics.rectangle('fill',0,0,w/2,h/2)
love.graphics.setColor(0,255,0)
love.graphics.rectangle('fill',w/2,0,w,h/2)
love.graphics.setColor(0,0,255)
love.graphics.rectangle('fill',0,h/2,w/2,h)
love.graphics.setColor(255,255,255)
love.graphics.rectangle('fill',w/2,h/2,w,h)
love.graphics.setShader(mask_shader)
mask_shader:send("time", value)
love.graphics.setColor(0,0,0,255)
love.graphics.rectangle('fill',0,0,w,h)
love.graphics.setShader()
love.graphics.print(value,0,0)
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment