From b0d5f9014fab19f7c42ab7d4cc1fe29003c2e723 Mon Sep 17 00:00:00 2001 From: Ano-sys Date: Thu, 3 Apr 2025 21:38:03 +0200 Subject: [PATCH] Added shader compilation to cmake --- CMakeLists.txt | 40 +++++++++++++++++++++++++- shaders/compile.sh | 4 +-- shaders/{frag.spv => shader.frag.spv} | Bin shaders/shader.vert | 2 +- shaders/shader.vert.spv | Bin 0 -> 1480 bytes shaders/vert.spv | Bin 1504 -> 0 bytes 6 files changed, 42 insertions(+), 4 deletions(-) rename shaders/{frag.spv => shader.frag.spv} (100%) create mode 100644 shaders/shader.vert.spv delete mode 100644 shaders/vert.spv 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 0000000000000000000000000000000000000000..c0df05b1360abeccb85297500c03ab1ebaa10464 GIT binary patch literal 1480 zcmYk5?N8J|5XP4~dLYP~y!nFI0~G~4QNfrPH3msFxdaS}Uzl1)nQ(iWqB@;@{2 zukwqD&#&!XZZFfB=b4$^nc2N&V|&V&2{UWv%#o?ql4*!B;##E+y64?aUi3SMM+ZdA zn`RkE%z~LN?MZzvdo~5MB@ZM7H}z{s|55OynK3~(3{Fpj?nxL8hhbj)Na8TDX&m-# z7Dt8s785r;7H88ax$2Jxc#0T5&oiF6t}}*%+!l6_=CX-dmyQO>AQR!KmwUn&Nq81# zU*fEYzYB`3cx-(27GkH$czP^(n-=Hxr>Y~T^3j)k$B7+&uzAr-qj=XWCI`+J z=4|$Ze_dnl6OMfJoP_1@dMIZB268xhgI2du7|bS4^IzZ-rsl+H-(M)rFvRr?kyo|hDSU8c8#46o_+5~$U%sq zt_^9<;4a;)@5<&4Fl+7+KisA)-j2(`hj0hJG`-=cesEg?$DM9T`;rL>=YY2*Eb{M5 zY~>d5^9GhhQ1Fa@Z>Wa@IO`XO7b70Y-^(c literal 0 HcmV?d00001 diff --git a/shaders/vert.spv b/shaders/vert.spv deleted file mode 100644 index cf7123fbe1f034fcf872b733a735c8a4efd9c7f3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1504 zcmYk5ZBNud6orRfx*!OM2>60nUc?u0MFnDF)EG3?WD_tXd~G(}N+zk@O66FYiu^P-@u*JZ3F?aDVc^abjOR}^*Rec7t&^?*uDZdsTY;mcUNHNK*l`ZeJhd1~N% zVfN;G@ULpjeZowB?r%b zYcjq?9UA(*E6?8CvAYBAl()eh+><8{x30*ScQxcN?q)-tnSB{^fj4Dv-1U~cFPo6D z4|rR~qW-=-Ie6;9J2glCpr4#8b{zD+OS{Tg%D)Ps4SXvn{ir=I+g-U4rsnOSK5 zit*&%2=S)4TVn2pb9*f{y*-f8*E^}{>5&XQJR17r{{#NBH0-%sb8=&DujZKfR8`FJ yM240e_srd~53@d%ah{wReSy)tzMd;~eKG5SjNakVF!!Mho_fv({7