Rework API graphique Vulkan - EnTT pour ECS + Chargement modèle 3D assimp + SDL3 pour events input et fenetre + mesh texture camera transform ok + attention tous les assets nouveaus ne sont pas commités et il y a du code test en dur dans scene addentity + restructuration globale
This commit is contained in:
189
CMakeLists.txt
189
CMakeLists.txt
@@ -39,16 +39,6 @@ if(UNIX)
|
||||
# endif()
|
||||
# ---------------------------------------
|
||||
|
||||
# --------- Inclusion de Vulkan ----------
|
||||
# Vulkan Lib pour charger Vulkan, fournit avec les drivers, donc se trouve toute seul.
|
||||
# find_package(Vulkan REQUIRED)
|
||||
# if(VULKAN_FOUND)
|
||||
# message("lib OpenGL Trouvé")
|
||||
# else()
|
||||
# message("lib OpenGL Introuvable")
|
||||
# endif()
|
||||
# ---------------------------------------
|
||||
|
||||
# ---------- Inclusion de GLM -----------
|
||||
# GLM Lib pour mathématique, en mode header only.
|
||||
set(GLMlib_DIR ./lib/CMake/Linux)
|
||||
@@ -208,12 +198,12 @@ if(UNIX)
|
||||
|
||||
# ---------- Inclusion de ASSIMP -----------
|
||||
# Assimp Lib import modèles 3D.
|
||||
# find_package(assimp REQUIRED)
|
||||
# if(assimp_FOUND)
|
||||
# message("lib ASSIMP Trouvé")
|
||||
# else()
|
||||
# message("lib ASSIMP Introuvable")
|
||||
# endif()
|
||||
find_package(assimp REQUIRED)
|
||||
if(assimp_FOUND)
|
||||
message("lib ASSIMP Trouvé")
|
||||
else()
|
||||
message("lib ASSIMP Introuvable")
|
||||
endif()
|
||||
# ---------------------------------------
|
||||
|
||||
# ---------- Inclusion de ODE -----------
|
||||
@@ -265,17 +255,158 @@ else()
|
||||
message("lib Catch2 Introuvable")
|
||||
endif()
|
||||
|
||||
# ---------- Inclusion de SDL3-----------
|
||||
# la sdl3
|
||||
|
||||
find_package(SDL3 REQUIRED)
|
||||
# These tests can use the Catch2-provided main
|
||||
if(SDL3_found)
|
||||
message("lib Catch2 Trouvé")
|
||||
else()
|
||||
message("lib Catch2 Introuvable")
|
||||
endif()
|
||||
|
||||
# ---------- Inclusion de Vulkan-----------
|
||||
# vulkan
|
||||
# --------- Inclusion de Vulkan ----------
|
||||
# Vulkan Lib pour charger Vulkan, fournit avec les drivers, donc se trouve toute seul.
|
||||
find_package(Vulkan REQUIRED)
|
||||
if(VULKAN_FOUND)
|
||||
message("lib OpenGL Trouvé")
|
||||
else()
|
||||
message("lib OpenGL Introuvable")
|
||||
endif()
|
||||
# ---------------------------------------
|
||||
|
||||
# ------- Inclusion de SDL2_IMAGE --------
|
||||
# SDL2_IMAGE Lib pour charger une image
|
||||
# Les autre plateforme (Linux...) ont un installateur de paquet, la lib se trouve toute seul.
|
||||
find_package(SDL3_image QUIET)
|
||||
# #find_library(SDL2_image libSDL2_image)
|
||||
|
||||
if(SDL3_image_FOUND)
|
||||
message("lib SDL3_IMAGE Trouvé")
|
||||
else()
|
||||
message("lib SDL3_IMAGE Introuvable")
|
||||
endif()
|
||||
# ---------------------------------------
|
||||
|
||||
# ------- Inclusion de SDL3_TTF --------
|
||||
#SDL3_IMAGE Lib pour charger une police d'écriture.
|
||||
#set(SDL3_ttf_DIR ./lib/CMake/Linux)
|
||||
# Les autre plateforme (Linux...) ont un installateur de paquet, la lib se trouve toute seul.
|
||||
find_package(SDL3_ttf QUIET)
|
||||
#find_library(SDL2_ttf libSDL2_ttf)
|
||||
if(SDL3_ttf_FOUND)
|
||||
message("lib SDL3_TTF Trouvé")
|
||||
else()
|
||||
message("lib SDL3_TTF Introuvable")
|
||||
endif()
|
||||
# ---------------------------------------
|
||||
|
||||
# ------- Inclusion de Spirv-cross --------
|
||||
#Spirv-cross pour metadonnees shader spirv
|
||||
# set(spirv_cross_core_DIR ./lib/CMake/Linux/spirv-crossConf)
|
||||
# set(spirv_cross_glsl_DIR ./lib/CMake/Linux/spirv-crossConf)
|
||||
# Les autre plateforme (Linux...) ont un installateur de paquet, la lib se trouve toute seul.
|
||||
# find_package(spirv_cross_core QUIET)
|
||||
# find_package(spirv_cross_glsl QUIET)
|
||||
|
||||
#find_library(SDL2_ttf libSDL2_ttf)
|
||||
# if(spirv_cross_core_FOUND AND spirv_cross_glsl_FOUND)
|
||||
# message("lib spirv_cross Trouvé")
|
||||
# else()
|
||||
# message("lib spirv_cross Introuvable")
|
||||
# endif()
|
||||
# ---------------------------------------
|
||||
|
||||
# ------- Inclusion de Spirv-cross --------
|
||||
#Spirv-cross pour metadonnees shader spirv
|
||||
set(spirvreflectlib_DIR ./lib/CMake/Linux/)
|
||||
# Les autre plateforme (Linux...) ont un installateur de paquet, la lib se trouve toute seul.
|
||||
# find_package(spirv_cross_core QUIET)
|
||||
find_package(spirvreflectlib QUIET)
|
||||
|
||||
if(spirvreflectlib_FOUND)
|
||||
message("lib spirvReflect Trouvé")
|
||||
else()
|
||||
message("lib spirvReflect Introuvable")
|
||||
endif()
|
||||
# ---------------------------------------
|
||||
add_library(spirv-reflect STATIC ${SPIRV_EXT_SRC})
|
||||
|
||||
# ------- Inclusion de JSONfMC++ --------
|
||||
# JSONfMC++ Lib pour gestion fichier JSON, en mode header only.
|
||||
set(VulkanMemoryAllocatorlib_DIR ./lib/CMake/Linux)
|
||||
find_package(VulkanMemoryAllocatorlib REQUIRED)
|
||||
|
||||
if(VulkanMemoryAllocatorlib_FOUND)
|
||||
message("lib VulkanMemoryAllocator Trouvé")
|
||||
else()
|
||||
message("lib VulkanMemoryAllocator Introuvable")
|
||||
endif()
|
||||
# ---------------------------------------
|
||||
|
||||
endif()
|
||||
|
||||
|
||||
# Chemin executable
|
||||
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "bin/${CMAKE_BUILD_TYPE}")
|
||||
set(PATH_TO_SHADER_BUILD_TYPE "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_RUNTIME_OUTPUT_DIRECTORY}")
|
||||
function(compile_slang_shaders SLANG_FILES OUTPUT_DIR)
|
||||
set(SLANG_COMPILER ${CMAKE_CURRENT_SOURCE_DIR}/lib/All/slang/bin/slangc)
|
||||
set(GENERATED_SPV_FILES "")
|
||||
set (SHADERS_DIR ${PATH_TO_SHADER_BUILD_TYPE}/assets/shaders/slang)
|
||||
set (ENTRY_POINTS -entry vertMain -entry fragMain)
|
||||
|
||||
foreach(SLANG_FILE ${SLANG_FILES})
|
||||
get_filename_component(FILE_NAME ${SLANG_FILE} NAME_WE)
|
||||
|
||||
# Un seul fichier de sortie par shader source
|
||||
set(OUTPUT_FILE "${OUTPUT_DIR}/${FILE_NAME}.spv")
|
||||
|
||||
# Compiler tout le shader en un seul SPIR-V
|
||||
add_custom_command(
|
||||
OUTPUT ${OUTPUT_FILE}
|
||||
COMMAND ${SLANG_COMPILER}
|
||||
${SLANG_FILE}
|
||||
-target spirv
|
||||
-profile spirv_1_4
|
||||
-emit-spirv-directly
|
||||
-o ${OUTPUT_FILE}
|
||||
DEPENDS ${SLANG_FILE}
|
||||
COMMENT "Compiling Slang shader ${FILE_NAME} → ${OUTPUT_FILE}"
|
||||
VERBATIM
|
||||
)
|
||||
|
||||
list(APPEND GENERATED_SPV_FILES ${OUTPUT_FILE})
|
||||
endforeach()
|
||||
|
||||
set(GENERATED_SPV_FILES ${GENERATED_SPV_FILES} PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
# On indique que l'on veut un exécutable nommé PROJECT compilé à partir des fichiers décrits par les variables SRCS et HEADERS.
|
||||
|
||||
add_library(Engine SHARED ${SRCS_ENGINE} ${SRCS_EXTERNAL_GLAD})
|
||||
add_executable(${PROJECT} ${SRCS})
|
||||
add_dependencies(${PROJECT} Engine)
|
||||
|
||||
add_executable(CosmicTest ${SRCS_TESTS})
|
||||
|
||||
# On indique que l'on veut un exécutable nommé PROJECT compilé à partir des fichiers décrits par les variables SRCS et HEADERS.
|
||||
file(GLOB_RECURSE SLANG_SHADERS "${PATH_TO_SHADER_BUILD_TYPE}/assets/shaders/slang/*.slang")
|
||||
compile_slang_shaders("${SLANG_SHADERS}" "${PATH_TO_SHADER_BUILD_TYPE}/assets/shaders/slang/spv")
|
||||
|
||||
message(STATUS "GENERATED_SPV_FILES = ${GENERATED_SPV_FILES}")
|
||||
|
||||
# Créer la target ICI, au niveau global
|
||||
if(GENERATED_SPV_FILES)
|
||||
add_custom_target(CompileSlangShaders ALL
|
||||
DEPENDS ${GENERATED_SPV_FILES}
|
||||
)
|
||||
endif()
|
||||
|
||||
add_dependencies(${PROJECT} Engine)
|
||||
add_dependencies(Engine CompileSlangShaders)
|
||||
|
||||
|
||||
target_link_libraries(CosmicTest PRIVATE Catch2::Catch2WithMain Engine)
|
||||
|
||||
# Fichier include
|
||||
@@ -295,9 +426,12 @@ include_directories(${GLM_INCLUDE_DIRS})
|
||||
include_directories(${JSONFMCPP_INCLUDE_DIRS})
|
||||
#ENTT
|
||||
include_directories(${ENTT_INCLUDE_DIRS})
|
||||
#include_directories(${SPIRV_INCLUDE_DIRS})
|
||||
include_directories(${SPIRV_REFLECT_INCLUDE_DIRS})
|
||||
include_directories(${VMA_INCLUDE_DIRS})
|
||||
|
||||
# ASSIMP
|
||||
#include_directories(${ASSIMP_INCLUDE_DIRS})
|
||||
include_directories(${ASSIMP_INCLUDE_DIRS})
|
||||
# ODE
|
||||
#include_directories(${ODE_INCLUDE_DIRS})
|
||||
# SNDFILE
|
||||
@@ -314,21 +448,28 @@ include_directories(${ENTT_INCLUDE_DIRS})
|
||||
|
||||
# SDL2
|
||||
#target_link_libraries(Engine ${SDL2_LIBRARIES})
|
||||
|
||||
target_link_libraries(Engine SDL3::SDL3)
|
||||
# GLEW
|
||||
#target_link_libraries(Engine ${GLEW_LIBRARIES})
|
||||
|
||||
# SDL2_image
|
||||
#target_link_libraries(Engine SDL2_image)
|
||||
target_link_libraries(Engine SDL3_image)
|
||||
|
||||
# SDL2_ttf
|
||||
#target_link_libraries(Engine SDL2_ttf)
|
||||
|
||||
target_link_libraries(Engine SDL3_ttf)
|
||||
# Boost
|
||||
|
||||
#Vulkan
|
||||
target_link_libraries(Engine Vulkan::Vulkan)
|
||||
|
||||
target_link_libraries(Engine spirv-reflect)
|
||||
|
||||
#target_link_libraries(Engine spirv-cross-glsl spirv-cross-core)
|
||||
|
||||
# ASSIMP
|
||||
#target_link_libraries(Engine ${ASSIMP_LIBRARIES})
|
||||
target_link_libraries(Engine ${ASSIMP_LIBRARIES})
|
||||
|
||||
|
||||
# ODE
|
||||
@@ -368,7 +509,7 @@ endif()
|
||||
|
||||
# Paramètre de compilation
|
||||
if (UNIX)
|
||||
set(CMAKE_CXX_FLAGS "-Wall -ldl -fPIC")
|
||||
set(CMAKE_CXX_FLAGS "-Wall -fPIC")
|
||||
endif ()
|
||||
|
||||
# Valgrind ne marche que pour Linux...
|
||||
|
||||
Reference in New Issue
Block a user