-- Sometimes we want to compile shaders, use the syntax -- {variable} to adress a variable win = require("window") inputs = { "@width": win.width "@height": win.height } shaders = setmetatable({},{ __index:(self, key) -> vert_name = "shaders/" .. key .. ".vert" frag_name = "shaders/" .. key .. ".frag" vert = assert(am.load_string(vert_name), "Failed to find " .. vert_name) frag = assert(am.load_string(frag_name), "Failed to find " .. frag_name) vert_subbed = vert\gsub("@%b{}",(n) -> tostring(inputs[n])) frag_subbed = frag\gsub("@%b{}",(n) -> tostring(inputs[n])) succ, program = pcall(am.program, vert_subbed, frag_subbed) if not succ error(string.format("Failed compiling shader %q: %s vertex shader: %s fragment shader: %s", key, program, vert_subbed, frag_subbed)) am.use_program(am.program(vert_subbed, frag_subbed)) }) shaders