Shaders are compiled by CMake
This commit is contained in:
parent
09d92231e2
commit
73fcd0be6b
@ -4,6 +4,34 @@ file(GLOB_RECURSE GRAPHICS_SOURCES CONFIGURE_DEPENDS
|
|||||||
${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp
|
${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
|
set(SHADER_SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/shaders)
|
||||||
|
set(SHADER_OUT_DIR ${CMAKE_BINARY_DIR}/shaders)
|
||||||
|
|
||||||
|
file(GLOB_RECURSE SHADERS
|
||||||
|
${SHADER_SRC_DIR}/*.vert
|
||||||
|
${SHADER_SRC_DIR}/*.frag
|
||||||
|
)
|
||||||
|
|
||||||
|
find_program(GLSLC glslc REQUIRED)
|
||||||
|
set(SPIRV_SHADERS)
|
||||||
|
|
||||||
|
foreach(SHADER ${SHADERS})
|
||||||
|
get_filename_component(FILE_NAME ${SHADER} NAME)
|
||||||
|
set(SPIRV_FILE ${SHADER_OUT_DIR}/${FILE_NAME}.spv)
|
||||||
|
|
||||||
|
add_custom_command(
|
||||||
|
OUTPUT ${SPIRV_FILE}
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E make_directory ${SHADER_OUT_DIR}
|
||||||
|
COMMAND ${GLSLC} ${SHADER} -o ${SPIRV_FILE}
|
||||||
|
DEPENDS ${SHADER}
|
||||||
|
COMMENT "Compiling ${FILE_NAME} with glslc"
|
||||||
|
VERBATIM
|
||||||
|
)
|
||||||
|
|
||||||
|
list(APPEND SPIRV_SHADERS ${SPIRV_FILE})
|
||||||
|
endforeach()
|
||||||
|
|
||||||
|
add_custom_target(Shaders ALL DEPENDS ${SPIRV_SHADERS})
|
||||||
add_library(deerith_graphics ${GRAPHICS_SOURCES})
|
add_library(deerith_graphics ${GRAPHICS_SOURCES})
|
||||||
|
|
||||||
target_include_directories(deerith_graphics
|
target_include_directories(deerith_graphics
|
||||||
@ -18,6 +46,8 @@ find_package(glfw3 REQUIRED)
|
|||||||
find_package(glm REQUIRED)
|
find_package(glm REQUIRED)
|
||||||
find_package(fmt REQUIRED)
|
find_package(fmt REQUIRED)
|
||||||
|
|
||||||
|
add_dependencies(deerith_graphics Shaders)
|
||||||
|
|
||||||
target_link_libraries(deerith_graphics
|
target_link_libraries(deerith_graphics
|
||||||
PUBLIC
|
PUBLIC
|
||||||
deerith::core
|
deerith::core
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user