Compare commits

...

4 Commits

Author SHA1 Message Date
Aaron Ishibashi
ef0ed485c5 Fix broken shader platform checks, add checks for iOS, Android, Orbis (#254)
* Fix broken shader platform checks, add checks for iOS, Android, Orbis, remove NaCl

* Fix formatting issue

Co-authored-by: Sandy <1013356+bwrsandman@users.noreply.github.com>

* Update cmake/bgfxToolUtils.cmake formatting

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

---------

Co-authored-by: Sandy <1013356+bwrsandman@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-11-17 11:59:45 -05:00
Sandy
2c33050257 ci: Update deprecated upload-artifact 2024-11-13 19:57:16 -05:00
Vincent Lee
b12eb2882a Fix bgfx_compile_shaders section of README.md 2024-11-07 08:10:32 -05:00
Andrew Feng
1139067c7d Improve shader profile extension to be more compatible with bgfx (#247)
* remove profile extension incompatible with those listed under examples/runtime/shaders; fix incorrect parameter names; enforce consistent syntax when appending to CLI.

* remove dx9

* add separate profile extension for paths vs profile extension
2024-11-05 12:41:12 -05:00
3 changed files with 42 additions and 25 deletions

View File

@@ -45,7 +45,7 @@ jobs:
args: --config-files .cmake-format.py --in-place
- run: |
git diff > cmake-format.patch
- uses: actions/upload-artifact@v2
- uses: actions/upload-artifact@v4
with:
name: formatting-fix-${{github.sha}}
path: cmake-format.patch

View File

@@ -94,7 +94,7 @@ bgfx_compile_shaders(
SHADERS filenames
VARYING_DEF filename
OUTPUT_DIR directory
[AS_HEADER]
[AS_HEADERS]
)
```
This defines a shaderc command to generate binaries or headers for a number of `TYPE` shaders with `SHADERS` files and `VARYING_DEF` file in the `OUTPUT_DIR` directory. There will be one generated shader for each supported rendering API on this current platform according to the `BGFX_EMBEDDED_SHADER` macro in `bgfx/embedded_shader.h` for headers and in the directory expected by `load_shader` in `bgfx_utils.h`.
@@ -110,14 +110,14 @@ bgfx_compile_shaders(
SHADERS vs.sc
VARYING_DEF varying.def.sc
OUTPUT_DIR ${CMAKE_BINARY_DIR}/include/generated/shaders
AS_HEADER
AS_HEADERS
)
bgfx_compile_shader_to_header(
bgfx_compile_shaders(
TYPE FRAGMENT
SHADERS fs.sc
VARYING_DEF ${CMAKE_SOURCE_DIR}/varying.def.sc
OUTPUT_DIR ${CMAKE_BINARY_DIR}/include/generated/shaders
AS_HEADER
AS_HEADERS
)
add_library(myLib main.cpp vs.sc fs.sc)

View File

@@ -215,7 +215,7 @@ if(TARGET bgfx::texturec)
add_custom_command(
OUTPUT ${ARG_OUTPUT} #
COMMAND bgfx::texturec ${CLI} #
MAIN_DEPENDENCY ${ARG_INPUT} #
MAIN_DEPENDENCY ${ARG_FILE} #
)
endfunction()
endif()
@@ -279,12 +279,12 @@ if(TARGET bgfx::geometryc)
# --packnormal
if(ARG_PACKNORMAL)
list(APPEND CLI "--packnormal ${ARG_PACKNORMAL}")
list(APPEND CLI "--packnormal" "${ARG_PACKNORMAL}")
endif()
# --packuv
if(ARG_PACKUV)
list(APPEND CLI "--packuv" ${ARG_PACKUV})
list(APPEND CLI "--packuv" "${ARG_PACKUV}")
endif()
# --tangent
@@ -352,7 +352,7 @@ if(TARGET bgfx::geometryc)
add_custom_command(
OUTPUT ${ARG_OUTPUT} #
COMMAND bgfx::geometryc ${CLI} #
MAIN_DEPENDENCY ${ARG_INPUT} #
MAIN_DEPENDENCY ${ARG_FILE} #
)
endfunction()
endif()
@@ -364,7 +364,7 @@ if(TARGET bgfx::shaderc)
# FILE filename
# OUTPUT filename
# FRAGMENT|VERTEX|COMPUTE
# ANDROID|ASM_JS|IOS|LINUX|NACL|OSX|WINDOWS
# ANDROID|ASM_JS|IOS|LINUX|OSX|WINDOWS|ORBIS
# PROFILE profile
# [O 0|1|2|3]
# [VARYINGDEF filename]
@@ -382,7 +382,7 @@ if(TARGET bgfx::shaderc)
function(_bgfx_shaderc_parse ARG_OUT)
cmake_parse_arguments(
ARG
"DEPENDS;ANDROID;ASM_JS;IOS;LINUX;NACL;OSX;WINDOWS;PREPROCESS;RAW;FRAGMENT;VERTEX;COMPUTE;VERBOSE;DEBUG;DISASM;WERROR"
"DEPENDS;ANDROID;ASM_JS;IOS;LINUX;OSX;WINDOWS;ORBIS;PREPROCESS;RAW;FRAGMENT;VERTEX;COMPUTE;VERBOSE;DEBUG;DISASM;WERROR"
"FILE;OUTPUT;VARYINGDEF;BIN2C;PROFILE;O"
"INCLUDES;DEFINES"
${ARGN}
@@ -423,7 +423,7 @@ if(TARGET bgfx::shaderc)
# --platform
set(PLATFORM "")
set(PLATFORMS "ANDROID;ASM_JS;IOS;LINUX;NACL;OSX;WINDOWS")
set(PLATFORMS "ANDROID;ASM_JS;IOS;LINUX;OSX;WINDOWS;ORBIS")
foreach(P ${PLATFORMS})
if(ARG_${P})
if(PLATFORM)
@@ -436,20 +436,20 @@ if(TARGET bgfx::shaderc)
if(PLATFORM STREQUAL "")
message(SEND_ERROR "Call to _bgfx_shaderc_parse() must have a platform flag: ${PLATFORMS}")
return()
elseif(PLATFORM STREQUAL ANDROID)
elseif(PLATFORM STREQUAL "ANDROID")
list(APPEND CLI "--platform" "android")
elseif(PLATFORM STREQUAL ASM_JS)
elseif(PLATFORM STREQUAL "ASM_JS")
list(APPEND CLI "--platform" "asm.js")
elseif(PLATFORM STREQUAL IOS)
elseif(PLATFORM STREQUAL "IOS")
list(APPEND CLI "--platform" "ios")
elseif(PLATFORM STREQUAL NACL)
list(APPEND CLI "--platform" "nacl")
elseif(PLATFORM STREQUAL OSX)
elseif(PLATFORM STREQUAL "OSX")
list(APPEND CLI "--platform" "osx")
elseif(PLATFORM STREQUAL UNIX)
elseif(PLATFORM STREQUAL "LINUX")
list(APPEND CLI "--platform" "linux")
elseif(PLATFORM STREQUAL WINDOWS)
elseif(PLATFORM STREQUAL "WINDOWS")
list(APPEND CLI "--platform" "windows")
elseif(PLATFORM STREQUAL "ORBIS")
list(APPEND CLI "--platform" "orbis")
endif()
# --preprocess
@@ -539,15 +539,23 @@ if(TARGET bgfx::shaderc)
set(${ARG_OUT} ${CLI} PARENT_SCOPE)
endfunction()
# extensions consistent with those listed under bgfx/runtime/shaders
function(_bgfx_get_profile_path_ext PROFILE PROFILE_PATH_EXT)
string(REPLACE 300_es essl PROFILE ${PROFILE})
string(REPLACE 120 glsl PROFILE ${PROFILE})
string(REPLACE s_4_0 dx10 PROFILE ${PROFILE})
string(REPLACE s_5_0 dx11 PROFILE ${PROFILE})
set(${PROFILE_PATH_EXT} ${PROFILE} PARENT_SCOPE)
endfunction()
# extensions consistent with embedded_shader.h
function(_bgfx_get_profile_ext PROFILE PROFILE_EXT)
string(REPLACE 300_es essl PROFILE ${PROFILE})
string(REPLACE 120 glsl PROFILE ${PROFILE})
string(REPLACE spirv spv PROFILE ${PROFILE})
string(REPLACE metal mtl PROFILE ${PROFILE})
string(REPLACE s_3_0 dx9 PROFILE ${PROFILE})
string(REPLACE s_4_0 dx10 PROFILE ${PROFILE})
string(REPLACE s_5_0 dx11 PROFILE ${PROFILE})
set(${PROFILE_EXT} ${PROFILE} PARENT_SCOPE)
endfunction()
@@ -568,7 +576,12 @@ if(TARGET bgfx::shaderc)
cmake_parse_arguments(ARGS "${options}" "${oneValueArgs}" "${multiValueArgs}" "${ARGN}")
set(PROFILES 120 300_es spirv)
if(UNIX AND NOT APPLE)
if(IOS)
set(PLATFORM IOS)
list(APPEND PROFILES metal)
elseif(ANDROID)
set(PLATFORM ANDROID)
elseif(UNIX AND NOT APPLE)
set(PLATFORM LINUX)
elseif(EMSCRIPTEN)
set(PLATFORM ASM_JS)
@@ -584,6 +597,9 @@ if(TARGET bgfx::shaderc)
set(PLATFORM WINDOWS)
list(APPEND PROFILES s_4_0)
list(APPEND PROFILES s_5_0)
elseif(ORBIS) # ORBIS should be defined by a PS4 CMake toolchain
set(PLATFORM ORBIS)
list(APPEND PROFILES pssl)
else()
# pssl for Agc and Gnm renderers
# nvn for Nvn renderer
@@ -602,11 +618,12 @@ if(TARGET bgfx::shaderc)
set(COMMANDS "")
set(MKDIR_COMMANDS "")
foreach(PROFILE ${PROFILES})
_bgfx_get_profile_path_ext(${PROFILE} PROFILE_PATH_EXT)
_bgfx_get_profile_ext(${PROFILE} PROFILE_EXT)
if(ARGS_AS_HEADERS)
set(HEADER_PREFIX .h)
endif()
set(OUTPUT ${ARGS_OUTPUT_DIR}/${PROFILE_EXT}/${SHADER_FILE_BASENAME}.bin${HEADER_PREFIX})
set(OUTPUT ${ARGS_OUTPUT_DIR}/${PROFILE_PATH_EXT}/${SHADER_FILE_BASENAME}.bin${HEADER_PREFIX})
set(PLATFORM_I ${PLATFORM})
if(PROFILE STREQUAL "spirv")
set(PLATFORM_I LINUX)
@@ -635,7 +652,7 @@ if(TARGET bgfx::shaderc)
${CMAKE_COMMAND}
-E
make_directory
${ARGS_OUTPUT_DIR}/${PROFILE_EXT}
${ARGS_OUTPUT_DIR}/${PROFILE_PATH_EXT}
)
list(APPEND COMMANDS COMMAND bgfx::shaderc ${CLI})
endforeach()