[General] Add 'compile_and_pack_shader' CMake function
This commit is contained in:
parent
cfd32501b6
commit
7d187b9659
1 changed files with 13 additions and 1 deletions
|
|
@ -9,9 +9,21 @@ add_custom_target(${CMAKE_PROJECT_NAME}_html COMMAND ${CMAKE_COMMAND} -E copy ${
|
||||||
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/assets/index.html)
|
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/assets/index.html)
|
||||||
|
|
||||||
add_executable(${CMAKE_PROJECT_NAME} src/main.cpp)
|
add_executable(${CMAKE_PROJECT_NAME} src/main.cpp)
|
||||||
|
|
||||||
add_dependencies(${CMAKE_PROJECT_NAME} ${CMAKE_PROJECT_NAME}_html)
|
add_dependencies(${CMAKE_PROJECT_NAME} ${CMAKE_PROJECT_NAME}_html)
|
||||||
|
|
||||||
target_compile_options(${CMAKE_PROJECT_NAME} PRIVATE $<$<CXX_COMPILER_ID:Msvc>:/W4 /WX> $<$<NOT:$<CXX_COMPILER_ID:Msvc>>:-Wall -Wextra -Wpedantic -Werror>)
|
target_compile_options(${CMAKE_PROJECT_NAME} PRIVATE $<$<CXX_COMPILER_ID:Msvc>:/W4 /WX> $<$<NOT:$<CXX_COMPILER_ID:Msvc>>:-Wall -Wextra -Wpedantic -Werror>)
|
||||||
target_compile_options(${CMAKE_PROJECT_NAME} PRIVATE --use-port=emdawnwebgpu)
|
target_compile_options(${CMAKE_PROJECT_NAME} PRIVATE --use-port=emdawnwebgpu)
|
||||||
target_link_options(${CMAKE_PROJECT_NAME} PRIVATE --use-port=emdawnwebgpu)
|
target_link_options(${CMAKE_PROJECT_NAME} PRIVATE --use-port=emdawnwebgpu)
|
||||||
|
|
||||||
|
function(compile_and_package_shader SHADER_NAME TARGET)
|
||||||
|
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/shaders/${SHADER_NAME}.wgsl
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/shaders
|
||||||
|
COMMAND slangc -target wgsl -matrix-layout-column-major ${CMAKE_CURRENT_SOURCE_DIR}/assets/shaders/${SHADER_NAME}.slang -o ${CMAKE_CURRENT_BINARY_DIR}/shaders/${SHADER_NAME}.wgsl
|
||||||
|
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/assets/shaders/${SHADER_NAME}.slang)
|
||||||
|
add_custom_target(${TARGET}_shader_${SHADER_NAME} DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/shaders/${SHADER_NAME}.wgsl)
|
||||||
|
#TODO: Add deptfile generation via slang for recompilation when embedded files change
|
||||||
|
add_dependencies(${TARGET} ${TARGET}_shader_${SHADER_NAME})
|
||||||
|
target_link_options(${TARGET} PRIVATE --embed-file ${CMAKE_CURRENT_BINARY_DIR}/shaders/${SHADER_NAME}.wgsl@/shaders/${SHADER_NAME}.wgsl)
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
compile_and_package_shader(shaders ${CMAKE_PROJECT_NAME})
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue