diff options
| author | Alexander M Pickering <alex@cogarr.net> | 2025-01-09 18:11:46 -0600 |
|---|---|---|
| committer | Alexander M Pickering <alex@cogarr.net> | 2025-01-09 18:11:46 -0600 |
| commit | decb72f936060a65bff18e9cbf33642ea3a71cd0 (patch) | |
| tree | 3b07bb1bfc1e4f0e39ec4ff8e0c243cd4fab0d61 /src/shader_shim.moon | |
| parent | 726876d42270f8974fd495be91127ea7585472ff (diff) | |
| download | ggj25-decb72f936060a65bff18e9cbf33642ea3a71cd0.tar.gz ggj25-decb72f936060a65bff18e9cbf33642ea3a71cd0.tar.bz2 ggj25-decb72f936060a65bff18e9cbf33642ea3a71cd0.zip | |
Work
Diffstat (limited to 'src/shader_shim.moon')
| -rw-r--r-- | src/shader_shim.moon | 20 |
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 |
