diff options
| author | Alexander M Pickering <alex@cogarr.net> | 2025-01-26 14:31:52 -0600 |
|---|---|---|
| committer | Alexander M Pickering <alex@cogarr.net> | 2025-01-26 14:31:52 -0600 |
| commit | c39ff632b46c179709101c5b50a061ebd723689f (patch) | |
| tree | 23060311477b996cd11c50851e7dfb889d339346 /src/shader_shim.moon | |
| parent | c1030d5ddbf34b1b19fa7fd169f3cf5a7b7f98f3 (diff) | |
| download | ggj25-c39ff632b46c179709101c5b50a061ebd723689f.tar.gz ggj25-c39ff632b46c179709101c5b50a061ebd723689f.tar.bz2 ggj25-c39ff632b46c179709101c5b50a061ebd723689f.zip | |
final commit
Diffstat (limited to 'src/shader_shim.moon')
| -rw-r--r-- | src/shader_shim.moon | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/src/shader_shim.moon b/src/shader_shim.moon index 76e0aec..77ad5a2 100644 --- a/src/shader_shim.moon +++ b/src/shader_shim.moon @@ -6,17 +6,21 @@ inputs = { "@height": win.height } +verts, frags = {}, {} 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)) + if not (verts[key] and frags[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)) + verts[key] = vert_subbed + frags[key] = frag_subbed + am.use_program(am.program(verts[key], frags[key])) }) shaders |
