@@ -28,16 +28,23 @@ function (add_shaders_target TARGET)
2828 OUTPUT ${SHADERS_DIR}
2929 COMMAND ${CMAKE_COMMAND} -E make_directory ${SHADERS_DIR}
3030 )
31+ set (SHADERS ${SHADERS_DIR} /frag.spv ${SHADERS_DIR} /vert.spv)
32+ # Some chapters may have compute shaders in addition to vertex and fragment shaders,
33+ # so we conditionally check this and add them to the target
34+ string (FIND "${SHADER_SOURCES} " "${CHAPTER_SHADER} .comp" COMPUTE_SHADER_INDEX)
35+ if (${COMPUTE_SHADER_INDEX} GREATER -1)
36+ set (SHADERS ${SHADERS} ${SHADERS_DIR} /comp.spv)
37+ endif ()
3138 add_custom_command (
32- OUTPUT ${SHADERS_DIR} /frag.spv ${SHADERS_DIR} /vert.spv
39+ OUTPUT ${SHADERS}
3340 COMMAND glslang::validator
3441 ARGS --target -env vulkan1.0 ${SHADER_SOURCES} --quiet
3542 WORKING_DIRECTORY ${SHADERS_DIR}
3643 DEPENDS ${SHADERS_DIR} ${SHADER_SOURCES}
3744 COMMENT "Compiling Shaders"
3845 VERBATIM
3946 )
40- add_custom_target (${TARGET} DEPENDS ${SHADERS_DIR} /frag.spv ${SHADERS_DIR} /vert.spv )
47+ add_custom_target (${TARGET} DEPENDS ${SHADERS} )
4148endfunction ()
4249
4350function (add_chapter CHAPTER_NAME)
@@ -52,7 +59,7 @@ function (add_chapter CHAPTER_NAME)
5259
5360 if (DEFINED CHAPTER_SHADER)
5461 set (CHAPTER_SHADER_TARGET ${CHAPTER_NAME} _shader)
55- file (GLOB SHADER_SOURCES ${CHAPTER_SHADER} .frag ${CHAPTER_SHADER} .vert)
62+ file (GLOB SHADER_SOURCES ${CHAPTER_SHADER} .frag ${CHAPTER_SHADER} .vert ${CHAPTER_SHADER} .comp )
5663 add_shaders_target (${CHAPTER_SHADER_TARGET} CHAPTER_NAME ${CHAPTER_NAME} SOURCES ${SHADER_SOURCES} )
5764 add_dependencies (${CHAPTER_NAME} ${CHAPTER_SHADER_TARGET} )
5865 endif ()
0 commit comments