From 73fcd0be6b848280b7c626ad16f88aca142ee2f8 Mon Sep 17 00:00:00 2001 From: Chewico Date: Tue, 24 Mar 2026 12:48:37 +0100 Subject: [PATCH] Shaders are compiled by CMake --- graphics/CMakeLists.txt | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/graphics/CMakeLists.txt b/graphics/CMakeLists.txt index 069f368..235b5ec 100644 --- a/graphics/CMakeLists.txt +++ b/graphics/CMakeLists.txt @@ -4,6 +4,34 @@ file(GLOB_RECURSE GRAPHICS_SOURCES CONFIGURE_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp ) +set(SHADER_SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/shaders) +set(SHADER_OUT_DIR ${CMAKE_BINARY_DIR}/shaders) + +file(GLOB_RECURSE SHADERS + ${SHADER_SRC_DIR}/*.vert + ${SHADER_SRC_DIR}/*.frag +) + +find_program(GLSLC glslc REQUIRED) +set(SPIRV_SHADERS) + +foreach(SHADER ${SHADERS}) + get_filename_component(FILE_NAME ${SHADER} NAME) + set(SPIRV_FILE ${SHADER_OUT_DIR}/${FILE_NAME}.spv) + + add_custom_command( + OUTPUT ${SPIRV_FILE} + COMMAND ${CMAKE_COMMAND} -E make_directory ${SHADER_OUT_DIR} + COMMAND ${GLSLC} ${SHADER} -o ${SPIRV_FILE} + DEPENDS ${SHADER} + COMMENT "Compiling ${FILE_NAME} with glslc" + VERBATIM + ) + + list(APPEND SPIRV_SHADERS ${SPIRV_FILE}) +endforeach() + +add_custom_target(Shaders ALL DEPENDS ${SPIRV_SHADERS}) add_library(deerith_graphics ${GRAPHICS_SOURCES}) target_include_directories(deerith_graphics @@ -18,6 +46,8 @@ find_package(glfw3 REQUIRED) find_package(glm REQUIRED) find_package(fmt REQUIRED) +add_dependencies(deerith_graphics Shaders) + target_link_libraries(deerith_graphics PUBLIC deerith::core