blob: 05e11c118ce94b3985514a54e2a48a0860f46480 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
-- 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 = assert(am.load_string("shaders/" .. key .. ".vert"))
frag = assert(am.load_string("shaders/" .. key .. ".frag"))
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
|