From c39ff632b46c179709101c5b50a061ebd723689f Mon Sep 17 00:00:00 2001 From: Alexander M Pickering Date: Sun, 26 Jan 2025 14:31:52 -0600 Subject: final commit --- src/shader_shim.moon | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) (limited to 'src/shader_shim.moon') 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 -- cgit v1.2.3-70-g09d2