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 17) find_package(SDL2 REQUIRED) find_package(Vulkan REQUIRED) find_package(GLM REQUIRED) find_package(OpenAL REQUIRED) if(CMAKE_BUILD_TYPE STREQUAL "Debug") add_definitions(-DDEBUG) endif() set(ENGINE_SRC src/renderer.cpp src/worldpass.cpp src/postpass.cpp src/dofpass.cpp src/skypass.cpp src/shadowpass.cpp src/config.cpp src/stringutils.cpp src/animationsystem.cpp src/worldmanager.cpp src/assetmanager.cpp src/entityparser.cpp src/smaapass.cpp src/debugpass.cpp src/audiosystem.cpp) if(CMAKE_BUILD_TYPE STREQUAL "Debug") set(ENGINE_SRC ${ENGINE_SRC} src/imguipass.cpp) endif() add_library(Engine ${ENGINE_SRC}) target_compile_options(Engine PUBLIC -fno-exceptions) target_link_libraries(Engine PUBLIC SDL2::Main Vulkan::Vulkan assimp nlohmann::json stb::stb SMAA::SMAA opus OpenAL::OpenAL) if(CMAKE_BUILD_TYPE STREQUAL "Debug") target_link_libraries(Engine PUBLIC imgui::imgui) endif() target_include_directories(Engine PUBLIC include ${GLM_INCLUDE_DIRS}) add_executable(ITER src/main.cpp) target_link_libraries(ITER PRIVATE Engine) add_shaders(ITER 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 shaders/edge.vert shaders/edge.frag shaders/blend.vert shaders/blend.frag shaders/sobel.vert shaders/sobel.frag) add_data(ITER data/suzanne.obj data/test.cim data/bokeh.png data/scene.obj data/tile.jpg data/graphics_presets.cfg data/test.world data/test.material data/empty.world data/player.obj data/sphere.obj data/matpreview.world data/basic.material data/maticon.png data/music.opus) add_subdirectory(tools)