forked from BoomingTech/Piccolo
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathShaderCompile.cmake
More file actions
43 lines (31 loc) · 1.55 KB
/
Copy pathShaderCompile.cmake
File metadata and controls
43 lines (31 loc) · 1.55 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
function(compile_shader SHADERS TARGET_NAME SHADER_INCLUDE_FOLDER GENERATED_DIR GLSLANG_BIN)
set(working_dir "${CMAKE_CURRENT_SOURCE_DIR}")
set(ALL_GENERATED_SPV_FILES "")
set(ALL_GENERATED_CPP_FILES "")
if(UNIX)
execute_process(COMMAND chmod a+x ${GLSLANG_BIN})
endif()
foreach(SHADER ${SHADERS})
# Prepare a header name and a global variable for this shader
get_filename_component(SHADER_NAME ${SHADER} NAME)
string(REPLACE "." "_" HEADER_NAME ${SHADER_NAME})
string(TOUPPER ${HEADER_NAME} GLOBAL_SHADER_VAR)
set(SPV_FILE "${CMAKE_CURRENT_SOURCE_DIR}/${GENERATED_DIR}/spv/${SHADER_NAME}.spv")
set(CPP_FILE "${CMAKE_CURRENT_SOURCE_DIR}/${GENERATED_DIR}/cpp/${HEADER_NAME}.h")
add_custom_command(
OUTPUT ${SPV_FILE}
COMMAND ${GLSLANG_BIN} -I${SHADER_INCLUDE_FOLDER} -V100 -o ${SPV_FILE} ${SHADER}
DEPENDS ${SHADER}
WORKING_DIRECTORY "${working_dir}")
list(APPEND ALL_GENERATED_SPV_FILES ${SPV_FILE})
add_custom_command(
OUTPUT ${CPP_FILE}
COMMAND ${CMAKE_COMMAND} -DPATH=${SPV_FILE} -DHEADER="${CPP_FILE}"
-DGLOBAL="${GLOBAL_SHADER_VAR}" -P "${PILOT_ROOT_DIR}/cmake/GenerateShaderCPPFile.cmake"
DEPENDS ${SPV_FILE}
WORKING_DIRECTORY "${working_dir}")
list(APPEND ALL_GENERATED_CPP_FILES ${CPP_FILE})
endforeach()
add_custom_target(${TARGET_NAME}
DEPENDS ${ALL_GENERATED_SPV_FILES} ${ALL_GENERATED_CPP_FILES} SOURCES ${SHADERS})
endfunction()