@@ -28,16 +28,23 @@ function (add_shaders_target TARGET)
28
28
OUTPUT ${SHADERS_DIR}
29
29
COMMAND ${CMAKE_COMMAND} -E make_directory ${SHADERS_DIR}
30
30
)
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 ()
31
38
add_custom_command (
32
- OUTPUT ${SHADERS_DIR} /frag.spv ${SHADERS_DIR} /vert.spv
39
+ OUTPUT ${SHADERS}
33
40
COMMAND glslang::validator
34
41
ARGS --target -env vulkan1.0 ${SHADER_SOURCES} --quiet
35
42
WORKING_DIRECTORY ${SHADERS_DIR}
36
43
DEPENDS ${SHADERS_DIR} ${SHADER_SOURCES}
37
44
COMMENT "Compiling Shaders"
38
45
VERBATIM
39
46
)
40
- add_custom_target (${TARGET} DEPENDS ${SHADERS_DIR} /frag.spv ${SHADERS_DIR} /vert.spv )
47
+ add_custom_target (${TARGET} DEPENDS ${SHADERS} )
41
48
endfunction ()
42
49
43
50
function (add_chapter CHAPTER_NAME)
@@ -52,7 +59,7 @@ function (add_chapter CHAPTER_NAME)
52
59
53
60
if (DEFINED CHAPTER_SHADER)
54
61
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 )
56
63
add_shaders_target (${CHAPTER_SHADER_TARGET} CHAPTER_NAME ${CHAPTER_NAME} SOURCES ${SHADER_SOURCES} )
57
64
add_dependencies (${CHAPTER_NAME} ${CHAPTER_SHADER_TARGET} )
58
65
endif ()
0 commit comments