Experimentation using Vulkan.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

77 lines
1.6 KiB

# Copyright 2022 Simon Boyé
cmake_minimum_required(VERSION 3.0.0)
project(vk_expe VERSION 0.1.0)
find_package(Eigen3 3.3 REQUIRED)
find_package(Vulkan REQUIRED)
find_package(SDL2 2.0.18 REQUIRED)
include(CTest)
enable_testing()
function(add_shaders TARGET)
foreach(SRC ${ARGN})
set(DST "${CMAKE_CURRENT_BINARY_DIR}/${SRC}.spv")
list(APPEND SPVS "${DST}")
get_filename_component(DST_DIR "${DST}" DIRECTORY)
file(MAKE_DIRECTORY "${DST_DIR}")
add_custom_command(
OUTPUT "${DST}"
COMMAND "$ENV{VULKAN_SDK}/bin/glslc" "${CMAKE_CURRENT_SOURCE_DIR}/${SRC}" -o "${DST}"
MAIN_DEPENDENCY "${CMAKE_CURRENT_SOURCE_DIR}/${SRC}"
)
endforeach()
add_custom_target(
${TARGET}_shaders
DEPENDS ${SPVS}
)
add_dependencies(${TARGET} ${TARGET}_shaders)
endfunction()
add_executable(vk_expe
src/core/math.cpp
src/core/utils.cpp
src/core/Logger.cpp
src/vk/Context.cpp
src/vk/Fence.cpp
src/vk/Semaphore.cpp
src/vk/Framebuffer.cpp
src/vk/Swapchain.cpp
src/vk/Memory.cpp
src/vk/Buffer.cpp
src/vk/RenderPass.cpp
src/main.cpp
src/Simplex.cpp
src/Planet.cpp
src/VkExpe.cpp
src/VulkanTutorial.cpp
)
add_shaders(vk_expe
shaders/shader.vert
shaders/shader.geom
shaders/shader.frag
)
target_include_directories(vk_expe
PRIVATE src
)
target_compile_features(vk_expe
PUBLIC cxx_std_17
)
target_link_libraries(vk_expe
PUBLIC Eigen3::Eigen
PUBLIC Vulkan::Vulkan
PUBLIC SDL2::SDL2
)
set(CPACK_PROJECT_NAME ${PROJECT_NAME})
set(CPACK_PROJECT_VERSION ${PROJECT_VERSION})
include(CPack)