Added shader compilation to cmake

This commit is contained in:
Ano-sys
2025-04-03 21:38:03 +02:00
parent 43ef6684e9
commit b0d5f9014f
6 changed files with 42 additions and 4 deletions
+39 -1
View File
@@ -7,9 +7,47 @@ set(GLFW_USE_WAYLAND ON)
find_package(Vulkan REQUIRED) find_package(Vulkan REQUIRED)
find_package(glfw3 3.3 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 add_executable(vulkan_test
main.cpp main.cpp
vulkan/vulkan_app.cpp vulkan/vulkan_app.cpp
vulkan/vulkan_app.hpp) vulkan/vulkan_app.hpp
)
target_link_libraries(vulkan_test PRIVATE Vulkan::Vulkan glfw) 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)
+2 -2
View File
@@ -1,2 +1,2 @@
glslc shader.vert -o vert.spv glslc shader.vert -o shader.vert.spv
glslc shader.frag -o frag.spv glslc shader.frag -o shader.frag.spv
+1 -1
View File
@@ -9,7 +9,7 @@ vec2 positions[3] = vec2[](
); );
vec3 colors[3] = vec3[]( 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, 1.0, 0.0),
vec3(0.0, 0.0, 1.0) vec3(0.0, 0.0, 1.0)
); );
Binary file not shown.
BIN
View File
Binary file not shown.