-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.lua
69 lines (59 loc) · 2.1 KB
/
main.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
require "keys"
require "debugoverlay"
require "mathlib"
require "load_shaders"
function love.load()
dimensions = {}
dimensions.x, dimensions.y = love.graphics.getDimensions()
scale = {}
scale.x = 2
scale.y = 2
offset = {}
offset.x = 0
offset.y = 0
mouse = {}
mouse.x, mouse.y = love.mouse.getX(), love.mouse.getY()
value = 1
iterations = 1000
fractaltype = 0
petals = 0
rainbowssss = 0
storeFrame = love.graphics.newCanvas(dimensions.x, dimensions.y)
load_shaders()
shader.mandelbrot:send("rainbowssss", rainbowssss)
end
function love.update(dt)
deltatime = dt
runtime = runtime and runtime + deltatime or 0
mouse.x, mouse.y = love.mouse.getX(), love.mouse.getY()
if dimensions.x ~= love.graphics.getWidth() or dimensions.y ~= love.graphics.getHeight() then
dimensions.x, dimensions.y = love.graphics.getDimensions()
storeFrame = love.graphics.newCanvas(dimensions.x, dimensions.y)
end
if runtime%0.05+dt > 0.05 then
iterations = iterations > 0 and iterations + animate or 1
--love.graphics.captureScreenshot("Mandlebrot_" .. runtime .. ".png")
end
shader.mandelbrot:send("dimensions", {dimensions.x, dimensions.y})
shader.mandelbrot:send("scale", {scale.x, scale.y})
shader.mandelbrot:send("offset", {offset.x, offset.y})
shader.mandelbrot:send("mousecoords", {( mouse.x/dimensions.x - 0.5)*scale.x*2 - offset.x, ( mouse.y/dimensions.x - 0.5*(dimensions.y/dimensions.x) )*scale.y*2*-1 + offset.y * (dimensions.y/dimensions.x)} )
shader.mandelbrot:send("iterations", iterations)
shader.mandelbrot:send("type", fractaltype)
shader.mandelbrot:send("petals", petals)
keyIsDown()
if runtime%1 + dt > 1 then
load_shaders()
end
end
function love.draw()
storeFrame:renderTo(function()
love.graphics.setShader(shader.mandelbrot)
love.graphics.rectangle("fill", 0, 0, dimensions.x, dimensions.y)
love.graphics.setShader()
end)
love.graphics.draw(storeFrame, 0, 0, 0, 1, 1)
if showdebug then
debugoverlay()
end
end