summaryrefslogtreecommitdiff
path: root/src/shader_shim.moon
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