diff --git a/CMakeLists.txt b/CMakeLists.txt index 54d24b9..157a489 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,9 +7,47 @@ set(GLFW_USE_WAYLAND ON) find_package(Vulkan REQUIRED) find_package(glfw3 3.3 REQUIRED) +# Suche nach dem glslc Compiler +find_program(GLSLC glslc) +if(NOT GLSLC) + message(FATAL_ERROR "glslc compiler not found. Please install the Vulkan SDK.") +endif() + +# Alle Shader-Dateien im Verzeichnis ./shaders sammeln +file(GLOB SHADER_FILES + "${CMAKE_CURRENT_SOURCE_DIR}/shaders/*.vert" + "${CMAKE_CURRENT_SOURCE_DIR}/shaders/*.frag" +) + +set(SPIRV_SHADERS "") +foreach(SHADER ${SHADER_FILES}) + # Dateiname extrahieren + get_filename_component(SHADER_NAME ${SHADER} NAME) + # Zielpfad für die kompilierten Shader im Build-Verzeichnis + set(SPIRV "${CMAKE_CURRENT_BINARY_DIR}/shaders/${SHADER_NAME}.spv") + + # Custom Command zum Kompilieren des Shaders + add_custom_command( + OUTPUT ${SPIRV} + COMMAND ${GLSLC} ${SHADER} -o ${SPIRV} + DEPENDS ${SHADER} + COMMENT "Compiling ${SHADER_NAME}" + ) + + list(APPEND SPIRV_SHADERS ${SPIRV}) +endforeach() + +# Custom Target, das alle Shader kompiliert +add_custom_target(compile_shaders ALL DEPENDS ${SPIRV_SHADERS}) + +# Das eigentliche Executable add_executable(vulkan_test main.cpp vulkan/vulkan_app.cpp - vulkan/vulkan_app.hpp) + vulkan/vulkan_app.hpp +) target_link_libraries(vulkan_test PRIVATE Vulkan::Vulkan glfw) + +# Sicherstellen, dass die Shader vor dem Bauen des Executables kompiliert werden +add_dependencies(vulkan_test compile_shaders) diff --git a/shaders/compile.sh b/shaders/compile.sh index f730c37..f42be71 100755 --- a/shaders/compile.sh +++ b/shaders/compile.sh @@ -1,2 +1,2 @@ -glslc shader.vert -o vert.spv -glslc shader.frag -o frag.spv +glslc shader.vert -o shader.vert.spv +glslc shader.frag -o shader.frag.spv diff --git a/shaders/frag.spv b/shaders/shader.frag.spv similarity index 100% rename from shaders/frag.spv rename to shaders/shader.frag.spv diff --git a/shaders/shader.vert b/shaders/shader.vert index 7489c81..0258077 100644 --- a/shaders/shader.vert +++ b/shaders/shader.vert @@ -9,7 +9,7 @@ vec2 positions[3] = vec2[]( ); vec3 colors[3] = vec3[]( - vec3(1.0, 0.0, 0.0), + vec3(0.0, 1.0, 1.0), vec3(0.0, 1.0, 0.0), vec3(0.0, 0.0, 1.0) ); diff --git a/shaders/shader.vert.spv b/shaders/shader.vert.spv new file mode 100644 index 0000000..c0df05b Binary files /dev/null and b/shaders/shader.vert.spv differ diff --git a/shaders/vert.spv b/shaders/vert.spv deleted file mode 100644 index cf7123f..0000000 Binary files a/shaders/vert.spv and /dev/null differ