From 4cf4edff092ce2de617424e3990160684058791d Mon Sep 17 00:00:00 2001 From: Mathieu-Andre Chiasson Date: Sat, 29 Dec 2018 20:28:54 -0500 Subject: [PATCH] added Spir-V shader generator support Vulkan support is coming... --- cmake/examples.cmake | 7 ++++++- cmake/tools/shaderc.cmake | 13 ++++++++++--- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/cmake/examples.cmake b/cmake/examples.cmake index 5224916..4a81e68 100755 --- a/cmake/examples.cmake +++ b/cmake/examples.cmake @@ -60,7 +60,12 @@ function( add_bgfx_shader FILE FOLDER ) set( GLSL_OUTPUT ${BGFX_DIR}/examples/runtime/shaders/glsl/${FILENAME}.bin ) shaderc_parse( GLSL ${COMMON} LINUX PROFILE 120 OUTPUT ${GLSL_OUTPUT} ) list( APPEND OUTPUTS "GLSL" ) - set( OUTPUTS_PRETTY "${OUTPUTS_PRETTY}GLSL" ) + set( OUTPUTS_PRETTY "${OUTPUTS_PRETTY}GLSL, " ) + # spirv + set( SPIRV_OUTPUT ${BGFX_DIR}/examples/runtime/shaders/spirv/${FILENAME}.bin ) + shaderc_parse( SPIRV ${COMMON} LINUX PROFILE spirv OUTPUT ${SPIRV_OUTPUT} ) + list( APPEND OUTPUTS "SPIRV" ) + set( OUTPUTS_PRETTY "${OUTPUTS_PRETTY}SPIRV" ) set( OUTPUT_FILES "" ) set( COMMANDS "" ) foreach( OUT ${OUTPUTS} ) diff --git a/cmake/tools/shaderc.cmake b/cmake/tools/shaderc.cmake index dd31d2c..3dd9f4a 100644 --- a/cmake/tools/shaderc.cmake +++ b/cmake/tools/shaderc.cmake @@ -47,11 +47,11 @@ function( add_shader ARG_FILE ) set( PLATFORMS ${ARG_PLATFORMS} ) else() if( MSVC ) - set( PLATFORMS dx9 dx11 glsl essl asm.js ) + set( PLATFORMS dx9 dx11 glsl essl asm.js spirv ) elseif( APPLE ) - set( PLATFORMS metal glsl essl asm.js ) + set( PLATFORMS metal glsl essl asm.js spirv ) else() - set( PLATFORMS glsl essl asm.js ) + set( PLATFORMS glsl essl asm.js spirv ) endif() endif() @@ -75,6 +75,7 @@ function( add_shader ARG_FILE ) if( ARG_GLSL_VERSION ) set( GLSL_PROFILE PROFILE ${ARG_GLSL_VERSION} ) endif() + set( SPIRV_PROFILE PROFILE spirv ) # Add commands set( OUTPUTS "" ) @@ -117,6 +118,12 @@ function( add_shader ARG_FILE ) ASM_JS OUTPUT ${OUTPUT} ) + elseif( "${PLATFORM}" STREQUAL "spirv" ) + list( APPEND OPTIONS + LINUX + ${SPIRV_PROFILE} + OUTPUT ${OUTPUT} + ) else() message( SEND_ERROR "add_shader given bad platform: ${PLATFORM}" ) return()