summaryrefslogtreecommitdiff
path: root/src/shader_shim.moon
diff options
context:
space:
mode:
Diffstat (limited to 'src/shader_shim.moon')
-rw-r--r--src/shader_shim.moon20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/shader_shim.moon b/src/shader_shim.moon
new file mode 100644
index 0000000..05e11c1
--- /dev/null
+++ b/src/shader_shim.moon
@@ -0,0 +1,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