mirror of
https://github.com/bkaradzic/bgfx.cmake.git
synced 2026-02-17 13:02:33 +01:00
Make bgfx_compile_shaders more generic
Allow compiling as header or as binaries
This commit is contained in:
@@ -551,17 +551,18 @@ if(TARGET bgfx::shaderc)
|
|||||||
set(${PROFILE_EXT} ${PROFILE} PARENT_SCOPE)
|
set(${PROFILE_EXT} ${PROFILE} PARENT_SCOPE)
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
# bgfx_compile_shader_to_header(
|
# bgfx_compile_shaders(
|
||||||
# TYPE VERTEX|FRAGMENT|COMPUTE
|
# TYPE VERTEX|FRAGMENT|COMPUTE
|
||||||
# SHADERS filenames
|
# SHADERS filenames
|
||||||
# VARYING_DEF filename
|
# VARYING_DEF filename
|
||||||
# OUTPUT_DIR directory
|
# OUTPUT_DIR directory
|
||||||
# OUT_FILES_VAR variable name
|
# OUT_FILES_VAR variable name
|
||||||
# INCLUDE_DIRS directories
|
# INCLUDE_DIRS directories
|
||||||
|
# [AS_HEADERS]
|
||||||
# )
|
# )
|
||||||
#
|
#
|
||||||
function(bgfx_compile_shader_to_header)
|
function(bgfx_compile_shaders)
|
||||||
set(options "")
|
set(options AS_HEADERS)
|
||||||
set(oneValueArgs TYPE VARYING_DEF OUTPUT_DIR OUT_FILES_VAR)
|
set(oneValueArgs TYPE VARYING_DEF OUTPUT_DIR OUT_FILES_VAR)
|
||||||
set(multiValueArgs SHADERS INCLUDE_DIRS)
|
set(multiValueArgs SHADERS INCLUDE_DIRS)
|
||||||
cmake_parse_arguments(ARGS "${options}" "${oneValueArgs}" "${multiValueArgs}" "${ARGN}")
|
cmake_parse_arguments(ARGS "${options}" "${oneValueArgs}" "${multiValueArgs}" "${ARGN}")
|
||||||
@@ -599,13 +600,18 @@ if(TARGET bgfx::shaderc)
|
|||||||
set(COMMANDS "")
|
set(COMMANDS "")
|
||||||
foreach(PROFILE ${PROFILES})
|
foreach(PROFILE ${PROFILES})
|
||||||
_bgfx_get_profile_ext(${PROFILE} PROFILE_EXT)
|
_bgfx_get_profile_ext(${PROFILE} PROFILE_EXT)
|
||||||
set(OUTPUT ${ARGS_OUTPUT_DIR}/${SHADER_FILE_BASENAME}.${PROFILE_EXT}.bin.h)
|
set(OUTPUT ${ARGS_OUTPUT_DIR}/${SHADER_FILE_BASENAME}.${PROFILE_EXT}.bin$<ARGS_AS_HEADERS:.h>)
|
||||||
set(PLATFORM_I ${PLATFORM})
|
set(PLATFORM_I ${PLATFORM})
|
||||||
if(PROFILE STREQUAL "spirv")
|
if(PROFILE STREQUAL "spirv")
|
||||||
set(PLATFORM_I LINUX)
|
set(PLATFORM_I LINUX)
|
||||||
endif()
|
endif()
|
||||||
|
set(BIN2C_PART "")
|
||||||
|
if(ARGS_AS_HEADERS)
|
||||||
|
set(BIN2C_PART BIN2C ${SHADER_FILE_NAME_WE}_${PROFILE_EXT})
|
||||||
|
endif()
|
||||||
_bgfx_shaderc_parse(
|
_bgfx_shaderc_parse(
|
||||||
CLI #
|
CLI #
|
||||||
|
${BIN2C_PART} #
|
||||||
${ARGS_TYPE} ${PLATFORM_I} WERROR "$<$<CONFIG:debug>:DEBUG>$<$<CONFIG:relwithdebinfo>:DEBUG>"
|
${ARGS_TYPE} ${PLATFORM_I} WERROR "$<$<CONFIG:debug>:DEBUG>$<$<CONFIG:relwithdebinfo>:DEBUG>"
|
||||||
FILE ${SHADER_FILE_ABSOLUTE}
|
FILE ${SHADER_FILE_ABSOLUTE}
|
||||||
OUTPUT ${OUTPUT}
|
OUTPUT ${OUTPUT}
|
||||||
@@ -613,7 +619,6 @@ if(TARGET bgfx::shaderc)
|
|||||||
O "$<$<CONFIG:debug>:0>$<$<CONFIG:release>:3>$<$<CONFIG:relwithdebinfo>:3>$<$<CONFIG:minsizerel>:3>"
|
O "$<$<CONFIG:debug>:0>$<$<CONFIG:release>:3>$<$<CONFIG:relwithdebinfo>:3>$<$<CONFIG:minsizerel>:3>"
|
||||||
VARYINGDEF ${ARGS_VARYING_DEF}
|
VARYINGDEF ${ARGS_VARYING_DEF}
|
||||||
INCLUDES ${BGFX_SHADER_INCLUDE_PATH} ${ARGS_INCLUDE_DIRS}
|
INCLUDES ${BGFX_SHADER_INCLUDE_PATH} ${ARGS_INCLUDE_DIRS}
|
||||||
BIN2C BIN2C ${SHADER_FILE_NAME_WE}_${PROFILE_EXT}
|
|
||||||
)
|
)
|
||||||
list(APPEND OUTPUTS ${OUTPUT})
|
list(APPEND OUTPUTS ${OUTPUT})
|
||||||
list(APPEND ALL_OUTPUTS ${OUTPUT})
|
list(APPEND ALL_OUTPUTS ${OUTPUT})
|
||||||
|
|||||||
Reference in New Issue
Block a user