Now compiles all valid types of shaders.

This commit is contained in:
Joshua Brookover
2016-09-05 20:19:18 -05:00
parent 8f9fb0006a
commit 30607af0ea
4 changed files with 51 additions and 9 deletions

4
.gitignore vendored Normal file
View File

@@ -0,0 +1,4 @@
build/
bgfx/
bx/
*.swp

View File

@@ -21,14 +21,53 @@ function( add_bgfx_shader FILE FOLDER )
endif()
if( NOT "${TYPE}" STREQUAL "" )
set( COMMON FILE ${FILE} ${TYPE} INCLUDES ${BGFX_DIR}/src )
set( OUTPUTS "" )
set( OUTPUTS_PRETTY "" )
if( WIN32 )
shaderc( ${COMMON} WINDOWS PROFILE ${D3D_PREFIX}_4_0 OUTPUT ${BGFX_DIR}/examples/runtime/shaders/dx11/${FILENAME}.bin )
elseif( APPLE )
#shaderc( ${COMMON} OSX OUTPUT ${BGFX_DIR}/examples/runtime/shaders/metal/${FILENAME}.bin )
shaderc( ${COMMON} LINUX PROFILE 120 OUTPUT ${BGFX_DIR}/examples/runtime/shaders/glsl/${FILENAME}.bin )
else()
shaderc( ${COMMON} LINUX PROFILE 120 OUTPUT ${BGFX_DIR}/examples/runtime/shaders/glsl/${FILENAME}.bin )
# dx9
set( DX9_OUTPUT ${BGFX_DIR}/examples/runtime/shaders/dx9/${FILENAME}.bin )
shaderc_parse( DX9 ${COMMON} WINDOWS PROFILE ${D3D_PREFIX}_3_0 OUTPUT ${DX9_OUTPUT} )
list( APPEND OUTPUTS "DX9" )
set( OUTPUTS_PRETTY "${OUTPUTS_PRETTY}DX9, " )
# dx11
set( DX11_OUTPUT ${BGFX_DIR}/examples/runtime/shaders/dx11/${FILENAME}.bin )
shaderc_parse( DX11 ${COMMON} WINDOWS PROFILE ${D3D_PREFIX}_4_0 OUTPUT ${DX11_OUTPUT} )
list( APPEND OUTPUTS "DX11" )
set( OUTPUTS_PRETTY "${OUTPUTS_PRETTY}DX11, " )
endif()
if( APPLE )
# metal
set( METAL_OUTPUT ${BGFX_DIR}/examples/runtime/shaders/metal/${FILENAME}.bin )
shaderc_parse( METAL ${COMMON} OSX OUTPUT ${METAL_OUTPUT} )
list( APPEND OUTPUTS "METAL" )
set( OUTPUTS_PRETTY "${OUTPUTS_PRETTY}Metal, " )
endif()
# gles
set( GLES_OUTPUT ${BGFX_DIR}/examples/runtime/shaders/gles/${FILENAME}.bin )
shaderc_parse( GLES ${COMMON} ANDROID OUTPUT ${GLES_OUTPUT} )
list( APPEND OUTPUTS "GLES" )
set( OUTPUTS_PRETTY "${OUTPUTS_PRETTY}GLES, " )
# glsl
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( OUTPUT_FILES "" )
set( COMMANDS "" )
foreach( OUT ${OUTPUTS} )
list( APPEND OUTPUT_FILES ${${OUT}_OUTPUT} )
list( APPEND COMMANDS COMMAND "$<TARGET_FILE:shaderc>" ${${OUT}} )
endforeach()
file( RELATIVE_PATH PRINT_NAME ${BGFX_DIR}/examples ${FILE} )
add_custom_command(
MAIN_DEPENDENCY
${FILE}
OUTPUT
${OUTPUT_FILES}
${COMMANDS}
COMMENT "Compiling shader ${PRINT_NAME} for ${OUTPUTS_PRETTY}"
)
endif()
endfunction()

View File

@@ -15,7 +15,6 @@ target_link_libraries( shaderc bx bgfx fcpp glsl-optimizer )
function( shaderc )
cmake_parse_arguments( ARG "" "FILE;OUTPUT" "" ${ARGN} )
shaderc_parse( CLI ${ARGN} )
#add_custom_command( OUTPUT ${ARG_OUTPUT} COMMAND "C:/Users/Josh/Downloads/bgfx-examples/shaderc" ${CLI} MAIN_DEPENDENCY ${ARG_FILE} )
add_custom_command( OUTPUT ${ARG_OUTPUT} COMMAND "$<TARGET_FILE:shaderc>" ${CLI} MAIN_DEPENDENCY ${ARG_FILE} COMMENT "Compiling shader ${ARG_FILE}" )
endfunction()

View File

@@ -14,9 +14,9 @@ cmake ..
Features
-------------
* No outside dependencies besides bx, bgfx, and CMake.
* Only tested in Visual Studio 2015 so far.
* Tested on Visual Studio 2015 and Xcode.
* Compiles bgfx, tools & examples.
* Detects shader modifications and automatically rebuilds them (DirectX11 shaders only for now).
* Detects shader modifications and automatically rebuilds them.
* Uses CMake interface libraries (linking against bgfx is one line of cmake code via target_link_libraries).
License