GLM works only for C++ and I plan on moving to back to C. There is a C port, but it would be good for me to figure out vertex math myself. Hence, my own library has been created.
65 lines
1.5 KiB
CMake
65 lines
1.5 KiB
CMake
find_package(Vulkan REQUIRED)
|
|
find_package(vma REQUIRED)
|
|
find_package(glfw3 REQUIRED)
|
|
|
|
find_package(Vulkan COMPONENTS glslc)
|
|
find_program(glslc_executable NAMES glslc HINTS ${Vulkan_GLSLC_EXECUTABLE}/..)
|
|
|
|
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/shaders)
|
|
|
|
cmake_policy(SET CMP0116 NEW)
|
|
function(compile_shader)
|
|
cmake_parse_arguments(PARSE_ARGV 1 arg "" "ENV;FORMAT" "SOURCES")
|
|
foreach(source ${arg_SOURCES})
|
|
message(${source}.${arg_FORMAT})
|
|
add_custom_command(
|
|
OUTPUT ${source}.${arg_FORMAT}
|
|
DEPENDS ${source}
|
|
DEPFILE ${source}.d
|
|
COMMAND
|
|
${glslc_executable}
|
|
-o ${source}.${arg_FORMAT}
|
|
${CMAKE_CURRENT_SOURCE_DIR}/${source}
|
|
)
|
|
endforeach()
|
|
endfunction()
|
|
|
|
|
|
|
|
compile_shader(rse_graphics
|
|
ENV opengl
|
|
FORMAT num
|
|
SOURCES
|
|
shaders/shader.vert
|
|
shaders/shader.frag
|
|
)
|
|
|
|
add_library(rse_graphics SHARED shaders/shader.vert.num shaders/shader.frag.num)
|
|
target_include_directories(rse_graphics PRIVATE
|
|
${PROJECT_SOURCE_DIR}
|
|
${CMAKE_CURRENT_SOURCE_DIR}
|
|
${CMAKE_SOURCE_DIR}
|
|
${Vulkan_INCLUDE_DIR}
|
|
${vma_INCLUDE_DIR}
|
|
${glfw3_INCLUDE_DIR}
|
|
)
|
|
|
|
message("Vulkan_INCLUDE_DIR: ${Vulkan_INCLUDE_DIR}")
|
|
target_sources(rse_graphics PRIVATE
|
|
src/window.cpp
|
|
src/vulkan_base.cpp
|
|
src/vulkan_pipeline.cpp
|
|
src/vulkan_buffers.cpp
|
|
src/vulkan_descriptors.cpp
|
|
src/rse_graphics.cpp
|
|
src/rse_math.c
|
|
src/mesh_controller.cpp
|
|
src/vulkan_commons.cpp
|
|
)
|
|
|
|
target_link_libraries(rse_graphics PRIVATE
|
|
rse_utilities
|
|
${Vulkan_LIBRARIES}
|
|
${glfw}
|
|
)
|