73 lines
1.6 KiB
Lua
73 lines
1.6 KiB
Lua
local _font = require 'font'
|
|
|
|
local global_parameters = require "global_parameters"
|
|
|
|
local parameter_order = {
|
|
{"ssao", "bias"},
|
|
{"ssao", "radius"},
|
|
{"ssao", "occlusion_exponent"},
|
|
{"ssao", "occlusion_offset"},
|
|
|
|
{"ssao", "bias1"},
|
|
{"ssao", "radius1"},
|
|
{"ssao", "occlusion_exponent1"},
|
|
{"ssao", "occlusion_offset1"},
|
|
}
|
|
|
|
local current_param_ix = 0
|
|
|
|
local get_max_param_ix = function()
|
|
return #parameter_order
|
|
end
|
|
|
|
local max_param_ix = get_max_param_ix()
|
|
|
|
local get_current_param_keys = function()
|
|
local params = parameter_order[current_param_ix + 1]
|
|
return params[1], params[2]
|
|
end
|
|
|
|
local update_parameter = function(f)
|
|
key, subkey = get_current_param_keys()
|
|
local value = global_parameters[key][subkey]
|
|
local new_value = f(value)
|
|
print(value, new_value)
|
|
global_parameters[key][subkey] = new_value
|
|
end
|
|
|
|
local update_current_ix = function(f)
|
|
local ix = f(current_param_ix)
|
|
if ix < 0 then
|
|
ix = max_param_ix - 1
|
|
end
|
|
if ix >= max_param_ix then
|
|
ix = 0
|
|
end
|
|
current_param_ix = ix
|
|
end
|
|
|
|
local draw = function(font)
|
|
local init_x = 10
|
|
local x = init_x
|
|
local y = 10
|
|
|
|
for param_ix, params in ipairs(parameter_order) do
|
|
local prefix = " "
|
|
if (param_ix - 1) == current_param_ix then
|
|
prefix = "> "
|
|
end
|
|
local key = params[1]
|
|
local subkey = params[2]
|
|
local value = global_parameters[key][subkey]
|
|
local line = prefix .. key .. "." .. subkey .. ": " .. tostring(value)
|
|
_font.draw_string(font, line, x, y)
|
|
y = y + font.glyph_height
|
|
end
|
|
end
|
|
|
|
return {
|
|
update_parameter = update_parameter,
|
|
update_current_ix = update_current_ix,
|
|
draw = draw,
|
|
}
|