From 711a7df43bd46e713e1ce540bceeb21c255b1473 Mon Sep 17 00:00:00 2001 From: bjorn Date: Tue, 7 Jun 2022 21:19:42 -0700 Subject: [PATCH] CMake can compile shaders; --- CMakeLists.txt | 24 ++++++++++++++++++++++++ Tupfile.lua | 2 +- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1cc6a738..1e8e946c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -460,6 +460,30 @@ if(LOVR_ENABLE_GRAPHICS) target_compile_definitions(lovr PRIVATE LOVR_WGPU) target_sources(lovr PRIVATE src/core/gpu_webgpu.c) endif() + + add_custom_target(compile_shaders ALL) + add_dependencies(lovr compile_shaders) + + function(compile_shaders) + file(GLOB shader_files "etc/shaders/*.${ARGV0}") + foreach(shader_file ${shader_files}) + string(REGEX MATCH "([^\/]+)\.${ARGV0}" shader ${shader_file}) + string(REPLACE ".${ARGV0}" "" shader ${shader}) + add_custom_command(TARGET compile_shaders POST_BUILD + COMMAND + glslangValidator + --quiet + --target-env vulkan1.1 + --vn lovr_shader_${shader}_${ARGV0} + -o ${shader_file}.h + ${shader_file} + ) + endforeach() + endfunction() + + compile_shaders("vert") + compile_shaders("frag") + compile_shaders("comp") else() target_compile_definitions(lovr PRIVATE LOVR_DISABLE_GRAPHICS) endif() diff --git a/Tupfile.lua b/Tupfile.lua index 23ff2681..cdee6c17 100644 --- a/Tupfile.lua +++ b/Tupfile.lua @@ -452,7 +452,7 @@ comp = 'etc/shaders/*.comp' function compileShaders(stage) pattern = 'etc/shaders/*.' .. stage - tup.foreach_rule(pattern, 'glslangValidator --target-env vulkan1.1 --vn lovr_shader_%B_' .. stage .. ' -o %o %f', '%f.h') + tup.foreach_rule(pattern, 'glslangValidator --quiet --target-env vulkan1.1 --vn lovr_shader_%B_' .. stage .. ' -o %o %f', '%f.h') end compileShaders('vert')