mirror of
https://github.com/bkaradzic/bgfx.cmake.git
synced 2026-02-17 21:12:35 +01:00
Compare commits
12 Commits
v1.129.891
...
v1.136.911
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
cbd0e09dd9 | ||
|
|
f104e89b0e | ||
|
|
54fc2e6d5a | ||
|
|
8301c805b5 | ||
|
|
b5e37cd0db | ||
|
|
052d997930 | ||
|
|
a952acef35 | ||
|
|
dddc79f2ee | ||
|
|
fbf0903e50 | ||
|
|
5f3f4f2972 | ||
|
|
bd755d6c91 | ||
|
|
e8a92ffbbe |
2
.github/workflows/ci.yml
vendored
2
.github/workflows/ci.yml
vendored
@@ -15,7 +15,7 @@ jobs:
|
||||
name: Check compatibility with minimum cmake version
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
CMAKE_VERSION: 3.10.2
|
||||
CMAKE_VERSION: 3.20.0
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
|
||||
@@ -8,12 +8,12 @@
|
||||
# You should have received a copy of the CC0 Public Domain Dedication along with
|
||||
# this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
|
||||
|
||||
cmake_minimum_required(VERSION 3.10.2) # version supported by android studio
|
||||
cmake_minimum_required(VERSION 3.20) # C++20 support required
|
||||
project(bgfx)
|
||||
cmake_policy(SET CMP0054 NEW)
|
||||
|
||||
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
set(CMAKE_CXX_STANDARD 20)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
set(CMAKE_CXX_EXTENSIONS OFF)
|
||||
|
||||
|
||||
10
README.md
10
README.md
@@ -99,7 +99,7 @@ bgfx_compile_shaders(
|
||||
```
|
||||
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`.
|
||||
|
||||
The generated headers will have names in the format of `${RENDERING_API}/${SHADERS}.bin[.h]` where `RENDERING_API` can be `glsl`, `essl`, `spv`, `dx11` and `mtl` depending on the availability of the platform.
|
||||
The generated headers will have names in the format of `${RENDERING_API}/${SHADERS}.bin[.h]` where `RENDERING_API` can be `glsl`, `essl`, `spirv`, `dx11` and `metal` depending on the availability of the platform.
|
||||
|
||||
Adding these `SHADERS` as source files to a target will run `shaderc` at build time and they will rebuild if either the contents of the `SHADERS` or the `VARYING_DEF` change.
|
||||
|
||||
@@ -128,17 +128,17 @@ target_include_directories(myLib ${CMAKE_BINARY_DIR}/include/generated/shaders)
|
||||
// main.cpp
|
||||
#include <glsl/vs.sc.bin.h>
|
||||
#include <essl/vs.sc.bin.h>
|
||||
#include <spv/vs.sc.bin.h>
|
||||
#include <spirv/vs.sc.bin.h>
|
||||
#include <glsl/fs.sc.bin.h>
|
||||
#include <essl/fs.sc.bin.h>
|
||||
#include <spv/fs.sc.bin.h>
|
||||
#include <spirv/fs.sc.bin.h>
|
||||
#if defined(_WIN32)
|
||||
#include <dx11/vs.sc.bin.h>
|
||||
#include <dx11/fs.sc.bin.h>
|
||||
#endif // defined(_WIN32)
|
||||
#if __APPLE__
|
||||
#include <mtl/vs.sc.bin.h>
|
||||
#include <mtl/fs.sc.bin.h>
|
||||
#include <metal/vs.sc.bin.h>
|
||||
#include <metal/fs.sc.bin.h>
|
||||
#endif // __APPLE__
|
||||
|
||||
const bgfx::EmbeddedShader k_vs = BGFX_EMBEDDED_SHADER(vs);
|
||||
|
||||
2
bgfx
2
bgfx
Submodule bgfx updated: 4109e14b43...9ca7782405
2
bimg
2
bimg
Submodule bimg updated: 446b9eb111...a0204c79f9
2
bx
2
bx
Submodule bx updated: 5a20afef84...d8d7d13c85
11
cmake/bgfx/3rdparty/glslang.cmake
vendored
11
cmake/bgfx/3rdparty/glslang.cmake
vendored
@@ -55,9 +55,10 @@ set_target_properties(glslang PROPERTIES FOLDER "bgfx")
|
||||
|
||||
target_include_directories(
|
||||
glslang
|
||||
PUBLIC ${GLSLANG} #
|
||||
${GLSLANG}/glslang/Public #
|
||||
PRIVATE ${GLSLANG}/.. #
|
||||
${SPIRV_TOOLS}/include #
|
||||
${SPIRV_TOOLS}/source #
|
||||
PUBLIC ${GLSLANG}
|
||||
${GLSLANG}/glslang/Public
|
||||
${GLSLANG}/glslang/Include
|
||||
PRIVATE ${GLSLANG}/..
|
||||
${SPIRV_TOOLS}/include
|
||||
${SPIRV_TOOLS}/source
|
||||
)
|
||||
|
||||
3
cmake/bgfx/3rdparty/spirv-opt.cmake
vendored
3
cmake/bgfx/3rdparty/spirv-opt.cmake
vendored
@@ -84,6 +84,7 @@ file(
|
||||
${SPIRV_TOOLS}/source/util/hex_float.h
|
||||
${SPIRV_TOOLS}/source/util/parse_number.cpp
|
||||
${SPIRV_TOOLS}/source/util/parse_number.h
|
||||
${SPIRV_TOOLS}/source/util/status.h
|
||||
${SPIRV_TOOLS}/source/util/string_utils.cpp
|
||||
${SPIRV_TOOLS}/source/util/string_utils.h
|
||||
${SPIRV_TOOLS}/source/util/timer.h
|
||||
@@ -112,6 +113,7 @@ file(
|
||||
${SPIRV_TOOLS}/source/val/validate_execution_limitations.cpp
|
||||
${SPIRV_TOOLS}/source/val/validate_extensions.cpp
|
||||
${SPIRV_TOOLS}/source/val/validate_function.cpp
|
||||
${SPIRV_TOOLS}/source/val/validate_graph.cpp
|
||||
${SPIRV_TOOLS}/source/val/validate_id.cpp
|
||||
${SPIRV_TOOLS}/source/val/validate_image.cpp
|
||||
${SPIRV_TOOLS}/source/val/validate_instruction.cpp
|
||||
@@ -119,6 +121,7 @@ file(
|
||||
${SPIRV_TOOLS}/source/val/validate_invalid_type.cpp
|
||||
${SPIRV_TOOLS}/source/val/validate_layout.cpp
|
||||
${SPIRV_TOOLS}/source/val/validate_literals.cpp
|
||||
${SPIRV_TOOLS}/source/val/validate_logical_pointers.cpp
|
||||
${SPIRV_TOOLS}/source/val/validate_logicals.cpp
|
||||
${SPIRV_TOOLS}/source/val/validate_memory.cpp
|
||||
${SPIRV_TOOLS}/source/val/validate_memory_semantics.cpp
|
||||
|
||||
98
cmake/bgfx/3rdparty/tint.cmake
vendored
Normal file
98
cmake/bgfx/3rdparty/tint.cmake
vendored
Normal file
@@ -0,0 +1,98 @@
|
||||
# bgfx.cmake - bgfx building in cmake
|
||||
# Written in 2017 by Joshua Brookover <joshua.al.brookover@gmail.com>
|
||||
#
|
||||
# To the extent possible under law, the author(s) have dedicated all copyright
|
||||
# and related and neighboring rights to this software to the public domain
|
||||
# worldwide. This software is distributed without any warranty.
|
||||
#
|
||||
# You should have received a copy of the CC0 Public Domain Dedication along with
|
||||
# this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
|
||||
|
||||
if(TARGET tint)
|
||||
return()
|
||||
endif()
|
||||
|
||||
if(NOT IS_DIRECTORY ${BGFX_DIR})
|
||||
message(SEND_ERROR "Could not load bgfx, directory does not exist. ${BGFX_DIR}")
|
||||
return()
|
||||
endif()
|
||||
|
||||
set(TINT_DIR ${BGFX_DIR}/3rdparty/dawn)
|
||||
set(SPIRV_HEADERS ${BGFX_DIR}/3rdparty/spirv-headers)
|
||||
set(SPIRV_TOOLS ${BGFX_DIR}/3rdparty/spirv-tools)
|
||||
|
||||
file(
|
||||
GLOB_RECURSE
|
||||
TINT_SOURCES
|
||||
${TINT_DIR}/src/tint/utils/*.cc
|
||||
${TINT_DIR}/src/tint/utils/*.h
|
||||
${TINT_DIR}/src/tint/lang/core/*.cc
|
||||
${TINT_DIR}/src/tint/lang/core/*.h
|
||||
${TINT_DIR}/src/tint/lang/null/*.cc
|
||||
${TINT_DIR}/src/tint/lang/null/*.h
|
||||
${TINT_DIR}/src/tint/lang/spirv/*.cc
|
||||
${TINT_DIR}/src/tint/lang/spirv/*.h
|
||||
${TINT_DIR}/src/tint/lang/wgsl/*.cc
|
||||
${TINT_DIR}/src/tint/lang/wgsl/*.h
|
||||
${TINT_DIR}/src/tint/api/*.cc
|
||||
${TINT_DIR}/src/tint/api/*.h
|
||||
)
|
||||
|
||||
add_library(tint STATIC ${TINT_SOURCES})
|
||||
|
||||
set_target_properties(tint PROPERTIES FOLDER "bgfx")
|
||||
|
||||
target_include_directories(
|
||||
tint
|
||||
PUBLIC ${TINT_DIR}
|
||||
${TINT_DIR}/src/tint
|
||||
PRIVATE ${TINT_DIR}/third_party/protobuf/src
|
||||
${TINT_DIR}/third_party/abseil-cpp
|
||||
${SPIRV_TOOLS}
|
||||
${SPIRV_TOOLS}/include
|
||||
${SPIRV_TOOLS}/include/generated
|
||||
${SPIRV_HEADERS}/include
|
||||
)
|
||||
|
||||
target_compile_definitions(
|
||||
tint
|
||||
PRIVATE TINT_BUILD_GLSL_WRITER=0
|
||||
TINT_BUILD_HLSL_WRITER=0
|
||||
TINT_BUILD_MSL_WRITER=0
|
||||
TINT_BUILD_NULL_WRITER=0
|
||||
TINT_BUILD_SPV_READER=1
|
||||
TINT_BUILD_SPV_WRITER=0
|
||||
TINT_BUILD_WGSL_READER=0
|
||||
TINT_BUILD_WGSL_WRITER=1
|
||||
TINT_ENABLE_IR_VALIDATION=0
|
||||
)
|
||||
|
||||
if(WIN32)
|
||||
target_compile_definitions(
|
||||
tint
|
||||
PRIVATE TINT_BUILD_IS_LINUX=0
|
||||
TINT_BUILD_IS_MAC=0
|
||||
TINT_BUILD_IS_WIN=1
|
||||
)
|
||||
elseif(APPLE)
|
||||
target_compile_definitions(
|
||||
tint
|
||||
PRIVATE TINT_BUILD_IS_LINUX=0
|
||||
TINT_BUILD_IS_MAC=1
|
||||
TINT_BUILD_IS_WIN=0
|
||||
)
|
||||
else()
|
||||
target_compile_definitions(
|
||||
tint
|
||||
PRIVATE TINT_BUILD_IS_LINUX=1
|
||||
TINT_BUILD_IS_MAC=0
|
||||
TINT_BUILD_IS_WIN=0
|
||||
)
|
||||
endif()
|
||||
|
||||
if(MSVC)
|
||||
target_compile_options(
|
||||
tint
|
||||
PRIVATE "/Zc:preprocessor"
|
||||
)
|
||||
endif()
|
||||
@@ -26,6 +26,7 @@ if(BGFX_BUILD_TOOLS_SHADER)
|
||||
include(3rdparty/glsl-optimizer.cmake)
|
||||
include(3rdparty/fcpp.cmake)
|
||||
include(3rdparty/webgpu.cmake)
|
||||
include(3rdparty/tint.cmake)
|
||||
include(shaderc.cmake)
|
||||
endif()
|
||||
|
||||
|
||||
@@ -19,22 +19,25 @@ if(NOT IS_DIRECTORY ${BGFX_DIR})
|
||||
return()
|
||||
endif()
|
||||
|
||||
if(NOT APPLE)
|
||||
set(BGFX_AMALGAMATED_SOURCE ${BGFX_DIR}/src/amalgamated.cpp)
|
||||
else()
|
||||
set(BGFX_AMALGAMATED_SOURCE ${BGFX_DIR}/src/amalgamated.mm)
|
||||
endif()
|
||||
|
||||
# Grab the bgfx source files
|
||||
file(
|
||||
GLOB
|
||||
BGFX_SOURCES
|
||||
${BGFX_DIR}/src/*.cpp
|
||||
${BGFX_DIR}/src/*.mm
|
||||
${BGFX_DIR}/src/*.h
|
||||
${BGFX_DIR}/include/bgfx/*.h
|
||||
${BGFX_DIR}/include/bgfx/c99/*.h
|
||||
)
|
||||
|
||||
if(APPLE)
|
||||
file(GLOB BGFX_OBJC_SOURCES ${BGFX_DIR}/src/*.mm)
|
||||
list(APPEND BGFX_SOURCES ${BGFX_OBJC_SOURCES})
|
||||
list(REMOVE_ITEM BGFX_SOURCES ${BGFX_DIR}/src/amalgamated.cpp)
|
||||
set(BGFX_AMALGAMATED_SOURCE ${BGFX_DIR}/src/amalgamated.mm)
|
||||
else()
|
||||
set(BGFX_AMALGAMATED_SOURCE ${BGFX_DIR}/src/amalgamated.cpp)
|
||||
endif()
|
||||
|
||||
if(BGFX_AMALGAMATED)
|
||||
set(BGFX_NOBUILD ${BGFX_SOURCES})
|
||||
list(REMOVE_ITEM BGFX_NOBUILD ${BGFX_AMALGAMATED_SOURCE})
|
||||
@@ -43,8 +46,7 @@ if(BGFX_AMALGAMATED)
|
||||
endforeach()
|
||||
else()
|
||||
# Do not build using amalgamated sources
|
||||
set_source_files_properties(${BGFX_DIR}/src/amalgamated.cpp PROPERTIES HEADER_FILE_ONLY ON)
|
||||
set_source_files_properties(${BGFX_DIR}/src/amalgamated.mm PROPERTIES HEADER_FILE_ONLY ON)
|
||||
set_source_files_properties(${BGFX_AMALGAMATED_SOURCE} PROPERTIES HEADER_FILE_ONLY ON)
|
||||
endif()
|
||||
|
||||
# Create the bgfx target
|
||||
|
||||
@@ -31,6 +31,8 @@ function(add_bgfx_shader FILE FOLDER)
|
||||
set(COMMON FILE ${FILE} ${TYPE} INCLUDES ${BGFX_DIR}/src)
|
||||
set(OUTPUTS "")
|
||||
set(OUTPUTS_PRETTY "")
|
||||
set(OUTPUT_FILES "")
|
||||
set(COMMANDS "")
|
||||
|
||||
if(WIN32)
|
||||
# dx11
|
||||
@@ -85,11 +87,15 @@ function(add_bgfx_shader FILE FOLDER)
|
||||
set(SPIRV_OUTPUT ${BGFX_DIR}/examples/runtime/shaders/spirv/${FILENAME}.bin)
|
||||
_bgfx_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 "")
|
||||
set(OUTPUTS_PRETTY "${OUTPUTS_PRETTY}SPIRV, ")
|
||||
endif()
|
||||
|
||||
# wgsl
|
||||
set(WGSL_OUTPUT ${BGFX_DIR}/examples/runtime/shaders/wgsl/${FILENAME}.bin)
|
||||
_bgfx_shaderc_parse(WGSL ${COMMON} LINUX PROFILE wgsl OUTPUT ${WGSL_OUTPUT})
|
||||
list(APPEND OUTPUTS "WGSL")
|
||||
set(OUTPUTS_PRETTY "${OUTPUTS_PRETTY}WGSL")
|
||||
|
||||
foreach(OUT ${OUTPUTS})
|
||||
list(APPEND OUTPUT_FILES ${${OUT}_OUTPUT})
|
||||
list(APPEND COMMANDS COMMAND "bgfx::shaderc" ${${OUT}})
|
||||
|
||||
@@ -19,16 +19,6 @@ file(
|
||||
|
||||
add_executable(shaderc ${SHADERC_SOURCES})
|
||||
|
||||
target_link_libraries(
|
||||
shaderc
|
||||
PRIVATE bx
|
||||
bgfx-vertexlayout
|
||||
fcpp
|
||||
glslang
|
||||
glsl-optimizer
|
||||
spirv-opt
|
||||
spirv-cross
|
||||
)
|
||||
target_link_libraries(
|
||||
shaderc
|
||||
PRIVATE bx
|
||||
@@ -40,6 +30,13 @@ target_link_libraries(
|
||||
spirv-opt
|
||||
spirv-cross
|
||||
webgpu
|
||||
tint
|
||||
)
|
||||
|
||||
target_include_directories(
|
||||
shaderc
|
||||
PRIVATE ${BGFX_DIR}/3rdparty/dawn
|
||||
${BGFX_DIR}/3rdparty/dawn/src
|
||||
)
|
||||
if(BGFX_AMALGAMATED)
|
||||
target_link_libraries(shaderc PRIVATE bgfx-shader)
|
||||
|
||||
@@ -60,6 +60,11 @@ endforeach()
|
||||
|
||||
add_library(bx STATIC ${BX_SOURCES})
|
||||
|
||||
if(MSVC)
|
||||
target_compile_options(bx PRIVATE /EHs-c-)
|
||||
target_compile_definitions(bx PRIVATE _HAS_EXCEPTIONS=0)
|
||||
endif()
|
||||
|
||||
# Put in a "bgfx" folder in Visual Studio
|
||||
set_target_properties(bx PROPERTIES FOLDER "bgfx")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user