cmake_minimum_required(VERSION 3.1) project(Graph) list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake) add_subdirectory(3rdparty) include(cmake/BuildShaders.cmake) include(cmake/CopyData.cmake) set(CMAKE_CXX_STANDARD 14) find_package(SDL2 REQUIRED) find_package(Vulkan REQUIRED) find_package(assimp REQUIRED) find_package(glm REQUIRED) if(CMAKE_BUILD_TYPE STREQUAL "Debug") add_definitions(-DDEBUG) endif() if(APPLE AND NOT TARGET SDL2::SDL2) add_library(SDL2::SDL2 UNKNOWN IMPORTED) set_target_properties(SDL2::SDL2 PROPERTIES IMPORTED_LOCATION "${SDL2_LIBDIR}/libSDL2.dylib" INTERFACE_INCLUDE_DIRECTORIES ${SDL2_INCLUDE_DIRS}) endif() # workaround for linking dbus/glib ourselves if(UNIX AND NOT APPLE) set_target_properties(SDL2::SDL2 PROPERTIES IMPORTED_LINK_INTERFACE_LIBRARIES_NOCONFIG "") endif() if(NOT TARGET assimp::assimp) add_library(assimp::assimp UNKNOWN IMPORTED) find_library(ASSIMP_IMPORTED_PATH ${ASSIMP_LIBRARIES} PATHS ${ASSIMP_LIBRARY_DIRS}) set_target_properties(assimp::assimp PROPERTIES IMPORTED_LOCATION ${ASSIMP_IMPORTED_PATH}) set_target_properties(assimp::assimp PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${ASSIMP_INCLUDE_DIRS}) endif() add_executable(Graph src/main.cpp src/renderer.cpp src/worldpass.cpp src/postpass.cpp src/dofpass.cpp src/imguipass.cpp src/skypass.cpp src/shadowpass.cpp src/config.cpp) target_compile_options(Graph PUBLIC -fno-exceptions -fno-rtti) target_link_libraries(Graph PUBLIC SDL2::SDL2 Vulkan::Vulkan assimp::assimp nlohmann::json stb::stb imgui::imgui) target_include_directories(Graph PUBLIC include PRIVATE ${GLM_INCLUDE_DIRS}) add_shaders(Graph shaders/mesh.vert shaders/mesh.frag shaders/post.vert shaders/post.frag shaders/dof.vert shaders/dof.frag shaders/imgui.vert shaders/imgui.frag shaders/sky.vert shaders/sky.frag shaders/shadow.vert) add_data(Graph data/suzanne.obj data/test.cim data/bokeh.png data/scene.obj data/tile.jpg data/graphics_presets.cfg)