Archived
1
Fork 0
This repository has been archived on 2025-04-12. You can view files and clone it, but cannot push or open issues or pull requests.
prism/cmake/BuildShaders.cmake

45 lines
1.5 KiB
CMake
Raw Normal View History

2020-08-11 12:07:21 -04:00
macro(compile_shader src)
string(REGEX REPLACE "\\.[^.]*$" "" MYFILE_WITHOUT_EXT ${src})
set(SHADER_COMPILER_COMMAND $<TARGET_FILE:ShaderCompilerTool>)
2020-08-11 12:07:21 -04:00
if(ENABLE_IOS)
set(SHADER_COMPILER_COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/../build/bin/Debug/ShaderCompilerTool")
2020-08-11 12:07:21 -04:00
endif()
set(EXTRA_PLATFORM_ARG "0")
if(ENABLE_IOS)
set(EXTRA_PLATFORM_ARG "1")
endif()
add_custom_command(
OUTPUT ${CMAKE_BINARY_DIR}/${MYFILE_WITHOUT_EXT}.glsl
COMMAND ${SHADER_COMPILER_COMMAND} ${CMAKE_CURRENT_SOURCE_DIR}/../../${src} ${CMAKE_BINARY_DIR}/${src} ${EXTRA_PLATFORM_ARG}
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/../../${src}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../../shaders
)
endmacro()
function(add_shader)
if(NOT ENABLE_IOS)
set(options OPTIONAL FAST)
set(oneValueArgs TARGET)
set(multiValueArgs SHADERS)
cmake_parse_arguments(add_shader "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} )
foreach(shader ${add_shader_SHADERS})
string(REGEX REPLACE "\\.[^.]*$" "" MYFILE_WITHOUT_EXT ${shader})
compile_shader(${shader})
list(APPEND SPV_FILES ${CMAKE_BINARY_DIR}/${MYFILE_WITHOUT_EXT}.glsl)
endforeach()
file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/shaders)
add_custom_target(BuildShaders DEPENDS ${SPV_FILES} ShaderCompilerTool)
2020-08-11 12:07:21 -04:00
add_dependencies(${add_shader_TARGET} BuildShaders)
set(ALL_SHADER_FILES ${SPV_FILES} CACHE INTERNAL "" FORCE)
endif()
endfunction()