Compare commits
10
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d49eb5e111 | ||
|
|
8812a35cbd | ||
|
|
35d7b819e1 | ||
|
|
9b2959d3a4 | ||
|
|
7309a05ac3 | ||
|
|
2132e5cda5 | ||
|
|
96b8015fb4 | ||
|
|
9c27bfa3e1 | ||
|
|
25a12b47c9 | ||
|
|
052e95eb2f |
@@ -26,7 +26,7 @@ jobs:
|
||||
cd build/web && printf "y" | ./build.sh release
|
||||
- name: Deploy to npm
|
||||
run: |
|
||||
cd out/cmake-webgl-release/web/filament-js
|
||||
cd out/cmake-wasm-release/web/filament-js
|
||||
npm publish
|
||||
env:
|
||||
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
||||
|
||||
@@ -31,6 +31,8 @@ jobs:
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- uses: ./.github/actions/mac-prereq
|
||||
- name: Select Xcode 16.2
|
||||
run: sudo xcode-select -s /Applications/Xcode_16.2.app/Contents/Developer
|
||||
- name: Run build script
|
||||
run: |
|
||||
cd build/ios && printf "y" | ./build.sh continuous
|
||||
|
||||
@@ -184,6 +184,8 @@ jobs:
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- uses: ./.github/actions/mac-prereq
|
||||
- name: Select Xcode 16.2
|
||||
run: sudo xcode-select -s /Applications/Xcode_16.2.app/Contents/Developer
|
||||
- name: Run build script
|
||||
run: |
|
||||
cd build/ios && printf "y" | ./build.sh presubmit
|
||||
|
||||
@@ -286,6 +286,8 @@ jobs:
|
||||
with:
|
||||
ref: ${{ steps.git_ref.outputs.ref }}
|
||||
- uses: ./.github/actions/mac-prereq
|
||||
- name: Select Xcode 16.2
|
||||
run: sudo xcode-select -s /Applications/Xcode_16.2.app/Contents/Developer
|
||||
- name: Run build script
|
||||
env:
|
||||
TAG: ${{ steps.git_ref.outputs.tag }}
|
||||
|
||||
+23
-25
@@ -177,7 +177,7 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
||||
# ==================================================================================================
|
||||
# OS specific
|
||||
# ==================================================================================================
|
||||
if (UNIX AND NOT APPLE AND NOT ANDROID AND NOT WEBGL)
|
||||
if (UNIX AND NOT APPLE AND NOT ANDROID AND NOT WASM)
|
||||
set(LINUX TRUE)
|
||||
else()
|
||||
# since cmake 3.25 LINUX is automatically set based on CMAKE_SYSTEM_NAME, which the android
|
||||
@@ -218,7 +218,7 @@ if (LINUX)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if (ANDROID OR WEBGL OR IOS OR FILAMENT_LINUX_IS_MOBILE)
|
||||
if (ANDROID OR WASM OR IOS OR FILAMENT_LINUX_IS_MOBILE)
|
||||
set(IS_MOBILE_TARGET TRUE)
|
||||
endif()
|
||||
|
||||
@@ -226,7 +226,7 @@ if (ANDROID)
|
||||
add_definitions(-D__ANDROID_UNAVAILABLE_SYMBOLS_ARE_WEAK__)
|
||||
endif()
|
||||
|
||||
if (NOT ANDROID AND NOT WEBGL AND NOT IOS AND NOT FILAMENT_LINUX_IS_MOBILE)
|
||||
if (NOT ANDROID AND NOT WASM AND NOT IOS AND NOT FILAMENT_LINUX_IS_MOBILE)
|
||||
set(IS_HOST_PLATFORM TRUE)
|
||||
endif()
|
||||
|
||||
@@ -473,20 +473,20 @@ if (NOT MSVC)
|
||||
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -ffunction-sections -fdata-sections")
|
||||
endif()
|
||||
|
||||
if (ANDROID OR WEBGL)
|
||||
# On Android and WebGL RELEASE builds, we omit unwind info to save space.
|
||||
if (ANDROID OR WASM)
|
||||
# On Android and WASM RELEASE builds, we omit unwind info to save space.
|
||||
# (We keep unwind info on iOS to allow readable stack traces in crash reports.)
|
||||
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -fno-unwind-tables -fno-asynchronous-unwind-tables")
|
||||
endif()
|
||||
|
||||
# With WebGL, we disable RTTI because we pass emscripten::val back and forth
|
||||
# With WASM, we disable RTTI because we pass emscripten::val back and forth
|
||||
# between C++ and JavaScript in order to efficiently access typed arrays, which are unbound.
|
||||
# NOTE: This is not documented in emscripten so we should consider a different approach.
|
||||
if (WEBGL)
|
||||
if (WASM)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-rtti")
|
||||
endif()
|
||||
|
||||
if (WEBGL_PTHREADS)
|
||||
if (WASM_PTHREADS)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread")
|
||||
endif()
|
||||
|
||||
@@ -503,7 +503,7 @@ if (ANDROID)
|
||||
# keep STL debug infos (mimics what the NDK does)
|
||||
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fno-limit-debug-info")
|
||||
endif()
|
||||
if (NOT MSVC AND NOT WEBGL)
|
||||
if (NOT MSVC AND NOT WASM)
|
||||
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fstack-protector")
|
||||
endif()
|
||||
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${EXTRA_SANITIZE_OPTIONS}")
|
||||
@@ -522,7 +522,7 @@ endif()
|
||||
# Linker flags
|
||||
# ==================================================================================================
|
||||
# Strip unused sections
|
||||
if (NOT WEBGL)
|
||||
if (NOT WASM)
|
||||
set(GC_SECTIONS "-Wl,--gc-sections")
|
||||
endif()
|
||||
|
||||
@@ -556,7 +556,7 @@ endif()
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${GC_SECTIONS} ${NO_EXEC_STACK}")
|
||||
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${GC_SECTIONS} ${B_SYMBOLIC_FUNCTIONS} ${BINARY_ALIGNMENT}")
|
||||
|
||||
if (WEBGL_PTHREADS)
|
||||
if (WASM_PTHREADS)
|
||||
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -pthread")
|
||||
endif()
|
||||
|
||||
@@ -586,7 +586,7 @@ endif()
|
||||
|
||||
# By default, build with Vulkan support on desktop platforms, although clients must request to use
|
||||
# it at run time.
|
||||
if (WIN32 OR WEBGL OR IOS)
|
||||
if (WIN32 OR WASM OR IOS)
|
||||
option(FILAMENT_SUPPORTS_VULKAN "Include the Vulkan backend" OFF)
|
||||
else()
|
||||
option(FILAMENT_SUPPORTS_VULKAN "Include the Vulkan backend" ON)
|
||||
@@ -603,8 +603,8 @@ if (FILAMENT_SUPPORTS_WEBP_TEXTURES)
|
||||
add_definitions(-DFILAMENT_SUPPORTS_WEBP_TEXTURES)
|
||||
endif()
|
||||
|
||||
# Build with Metal support on non-WebGL Apple platforms.
|
||||
if (APPLE AND NOT WEBGL)
|
||||
# Build with Metal support on non-WASM Apple platforms.
|
||||
if (APPLE AND NOT WASM)
|
||||
option(FILAMENT_SUPPORTS_METAL "Include the Metal backend" ON)
|
||||
else()
|
||||
option(FILAMENT_SUPPORTS_METAL "Include the Metal backend" OFF)
|
||||
@@ -614,7 +614,7 @@ if (FILAMENT_SUPPORTS_METAL)
|
||||
endif()
|
||||
|
||||
# Building filamat increases build times and isn't required for web, so turn it off by default.
|
||||
if (NOT WEBGL)
|
||||
if (NOT WASM)
|
||||
option(FILAMENT_BUILD_FILAMAT "Build filamat and JNI buildings" ON)
|
||||
else()
|
||||
option(FILAMENT_BUILD_FILAMAT "Build filamat and JNI buildings" OFF)
|
||||
@@ -691,11 +691,6 @@ if (FILAMENT_SUPPORTS_WEBGPU)
|
||||
set(MATC_API_FLAGS ${MATC_API_FLAGS} -a webgpu --variant-filter=stereo)
|
||||
endif()
|
||||
|
||||
# Disable ESSL 1.0 code generation.
|
||||
if (NOT FILAMENT_ENABLE_FEATURE_LEVEL_0)
|
||||
set(MATC_API_FLAGS ${MATC_API_FLAGS} -1)
|
||||
endif()
|
||||
|
||||
# Enable debug info (preserves names in SPIR-V)
|
||||
if (FILAMENT_ENABLE_MATDBG)
|
||||
set(MATC_OPT_FLAGS ${MATC_OPT_FLAGS} -d)
|
||||
@@ -732,6 +727,9 @@ string(TOLOWER "${DIST_ARCH}" DIST_ARCH)
|
||||
string(REPLACE "amd64" "x86_64" DIST_ARCH "${DIST_ARCH}")
|
||||
if (NOT DIST_DIR)
|
||||
set(DIST_DIR "${DIST_ARCH}")
|
||||
if (PLATFORM_NAME)
|
||||
set(DIST_DIR "${DIST_DIR}-${PLATFORM_NAME}")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# ==================================================================================================
|
||||
@@ -840,7 +838,7 @@ if (FILAMENT_IMPORT_PREBUILT_EXECUTABLES_DIR)
|
||||
set(IMPORT_EXECUTABLES_DIR ${FILAMENT_IMPORT_PREBUILT_EXECUTABLES_DIR})
|
||||
endif()
|
||||
|
||||
if (WEBGL)
|
||||
if (WASM)
|
||||
set(IMPORT_EXECUTABLES ${FILAMENT}/${IMPORT_EXECUTABLES_DIR}/ImportExecutables-Release.cmake)
|
||||
else()
|
||||
if (FILAMENT_EXPORT_PREBUILT_EXECUTABLES OR FILAMENT_IMPORT_PREBUILT_EXECUTABLES)
|
||||
@@ -875,7 +873,7 @@ function(get_resgen_vars ARCHIVE_DIR ARCHIVE_NAME)
|
||||
set(RESGEN_HEADER "${ARCHIVE_DIR}/${ARCHIVE_NAME}.h" PARENT_SCOPE)
|
||||
# Visual Studio makes it difficult to use assembly without using MASM. MASM doesn't support
|
||||
# the equivalent of .incbin, so on Windows we'll just tell resgen to output a C file.
|
||||
if (WEBGL OR WIN32 OR ANDROID_ON_WINDOWS)
|
||||
if (WASM OR WIN32 OR ANDROID_ON_WINDOWS)
|
||||
set(RESGEN_OUTPUTS "${OUTPUTS};${ARCHIVE_DIR}/${ARCHIVE_NAME}.c" PARENT_SCOPE)
|
||||
set(RESGEN_FLAGS -qcx ${ARCHIVE_DIR} -p ${ARCHIVE_NAME} PARENT_SCOPE)
|
||||
set(RESGEN_SOURCE "${ARCHIVE_DIR}/${ARCHIVE_NAME}.c" PARENT_SCOPE)
|
||||
@@ -971,7 +969,7 @@ if (FILAMENT_SUPPORTS_VULKAN)
|
||||
add_subdirectory(${EXTERNAL}/spirv-headers)
|
||||
endif()
|
||||
|
||||
if (FILAMENT_SUPPORTS_WEBGPU)
|
||||
if (FILAMENT_SUPPORTS_WEBGPU AND NOT WASM)
|
||||
add_subdirectory(${EXTERNAL}/dawn/tnt/)
|
||||
endif()
|
||||
|
||||
@@ -980,7 +978,7 @@ add_subdirectory(${FILAMENT}/filament)
|
||||
|
||||
set(FILAMENT_SAMPLES_BINARY_DIR ${PROJECT_BINARY_DIR}/samples)
|
||||
|
||||
if (WEBGL)
|
||||
if (WASM)
|
||||
add_subdirectory(web/filament-js)
|
||||
add_subdirectory(web/examples)
|
||||
endif()
|
||||
@@ -1023,7 +1021,7 @@ if (IS_HOST_PLATFORM)
|
||||
add_subdirectory(${TOOLS}/specgen)
|
||||
endif()
|
||||
|
||||
# Generate exported executables for cross-compiled builds (Android, WebGL, and iOS)
|
||||
# Generate exported executables for cross-compiled builds (Android, WASM, and iOS)
|
||||
if ((NOT CMAKE_CROSSCOMPILING AND NOT FILAMENT_IMPORT_PREBUILT_EXECUTABLES) OR FILAMENT_EXPORT_PREBUILT_EXECUTABLES)
|
||||
export(TARGETS matc cmgen filamesh mipgen resgen uberz glslminifier FILE ${IMPORT_EXECUTABLES})
|
||||
endif()
|
||||
|
||||
@@ -6,3 +6,6 @@
|
||||
appropriate header in [RELEASE_NOTES.md](./RELEASE_NOTES.md).
|
||||
|
||||
## Release notes for next branch cut
|
||||
|
||||
- iOS: add Apple silicon (`arm64`) iOS Simulator support. The sample Xcode projects now require Xcode 16+ (CI is pinned to Xcode 16.2).
|
||||
- WEBGL_PTHREADS renamed to WASM_PTHREADS in CMakeLists.txt
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
[](https://github.com/google/filament/actions/workflows/status-web.yml)
|
||||
|
||||
Filament is a real-time physically based rendering engine for Android, iOS, Linux, macOS, Windows,
|
||||
and WebGL. It is designed to be as small as possible and as efficient as possible on Android.
|
||||
and WASM. It is designed to be as small as possible and as efficient as possible on Android.
|
||||
|
||||
## Download
|
||||
|
||||
@@ -31,7 +31,7 @@ repositories {
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation 'com.google.android.filament:filament-android:1.71.3'
|
||||
implementation 'com.google.android.filament:filament-android:1.71.2'
|
||||
}
|
||||
```
|
||||
|
||||
@@ -50,7 +50,7 @@ Here are all the libraries available in the group `com.google.android.filament`:
|
||||
iOS projects can use CocoaPods to install the latest release:
|
||||
|
||||
```shell
|
||||
pod 'Filament', '~> 1.71.3'
|
||||
pod 'Filament', '~> 1.71.2'
|
||||
```
|
||||
|
||||
## Documentation
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
GROUP=com.google.android.filament
|
||||
VERSION_NAME=1.71.3
|
||||
VERSION_NAME=1.71.2
|
||||
|
||||
POM_DESCRIPTION=Real-time physically based rendering engine for Android.
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
# Host tools required by Android, WebGL, and iOS builds
|
||||
# Host tools required by Android, WASM, and iOS builds
|
||||
MOBILE_HOST_TOOLS="matc resgen cmgen filamesh uberz"
|
||||
WEB_HOST_TOOLS="${MOBILE_HOST_TOOLS} mipgen filamesh"
|
||||
|
||||
@@ -34,7 +34,7 @@ function print_help {
|
||||
echo " -m"
|
||||
echo " Compile with make instead of ninja."
|
||||
echo " -p platform1,platform2,..."
|
||||
echo " Where platformN is [desktop|android|ios|webgl|all]."
|
||||
echo " Where platformN is [desktop|android|ios|wasm|all]."
|
||||
echo " Platform(s) to build, defaults to desktop."
|
||||
echo " Building for iOS will automatically perform a partial desktop build."
|
||||
echo " -q abi1,abi2,..."
|
||||
@@ -53,8 +53,8 @@ function print_help {
|
||||
echo " -e"
|
||||
echo " Enable EGL on Linux support for desktop builds."
|
||||
echo " -l"
|
||||
echo " Build arm64/x86_64 universal libraries."
|
||||
echo " For iOS, this builds universal binaries for devices and the simulator (implies -s)."
|
||||
echo " Build universal libraries/frameworks."
|
||||
echo " For iOS, this builds XCFrameworks for devices and the simulator (implies -s)."
|
||||
echo " For macOS, this builds universal binaries for both Apple silicon and Intel-based Macs."
|
||||
echo " -k sample1,sample2,..."
|
||||
echo " When building for Android, also build select sample APKs."
|
||||
@@ -173,7 +173,7 @@ ISSUE_RELEASE_BUILD=false
|
||||
ISSUE_ANDROID_BUILD=false
|
||||
ISSUE_IOS_BUILD=false
|
||||
ISSUE_DESKTOP_BUILD=true
|
||||
ISSUE_WEBGL_BUILD=false
|
||||
ISSUE_WASM_BUILD=false
|
||||
|
||||
# Default: all
|
||||
ABI_ARMEABI_V7A=true
|
||||
@@ -356,18 +356,23 @@ function build_desktop {
|
||||
fi
|
||||
}
|
||||
|
||||
function build_webgl_with_target {
|
||||
function build_wasm_with_target {
|
||||
local lc_target=$(echo "$1" | tr '[:upper:]' '[:lower:]')
|
||||
|
||||
echo "Building WebGL ${lc_target}..."
|
||||
mkdir -p "out/cmake-webgl-${lc_target}"
|
||||
pushd "out/cmake-webgl-${lc_target}" > /dev/null
|
||||
echo "Building WASM ${lc_target}..."
|
||||
mkdir -p "out/cmake-wasm-${lc_target}"
|
||||
pushd "out/cmake-wasm-${lc_target}" > /dev/null
|
||||
|
||||
if [[ ! "${BUILD_TARGETS}" ]]; then
|
||||
BUILD_TARGETS=${BUILD_CUSTOM_TARGETS}
|
||||
ISSUE_CMAKE_ALWAYS=true
|
||||
fi
|
||||
|
||||
if [[ "${WEBGPU_OPTION}" == *"-DFILAMENT_SUPPORTS_WEBGPU=ON"* ]]; then
|
||||
WEBGPU_OPTION="${WEBGPU_OPTION} -DCMAKE_CXX_FLAGS=\"--use-port=emdawnwebgpu\""
|
||||
WEBGPU_OPTION="${WEBGPU_OPTION} -DCMAKE_C_FLAGS=\"--use-port=emdawnwebgpu\""
|
||||
fi
|
||||
|
||||
if [[ ! -d "CMakeFiles" ]] || [[ "${ISSUE_CMAKE_ALWAYS}" == "true" ]]; then
|
||||
# Apply the emscripten environment within a subshell.
|
||||
(
|
||||
@@ -378,13 +383,13 @@ function build_webgl_with_target {
|
||||
${IMPORT_EXECUTABLES_DIR_OPTION} \
|
||||
-DCMAKE_TOOLCHAIN_FILE="${EMSDK}/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake" \
|
||||
-DCMAKE_BUILD_TYPE="$1" \
|
||||
-DCMAKE_INSTALL_PREFIX="../webgl-${lc_target}/filament" \
|
||||
-DWEBGL=1 \
|
||||
-DCMAKE_INSTALL_PREFIX="../wasm-${lc_target}/filament" \
|
||||
-DWASM=1 \
|
||||
${WEBGPU_OPTION} \
|
||||
${BACKEND_DEBUG_FLAG_OPTION} \
|
||||
${EXCEPTIONS_OPTION} \
|
||||
../..
|
||||
ln -sf "out/cmake-webgl-${lc_target}/compile_commands.json" \
|
||||
ln -sf "out/cmake-wasm-${lc_target}/compile_commands.json" \
|
||||
../../compile_commands.json
|
||||
${BUILD_COMMAND} ${BUILD_TARGETS}
|
||||
)
|
||||
@@ -416,7 +421,7 @@ function build_webgl_with_target {
|
||||
popd > /dev/null
|
||||
}
|
||||
|
||||
function build_webgl {
|
||||
function build_wasm {
|
||||
# For the host tools, suppress install and always use Release.
|
||||
local old_install_command=${INSTALL_COMMAND}; INSTALL_COMMAND=
|
||||
local old_issue_debug_build=${ISSUE_DEBUG_BUILD}; ISSUE_DEBUG_BUILD=false
|
||||
@@ -429,11 +434,11 @@ function build_webgl {
|
||||
ISSUE_RELEASE_BUILD=${old_issue_release_build}
|
||||
|
||||
if [[ "${ISSUE_DEBUG_BUILD}" == "true" ]]; then
|
||||
build_webgl_with_target "Debug"
|
||||
build_wasm_with_target "Debug"
|
||||
fi
|
||||
|
||||
if [[ "${ISSUE_RELEASE_BUILD}" == "true" ]]; then
|
||||
build_webgl_with_target "Release"
|
||||
build_wasm_with_target "Release"
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -685,9 +690,9 @@ function build_ios_target {
|
||||
local platform=$3
|
||||
|
||||
echo "Building iOS ${lc_target} (${arch}) for ${platform}..."
|
||||
mkdir -p "out/cmake-ios-${lc_target}-${arch}"
|
||||
mkdir -p "out/cmake-ios-${lc_target}-${arch}-${platform}"
|
||||
|
||||
pushd "out/cmake-ios-${lc_target}-${arch}" > /dev/null
|
||||
pushd "out/cmake-ios-${lc_target}-${arch}-${platform}" > /dev/null
|
||||
|
||||
if [[ ! -d "CMakeFiles" ]] || [[ "${ISSUE_CMAKE_ALWAYS}" == "true" ]]; then
|
||||
cmake \
|
||||
@@ -746,38 +751,79 @@ function build_ios {
|
||||
# only arm64 devices support OpenGL 3.0 / Metal
|
||||
|
||||
if [[ "${ISSUE_DEBUG_BUILD}" == "true" ]]; then
|
||||
local out_dir="out/ios-debug/filament"
|
||||
local lib_dir="${out_dir}/lib"
|
||||
|
||||
build_ios_target "Debug" "arm64" "iphoneos"
|
||||
|
||||
if [[ "${IOS_BUILD_SIMULATOR}" == "true" ]]; then
|
||||
build_ios_target "Debug" "arm64" "iphonesimulator"
|
||||
build_ios_target "Debug" "x86_64" "iphonesimulator"
|
||||
|
||||
# Create a universal library for the simulator
|
||||
build/ios/create-universal-libs.sh \
|
||||
-o "${lib_dir}/universal" \
|
||||
"${lib_dir}/arm64-iphonesimulator" \
|
||||
"${lib_dir}/x86_64-iphonesimulator"
|
||||
fi
|
||||
|
||||
if [[ "${BUILD_UNIVERSAL_LIBRARIES}" == "true" ]]; then
|
||||
build/ios/create-universal-libs.sh \
|
||||
-o out/ios-debug/filament/lib/universal \
|
||||
out/ios-debug/filament/lib/arm64 \
|
||||
out/ios-debug/filament/lib/x86_64
|
||||
rm -rf out/ios-debug/filament/lib/arm64
|
||||
rm -rf out/ios-debug/filament/lib/x86_64
|
||||
# Always create XCFrameworks
|
||||
local xcframework_paths=("${lib_dir}/arm64-iphoneos")
|
||||
if [[ -d "${lib_dir}/universal" ]]; then
|
||||
xcframework_paths+=("${lib_dir}/universal")
|
||||
elif [[ -d "${lib_dir}/arm64-iphonesimulator" ]]; then
|
||||
# If we built only one simulator arch but not both
|
||||
xcframework_paths+=("${lib_dir}/arm64-iphonesimulator")
|
||||
elif [[ -d "${lib_dir}/x86_64-iphonesimulator" ]]; then
|
||||
xcframework_paths+=("${lib_dir}/x86_64-iphonesimulator")
|
||||
fi
|
||||
|
||||
build/ios/create-xc-frameworks.sh -o "${lib_dir}" "${xcframework_paths[@]}"
|
||||
|
||||
rm -rf \
|
||||
"${lib_dir}/arm64-iphoneos" \
|
||||
"${lib_dir}/arm64-iphonesimulator" \
|
||||
"${lib_dir}/x86_64-iphonesimulator" \
|
||||
"${lib_dir}/universal"
|
||||
|
||||
archive_ios "Debug"
|
||||
fi
|
||||
|
||||
if [[ "${ISSUE_RELEASE_BUILD}" == "true" ]]; then
|
||||
local out_dir="out/ios-release/filament"
|
||||
local lib_dir="${out_dir}/lib"
|
||||
|
||||
build_ios_target "Release" "arm64" "iphoneos"
|
||||
|
||||
if [[ "${IOS_BUILD_SIMULATOR}" == "true" ]]; then
|
||||
build_ios_target "Release" "arm64" "iphonesimulator"
|
||||
build_ios_target "Release" "x86_64" "iphonesimulator"
|
||||
|
||||
# Create a universal library for the simulator
|
||||
build/ios/create-universal-libs.sh \
|
||||
-o "${lib_dir}/universal" \
|
||||
"${lib_dir}/arm64-iphonesimulator" \
|
||||
"${lib_dir}/x86_64-iphonesimulator"
|
||||
fi
|
||||
|
||||
if [[ "${BUILD_UNIVERSAL_LIBRARIES}" == "true" ]]; then
|
||||
build/ios/create-universal-libs.sh \
|
||||
-o out/ios-release/filament/lib/universal \
|
||||
out/ios-release/filament/lib/arm64 \
|
||||
out/ios-release/filament/lib/x86_64
|
||||
rm -rf out/ios-release/filament/lib/arm64
|
||||
rm -rf out/ios-release/filament/lib/x86_64
|
||||
# Always create XCFrameworks
|
||||
local xcframework_paths=("${lib_dir}/arm64-iphoneos")
|
||||
if [[ -d "${lib_dir}/universal" ]]; then
|
||||
xcframework_paths+=("${lib_dir}/universal")
|
||||
elif [[ -d "${lib_dir}/arm64-iphonesimulator" ]]; then
|
||||
xcframework_paths+=("${lib_dir}/arm64-iphonesimulator")
|
||||
elif [[ -d "${lib_dir}/x86_64-iphonesimulator" ]]; then
|
||||
xcframework_paths+=("${lib_dir}/x86_64-iphonesimulator")
|
||||
fi
|
||||
|
||||
build/ios/create-xc-frameworks.sh -o "${lib_dir}" "${xcframework_paths[@]}"
|
||||
|
||||
rm -rf \
|
||||
"${lib_dir}/arm64-iphoneos" \
|
||||
"${lib_dir}/arm64-iphonesimulator" \
|
||||
"${lib_dir}/x86_64-iphonesimulator" \
|
||||
"${lib_dir}/universal"
|
||||
|
||||
archive_ios "Release"
|
||||
fi
|
||||
}
|
||||
@@ -809,7 +855,7 @@ function validate_build_command {
|
||||
fi
|
||||
fi
|
||||
# If building a WebAssembly module, ensure we know where Emscripten lives.
|
||||
if [[ "${EMSDK}" == "" ]] && [[ "${ISSUE_WEBGL_BUILD}" == "true" ]]; then
|
||||
if [[ "${EMSDK}" == "" ]] && [[ "${ISSUE_WASM_BUILD}" == "true" ]]; then
|
||||
echo "Error: EMSDK is not set, exiting"
|
||||
exit 1
|
||||
fi
|
||||
@@ -835,7 +881,7 @@ function run_test {
|
||||
}
|
||||
|
||||
function run_tests {
|
||||
if [[ "${ISSUE_WEBGL_BUILD}" == "true" ]]; then
|
||||
if [[ "${ISSUE_WASM_BUILD}" == "true" ]]; then
|
||||
if ! echo "TypeScript $(tsc --version)" ; then
|
||||
tsc --noEmit \
|
||||
third_party/gl-matrix/gl-matrix.d.ts \
|
||||
@@ -920,18 +966,18 @@ while getopts ":hacCfgimp:q:uvWslwedtk:bVx:S:X:Py:E" opt; do
|
||||
ios)
|
||||
ISSUE_IOS_BUILD=true
|
||||
;;
|
||||
webgl)
|
||||
ISSUE_WEBGL_BUILD=true
|
||||
wasm)
|
||||
ISSUE_WASM_BUILD=true
|
||||
;;
|
||||
all)
|
||||
ISSUE_ANDROID_BUILD=true
|
||||
ISSUE_IOS_BUILD=true
|
||||
ISSUE_DESKTOP_BUILD=true
|
||||
ISSUE_WEBGL_BUILD=false
|
||||
ISSUE_WASM_BUILD=false
|
||||
;;
|
||||
*)
|
||||
echo "Unknown platform ${platform}"
|
||||
echo "Platform must be one of [desktop|android|ios|webgl|all]"
|
||||
echo "Platform must be one of [desktop|android|ios|wasm|all]"
|
||||
echo ""
|
||||
exit 1
|
||||
;;
|
||||
@@ -986,7 +1032,8 @@ while getopts ":hacCfgimp:q:uvWslwedtk:bVx:S:X:Py:E" opt; do
|
||||
echo "Consider using -c after changing this option to clear the Gradle cache."
|
||||
;;
|
||||
W)
|
||||
WEBGPU_OPTION="-DFILAMENT_SUPPORTS_WEBGPU=ON"
|
||||
WEBGPU_OPTION='-DFILAMENT_SUPPORTS_WEBGPU=ON'
|
||||
|
||||
WEBGPU_ANDROID_GRADLE_OPTION="-Pcom.google.android.filament.include-webgpu"
|
||||
echo "Enable support for WebGPU(Experimental) in the core Filament library."
|
||||
;;
|
||||
@@ -1112,8 +1159,8 @@ if [[ "${ISSUE_IOS_BUILD}" == "true" ]]; then
|
||||
check_debug_release_build build_ios
|
||||
fi
|
||||
|
||||
if [[ "${ISSUE_WEBGL_BUILD}" == "true" ]]; then
|
||||
check_debug_release_build build_webgl
|
||||
if [[ "${ISSUE_WASM_BUILD}" == "true" ]]; then
|
||||
check_debug_release_build build_wasm
|
||||
fi
|
||||
|
||||
if [[ "${RUN_TESTS}" == "true" ]]; then
|
||||
|
||||
@@ -21,7 +21,7 @@ fi
|
||||
|
||||
OS_NAME=$(uname -s)
|
||||
LLVM_VERSION=${GITHUB_LLVM_VERSION-17}
|
||||
MESA_VERSION=${GITHUB_MESA_VERSION-24.2.1}
|
||||
MESA_VERSION=${GITHUB_MESA_VERSION-25.0.6}
|
||||
ORIG_DIR=$(pwd)
|
||||
MESA_DIR=${MESA_DIR-${ORIG_DIR}/mesa}
|
||||
|
||||
@@ -87,7 +87,8 @@ if [[ "$OS_NAME" == "Linux" ]]; then
|
||||
elif [[ "$OS_NAME" == "Darwin" ]]; then
|
||||
if command -v brew > /dev/null 2>&1; then
|
||||
HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=true brew install autoconf automake libx11 libxext libxrandr \
|
||||
llvm@${LLVM_VERSION} ninja meson pkg-config libxshmfence
|
||||
llvm@${LLVM_VERSION} ninja meson pkg-config libxshmfence \
|
||||
glslang
|
||||
brew link --overwrite llvm@${LLVM_VERSION}
|
||||
# For reasons unknown, this is necessary for pkg-config to find homebrew's packages
|
||||
LOCAL_PKG_CONFIG_PATH="/opt/homebrew/lib/pkgconfig:$PKG_CONFIG_PATH"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
GITHUB_CLANG_VERSION=17
|
||||
GITHUB_CMAKE_VERSION=3.22.1
|
||||
GITHUB_NINJA_VERSION=1.10.2
|
||||
GITHUB_MESA_VERSION=24.2.1
|
||||
GITHUB_MESA_VERSION=25.0.6
|
||||
GITHUB_LLVM_VERSION=17
|
||||
GITHUB_NDK_VERSION=29.0.14206865
|
||||
GITHUB_EMSDK_VERSION=5.0.4
|
||||
|
||||
Executable
+87
@@ -0,0 +1,87 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
|
||||
function print_help {
|
||||
local SELF_NAME
|
||||
SELF_NAME=$(basename "$0")
|
||||
echo "$SELF_NAME. Combine multiple platform-specific libraries into XCFramework bundles."
|
||||
echo ""
|
||||
echo "Usage:"
|
||||
echo " $SELF_NAME [options] <path>..."
|
||||
echo ""
|
||||
echo "Options:"
|
||||
echo " -h"
|
||||
echo " Print this help message."
|
||||
echo " -o"
|
||||
echo " Output directory to store the XCFrameworks."
|
||||
echo ""
|
||||
echo "Example:"
|
||||
echo " $SELF_NAME -o xcframeworks/ iphoneos/ iphonesimulator/"
|
||||
echo ""
|
||||
}
|
||||
|
||||
OUTPUT_DIR=""
|
||||
while getopts "ho:" opt; do
|
||||
case ${opt} in
|
||||
h)
|
||||
print_help
|
||||
exit 1
|
||||
;;
|
||||
o)
|
||||
OUTPUT_DIR="${OPTARG}"
|
||||
;;
|
||||
*)
|
||||
print_help
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
shift $((OPTIND - 1))
|
||||
|
||||
PATHS=("$@")
|
||||
|
||||
if [[ ! "${PATHS[*]}" ]]; then
|
||||
echo "One or more paths required."
|
||||
print_help
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ ! "${OUTPUT_DIR}" ]]; then
|
||||
echo "Output directory required."
|
||||
print_help
|
||||
exit 1
|
||||
fi
|
||||
|
||||
mkdir -p "${OUTPUT_DIR}"
|
||||
|
||||
# Use the first path as the leader to find all .a files
|
||||
LEADER_PATH="${PATHS[0]}"
|
||||
|
||||
for FILE in "${LEADER_PATH}"/*.a; do
|
||||
[ -f "${FILE}" ] || continue
|
||||
|
||||
LIBRARY_NAME="${FILE##*/}"
|
||||
FRAMEWORK_NAME="${LIBRARY_NAME%.a}.xcframework"
|
||||
|
||||
echo "Creating XCFramework for: ${LIBRARY_NAME}"
|
||||
|
||||
CMD="xcodebuild -create-xcframework"
|
||||
|
||||
for PLATFORM_PATH in "${PATHS[@]}"; do
|
||||
LIB_PATH="${PLATFORM_PATH}/${LIBRARY_NAME}"
|
||||
if [[ -f "${LIB_PATH}" ]]; then
|
||||
CMD="${CMD} -library ${LIB_PATH}"
|
||||
else
|
||||
echo "Warning: ${LIB_PATH} does not exist, skipping this platform for ${LIBRARY_NAME}"
|
||||
fi
|
||||
done
|
||||
|
||||
CMD="${CMD} -output ${OUTPUT_DIR}/${FRAMEWORK_NAME}"
|
||||
|
||||
# Remove existing framework if it exists
|
||||
rm -rf "${OUTPUT_DIR}/${FRAMEWORK_NAME}"
|
||||
|
||||
eval "${CMD}"
|
||||
done
|
||||
+1
-1
@@ -8,4 +8,4 @@ set -x
|
||||
source `dirname $0`/../common/build-common.sh
|
||||
pushd `dirname $0`/../.. > /dev/null
|
||||
|
||||
./build.sh -p webgl -c $RUN_TESTS $GENERATE_ARCHIVES $BUILD_DEBUG $BUILD_RELEASE
|
||||
./build.sh -p wasm -c $RUN_TESTS $GENERATE_ARCHIVES $BUILD_DEBUG $BUILD_RELEASE
|
||||
|
||||
+3
-3
@@ -234,11 +234,11 @@ book.</p>
|
||||
<p>The process for copying and processing these READMEs is outlined in
|
||||
<a href="#introductory-doc">Introductory docs</a>.</p>
|
||||
<h3 id="web-examples-and-tutorials"><a class="header" href="#web-examples-and-tutorials">Web Examples and Tutorials</a></h3>
|
||||
<p>Filament provides a number of WebGL tutorials and examples in the <code>web/</code> directory. These are
|
||||
compiled during the WebGL CMake build and are integrated into the documentation via
|
||||
<p>Filament provides a number of web tutorials and examples in the <code>web/</code> directory. These are
|
||||
compiled during the web CMake build and are integrated into the documentation via
|
||||
<code>duplicates.json</code>. The process is entirely automated:</p>
|
||||
<ol>
|
||||
<li><code>run.py</code> maps the <code>.html</code> and <code>.md</code> WebGL outputs from the <code>out/cmake-webgl-release/...</code>
|
||||
<li><code>run.py</code> maps the <code>.html</code> and <code>.md</code> web outputs from the <code>out/cmake-wasm-release/...</code>
|
||||
directory into <code>docs_src/src_mdbook/src/samples/web/</code> using the instructions in <code>duplicates.json</code>.</li>
|
||||
<li>While transferring <code>.html</code> to <code>.md</code>, <code>run.py</code> strips away the <code><!DOCTYPE html></code>, <code><head></code>, and
|
||||
<code><html></code> tags. By retaining only the <code><style></code> and <code><body></code> elements, the HTML samples can be
|
||||
|
||||
+3
-3
@@ -166,7 +166,7 @@
|
||||
<a href="https://github.com/google/filament/actions/workflows/status-windows.yml"><img src="https://github.com/google/filament/actions/workflows/status-windows.yml/badge.svg" alt="Windows Build Status" /></a>
|
||||
<a href="https://github.com/google/filament/actions/workflows/status-web.yml"><img src="https://github.com/google/filament/actions/workflows/status-web.yml/badge.svg" alt="Web Build Status" /></a></p>
|
||||
<p>Filament is a real-time physically based rendering engine for Android, iOS, Linux, macOS, Windows,
|
||||
and WebGL. It is designed to be as small as possible and as efficient as possible on Android.</p>
|
||||
and WASM. It is designed to be as small as possible and as efficient as possible on Android.</p>
|
||||
<h2 id="download"><a class="header" href="#download">Download</a></h2>
|
||||
<p><a href="https://github.com/google/filament/releases">Download Filament releases</a> to access stable builds.
|
||||
Filament release archives contains host-side tools that are required to generate assets.</p>
|
||||
@@ -181,7 +181,7 @@ important for <code>matc</code> (material compiler).</p>
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation 'com.google.android.filament:filament-android:1.71.1'
|
||||
implementation 'com.google.android.filament:filament-android:1.71.2'
|
||||
}
|
||||
</code></pre>
|
||||
<p>Here are all the libraries available in the group <code>com.google.android.filament</code>:</p>
|
||||
@@ -195,7 +195,7 @@ dependencies {
|
||||
</div>
|
||||
<h3 id="ios"><a class="header" href="#ios">iOS</a></h3>
|
||||
<p>iOS projects can use CocoaPods to install the latest release:</p>
|
||||
<pre><code class="language-shell">pod 'Filament', '~> 1.71.1'
|
||||
<pre><code class="language-shell">pod 'Filament', '~> 1.71.2'
|
||||
</code></pre>
|
||||
<h2 id="documentation"><a class="header" href="#documentation">Documentation</a></h2>
|
||||
<ul>
|
||||
|
||||
+1
-1
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
+3
-3
@@ -81,10 +81,10 @@ The process for copying and processing these READMEs is outlined in
|
||||
[Introductory docs](#introductory-doc).
|
||||
|
||||
### Web Examples and Tutorials
|
||||
Filament provides a number of WebGL tutorials and examples in the `web/` directory. These are
|
||||
compiled during the WebGL CMake build and are integrated into the documentation via
|
||||
Filament provides a number of web tutorials and examples in the `web/` directory. These are
|
||||
compiled during the web CMake build and are integrated into the documentation via
|
||||
`duplicates.json`. The process is entirely automated:
|
||||
1. `run.py` maps the `.html` and `.md` WebGL outputs from the `out/cmake-webgl-release/...`
|
||||
1. `run.py` maps the `.html` and `.md` web outputs from the `out/cmake-wasm-release/...`
|
||||
directory into `docs_src/src_mdbook/src/samples/web/` using the instructions in `duplicates.json`.
|
||||
2. While transferring `.html` to `.md`, `run.py` strips away the `<!DOCTYPE html>`, `<head>`, and
|
||||
`<html>` tags. By retaining only the `<style>` and `<body>` elements, the HTML samples can be
|
||||
|
||||
@@ -20,7 +20,7 @@ import glob
|
||||
import re
|
||||
|
||||
CUR_DIR = os.path.dirname(os.path.abspath(__file__))
|
||||
OUT_DIR = os.path.join(CUR_DIR, "../../out/cmake-webgl-release/web/examples/examples")
|
||||
OUT_DIR = os.path.join(CUR_DIR, "../../out/cmake-wasm-release/web/examples/examples")
|
||||
BOOK_DIR = os.path.join(CUR_DIR, "../src_mdbook/book")
|
||||
|
||||
def setup_dirs():
|
||||
|
||||
@@ -106,43 +106,43 @@
|
||||
"filament/backend/test/README.md": {
|
||||
"dest": "dup/backend_test.md"
|
||||
},
|
||||
"out/cmake-webgl-release/web/examples/examples/triangle/triangle.md": {
|
||||
"out/cmake-wasm-release/web/examples/examples/triangle/triangle.md": {
|
||||
"dest": "samples/web/triangle.md"
|
||||
},
|
||||
"out/cmake-webgl-release/web/examples/examples/redball/redball.md": {
|
||||
"out/cmake-wasm-release/web/examples/examples/redball/redball.md": {
|
||||
"dest": "samples/web/redball.md"
|
||||
},
|
||||
"out/cmake-webgl-release/web/examples/examples/suzanne/suzanne.md": {
|
||||
"out/cmake-wasm-release/web/examples/examples/suzanne/suzanne.md": {
|
||||
"dest": "samples/web/suzanne.md"
|
||||
},
|
||||
"out/cmake-webgl-release/web/examples/examples/animation/animation.html": {
|
||||
"out/cmake-wasm-release/web/examples/examples/animation/animation.html": {
|
||||
"dest": "samples/web/animation.md"
|
||||
},
|
||||
"out/cmake-webgl-release/web/examples/examples/cube_fl0/cube_fl0.html": {
|
||||
"out/cmake-wasm-release/web/examples/examples/cube_fl0/cube_fl0.html": {
|
||||
"dest": "samples/web/cube_fl0.md"
|
||||
},
|
||||
"out/cmake-webgl-release/web/examples/examples/helmet/helmet.html": {
|
||||
"out/cmake-wasm-release/web/examples/examples/helmet/helmet.html": {
|
||||
"dest": "samples/web/helmet.md"
|
||||
},
|
||||
"out/cmake-webgl-release/web/examples/examples/morphing/morphing.html": {
|
||||
"out/cmake-wasm-release/web/examples/examples/morphing/morphing.html": {
|
||||
"dest": "samples/web/morphing.md"
|
||||
},
|
||||
"out/cmake-webgl-release/web/examples/examples/parquet/parquet.html": {
|
||||
"out/cmake-wasm-release/web/examples/examples/parquet/parquet.html": {
|
||||
"dest": "samples/web/parquet.md"
|
||||
},
|
||||
"out/cmake-webgl-release/web/examples/examples/skinning/skinning.html": {
|
||||
"out/cmake-wasm-release/web/examples/examples/skinning/skinning.html": {
|
||||
"dest": "samples/web/skinning.md"
|
||||
},
|
||||
"out/cmake-webgl-release/web/examples/examples/sky/sky.html": {
|
||||
"out/cmake-wasm-release/web/examples/examples/sky/sky.html": {
|
||||
"dest": "samples/web/sky.md",
|
||||
"replacements": {
|
||||
"<!-- mdbook: add fullscreen mode -->": "<a href=\"../../web/sky.html\">Full screen</a>"
|
||||
}
|
||||
},
|
||||
"./out/cmake-webgl-release/web/examples/examples/sky/sky.html": {
|
||||
"./out/cmake-wasm-release/web/examples/examples/sky/sky.html": {
|
||||
"dest": "web/sky.html"
|
||||
},
|
||||
"out/cmake-webgl-release/web/examples/examples/remote/remote.html": {
|
||||
"out/cmake-wasm-release/web/examples/examples/remote/remote.html": {
|
||||
"dest": "remote/index.html"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@ FILAMENT_BOT_TOKEN=$2
|
||||
set -ex
|
||||
|
||||
function update_to_main() {
|
||||
./build.sh -p webgl release
|
||||
./build.sh -p wasm release
|
||||
python3 docs_src/build/run.py
|
||||
mkdir -p tmp
|
||||
pushd .
|
||||
|
||||
@@ -744,10 +744,10 @@ if (MSVC)
|
||||
set(OPTIMIZATION_FLAGS
|
||||
/fp:fast
|
||||
)
|
||||
elseif(WEBGL)
|
||||
elseif (WASM)
|
||||
# Avoid strict-vtable-pointers here, it is broken in WebAssembly.
|
||||
set(OPTIMIZATION_FLAGS -fvisibility-inlines-hidden)
|
||||
elseif(FILAMENT_USING_GCC)
|
||||
elseif (FILAMENT_USING_GCC)
|
||||
set(OPTIMIZATION_FLAGS
|
||||
-ffast-math
|
||||
-fno-finite-math-only
|
||||
|
||||
@@ -124,7 +124,7 @@ if (FILAMENT_SUPPORTS_OPENGL AND NOT FILAMENT_USE_EXTERNAL_GLES3)
|
||||
list(APPEND SRCS src/opengl/platforms/PlatformCocoaGL.mm)
|
||||
list(APPEND SRCS src/opengl/platforms/CocoaExternalImage.mm)
|
||||
endif()
|
||||
elseif (WEBGL)
|
||||
elseif (WASM)
|
||||
list(APPEND SRCS src/opengl/platforms/PlatformWebGL.cpp)
|
||||
elseif (LINUX)
|
||||
if (FILAMENT_SUPPORTS_X11)
|
||||
@@ -358,6 +358,11 @@ if (FILAMENT_SUPPORTS_WEBGPU)
|
||||
include/backend/platforms/WebGPUPlatformAndroid.h
|
||||
src/webgpu/platform/WebGPUPlatformAndroid.cpp
|
||||
)
|
||||
elseif (WASM)
|
||||
list(APPEND SRCS
|
||||
include/backend/platforms/WebGPUPlatformWasm.h
|
||||
src/webgpu/platform/WebGPUPlatformWasm.cpp
|
||||
)
|
||||
endif()
|
||||
|
||||
if (TNT_DEV)
|
||||
@@ -431,8 +436,8 @@ if (FILAMENT_USE_ABSEIL_LOGGING)
|
||||
target_link_libraries(${TARGET} PRIVATE absl::log)
|
||||
endif()
|
||||
|
||||
# Android, iOS, and WebGL do not use bluegl.
|
||||
if(FILAMENT_SUPPORTS_OPENGL AND NOT IOS AND NOT ANDROID AND NOT WEBGL)
|
||||
# Android, iOS, and WASM do not use bluegl.
|
||||
if(FILAMENT_SUPPORTS_OPENGL AND NOT IOS AND NOT ANDROID AND NOT WASM)
|
||||
target_link_libraries(${TARGET} PRIVATE bluegl)
|
||||
endif()
|
||||
|
||||
@@ -441,7 +446,7 @@ if (FILAMENT_SUPPORTS_VULKAN)
|
||||
target_link_libraries(${TARGET} PRIVATE SPIRV-Headers)
|
||||
endif()
|
||||
|
||||
if (FILAMENT_SUPPORTS_WEBGPU)
|
||||
if (FILAMENT_SUPPORTS_WEBGPU AND NOT WASM)
|
||||
target_link_libraries(${TARGET} PRIVATE webgpu_dawn dawncpp_headers)
|
||||
endif()
|
||||
|
||||
@@ -463,7 +468,7 @@ if (MSVC)
|
||||
set(OPTIMIZATION_FLAGS
|
||||
/fp:fast
|
||||
)
|
||||
elseif(WEBGL)
|
||||
elseif(WASM)
|
||||
# Avoid strict-vtable-pointers here, it is broken in WebAssembly.
|
||||
set(OPTIMIZATION_FLAGS -fvisibility-inlines-hidden)
|
||||
elseif(FILAMENT_USING_GCC)
|
||||
@@ -559,7 +564,7 @@ install(TARGETS ${TARGET} ${INSTALL_TYPE} DESTINATION lib/${DIST_DIR})
|
||||
install(TARGETS ${INSTALL_TYPE} DESTINATION lib/${DIST_DIR})
|
||||
install(DIRECTORY ${PUBLIC_HDR_DIR}/backend DESTINATION include)
|
||||
|
||||
if (FILAMENT_SUPPORTS_WEBGPU)
|
||||
if (FILAMENT_SUPPORTS_WEBGPU AND NOT WASM)
|
||||
install(TARGETS webgpu_dawn ${INSTALL_TYPE} DESTINATION lib/${DIST_DIR})
|
||||
endif()
|
||||
|
||||
@@ -699,7 +704,7 @@ if (FILAMENT_BUILD_TESTING)
|
||||
# ==================================================================================================
|
||||
# Compute tests
|
||||
#
|
||||
#if (NOT IOS AND NOT WEBGL)
|
||||
#if (NOT IOS AND NOT WASM)
|
||||
#
|
||||
#add_executable(compute_test
|
||||
# test/ComputeTest.cpp
|
||||
|
||||
@@ -31,6 +31,11 @@
|
||||
#endif
|
||||
#include <webgpu/webgpu_cpp.h>
|
||||
|
||||
#if defined(__EMSCRIPTEN__)
|
||||
// We need to polyfill some Dawn extensions that are not in Emscripten.
|
||||
#include "WebGPUWasmPolyfill.h"
|
||||
#endif
|
||||
|
||||
#include <cstdint>
|
||||
#include <vector>
|
||||
|
||||
@@ -61,9 +66,9 @@ public:
|
||||
// either returns a valid surface or panics
|
||||
[[nodiscard]] virtual wgpu::Surface createSurface(void* nativeWindow, uint64_t flags) = 0;
|
||||
// either returns a valid adapter or panics
|
||||
[[nodiscard]] wgpu::Adapter requestAdapter(wgpu::Surface const& surface);
|
||||
[[nodiscard]] virtual wgpu::Adapter requestAdapter(wgpu::Surface const& surface);
|
||||
// either returns a valid device or panics
|
||||
[[nodiscard]] wgpu::Device requestDevice(wgpu::Adapter const& adapter);
|
||||
[[nodiscard]] virtual wgpu::Device requestDevice(wgpu::Adapter const& adapter);
|
||||
|
||||
struct Configuration {
|
||||
wgpu::BackendType forceBackendType = wgpu::BackendType::Undefined;
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
/*
|
||||
* Copyright (C) 2026 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef TNT_FILAMENT_BACKEND_PLATFORMS_WEBGPUPLATFORMWASM_H
|
||||
#define TNT_FILAMENT_BACKEND_PLATFORMS_WEBGPUPLATFORMWASM_H
|
||||
|
||||
#include <backend/platforms/WebGPUPlatform.h>
|
||||
|
||||
namespace filament::backend {
|
||||
|
||||
class WebGPUPlatformWasm : public WebGPUPlatform {
|
||||
public:
|
||||
wgpu::Extent2D getSurfaceExtent(void* nativeWindow) const override;
|
||||
wgpu::Surface createSurface(void* nativeWindow, uint64_t /*flags*/) override;
|
||||
|
||||
wgpu::Adapter requestAdapter(wgpu::Surface const& surface) override;
|
||||
wgpu::Device requestDevice(wgpu::Adapter const& adapter) override;
|
||||
|
||||
static wgpu::Device sDevice;
|
||||
|
||||
protected:
|
||||
std::vector<wgpu::RequestAdapterOptions> getAdapterOptions() override;
|
||||
};
|
||||
|
||||
} // namespace filament::backend
|
||||
|
||||
#endif // TNT_FILAMENT_BACKEND_PLATFORMS_WEBGPUPLATFORMWASM_H
|
||||
@@ -0,0 +1,70 @@
|
||||
/*
|
||||
* Copyright (C) 2026 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef TNT_FILAMENT_BACKEND_WEBGPU_WASM_POLYFILL_H
|
||||
#define TNT_FILAMENT_BACKEND_WEBGPU_WASM_POLYFILL_H
|
||||
|
||||
#if defined(__EMSCRIPTEN__)
|
||||
|
||||
#include <webgpu/webgpu_cpp.h>
|
||||
#include <cstdint>
|
||||
|
||||
namespace wgpu {
|
||||
|
||||
struct Extent2D {
|
||||
uint32_t width = 0;
|
||||
uint32_t height = 0;
|
||||
operator Extent3D() const { return {width, height, 1}; }
|
||||
};
|
||||
|
||||
struct Origin2D {
|
||||
uint32_t x = 0;
|
||||
uint32_t y = 0;
|
||||
operator Origin3D() const { return {x, y, 0}; }
|
||||
};
|
||||
|
||||
// b/508270158
|
||||
enum class ComponentSwizzle : uint32_t {
|
||||
Undefined = 0,
|
||||
Zero = 1,
|
||||
One = 2,
|
||||
R = 3,
|
||||
G = 4,
|
||||
B = 5,
|
||||
A = 6,
|
||||
};
|
||||
|
||||
struct TextureComponentSwizzle {
|
||||
ComponentSwizzle r = ComponentSwizzle::Undefined;
|
||||
ComponentSwizzle g = ComponentSwizzle::Undefined;
|
||||
ComponentSwizzle b = ComponentSwizzle::Undefined;
|
||||
ComponentSwizzle a = ComponentSwizzle::Undefined;
|
||||
};
|
||||
|
||||
struct DawnTogglesDescriptor : public ChainedStruct {
|
||||
uint32_t enabledToggleCount = 0;
|
||||
const char* const* enabledToggles = nullptr;
|
||||
};
|
||||
|
||||
struct DawnAdapterPropertiesPowerPreference : public ChainedStructOut {
|
||||
PowerPreference powerPreference = PowerPreference::Undefined;
|
||||
};
|
||||
|
||||
} // namespace wgpu
|
||||
|
||||
#endif // __EMSCRIPTEN__
|
||||
|
||||
#endif // TNT_FILAMENT_BACKEND_WEBGPU_WASM_POLYFILL_H
|
||||
@@ -30,6 +30,8 @@
|
||||
#include "backend/platforms/WebGPUPlatformLinux.h"
|
||||
#elif defined(WIN32)
|
||||
#include "backend/platforms/WebGPUPlatformWindows.h"
|
||||
#elif defined(__EMSCRIPTEN__)
|
||||
#include "backend/platforms/WebGPUPlatformWasm.h"
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -152,6 +154,8 @@ Platform* PlatformFactory::create(Backend* backend) noexcept {
|
||||
return new WebGPUPlatformLinux();
|
||||
#elif defined(WIN32)
|
||||
return new WebGPUPlatformWindows();
|
||||
#elif defined(__EMSCRIPTEN__)
|
||||
return new WebGPUPlatformWasm();
|
||||
#else
|
||||
return nullptr;
|
||||
#endif
|
||||
@@ -209,3 +213,4 @@ void PlatformFactory::destroy(Platform** platform) noexcept {
|
||||
}
|
||||
|
||||
} // namespace filament::backend
|
||||
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include <TargetConditionals.h>
|
||||
#include "backend/PresentCallable.h"
|
||||
#include "private/backend/CommandStream.h"
|
||||
#include "CommandStreamDispatcher.h"
|
||||
@@ -160,9 +161,11 @@ MetalDriver::MetalDriver(
|
||||
}
|
||||
|
||||
mContext->supportsDepthClamp = false;
|
||||
#if !TARGET_OS_SIMULATOR
|
||||
if (@available(macOS 10.11, iOS 11.0, *)) {
|
||||
mContext->supportsDepthClamp = true;
|
||||
}
|
||||
#endif
|
||||
|
||||
// In order to support resolve store action on depth attachment, the GPU needs to support it.
|
||||
// Note that support for depth resolve implies support for stencil resolve using .sample0 resolve filter.
|
||||
|
||||
@@ -19,6 +19,10 @@
|
||||
|
||||
#include <backend/DriverEnums.h>
|
||||
|
||||
#if defined(__EMSCRIPTEN__)
|
||||
#include <backend/platforms/WebGPUWasmPolyfill.h>
|
||||
#endif
|
||||
|
||||
#include <tsl/robin_map.h>
|
||||
#include <webgpu/webgpu_cpp.h>
|
||||
|
||||
|
||||
@@ -64,6 +64,22 @@
|
||||
|
||||
using namespace std::chrono_literals;
|
||||
|
||||
|
||||
// https://issues.chromium.org/issues/507581790
|
||||
// Manual polyfill pending upstream fix.
|
||||
#if defined(__EMSCRIPTEN__)
|
||||
#include <emscripten/em_js.h>
|
||||
|
||||
EM_JS(void, wgpuRenderPassEncoderSetImmediates, (WGPURenderPassEncoder passEncoder,
|
||||
uint32_t offset, void const * data, size_t size), {
|
||||
const encoder = WebGPU.Internals.jsObjects[passEncoder];
|
||||
if (encoder && encoder.setImmediates) {
|
||||
const buffer = HEAPU8.slice(data, data + size);
|
||||
encoder.setImmediates(offset, buffer);
|
||||
}
|
||||
})
|
||||
#endif
|
||||
|
||||
namespace filament::backend {
|
||||
|
||||
namespace {
|
||||
@@ -147,8 +163,10 @@ void WebGPUDriver::terminate() {
|
||||
}
|
||||
|
||||
void WebGPUDriver::tick(int) {
|
||||
#if !defined(__EMSCRIPTEN__)
|
||||
mDevice.Tick();
|
||||
mAdapter.GetInstance().ProcessEvents();
|
||||
#endif
|
||||
}
|
||||
|
||||
void WebGPUDriver::beginFrame(int64_t monotonic_clock_ns,
|
||||
@@ -198,7 +216,9 @@ void WebGPUDriver::finish(int /* dummy */) {
|
||||
// processed. Note that blocking with mReadPixelMapsCounter.waitForAllToFinish will only
|
||||
// deadlock since we could not advance the counter.
|
||||
while (!mReadPixelMapsCounter.isIdle()) {
|
||||
#if !defined(__EMSCRIPTEN__)
|
||||
mAdapter.GetInstance().ProcessEvents();
|
||||
#endif
|
||||
std::this_thread::sleep_for(std::chrono::milliseconds(1));
|
||||
}
|
||||
}
|
||||
@@ -782,7 +802,7 @@ FenceStatus WebGPUDriver::fenceWait(FenceHandle fenceHandle, uint64_t const time
|
||||
if (!fence) {
|
||||
return FenceStatus::ERROR;
|
||||
}
|
||||
|
||||
|
||||
using namespace std::chrono;
|
||||
auto now = steady_clock::now();
|
||||
steady_clock::time_point until = steady_clock::time_point::max();
|
||||
@@ -800,15 +820,15 @@ FenceStatus WebGPUDriver::fenceWait(FenceHandle fenceHandle, uint64_t const time
|
||||
state = fence->getState();
|
||||
return bool(state);
|
||||
}, until);
|
||||
|
||||
|
||||
if (status == FenceStatus::ERROR) {
|
||||
return FenceStatus::ERROR;
|
||||
}
|
||||
|
||||
|
||||
if (status == FenceStatus::TIMEOUT_EXPIRED) {
|
||||
return FenceStatus::TIMEOUT_EXPIRED;
|
||||
}
|
||||
|
||||
|
||||
auto duration_ns = static_cast<uint64_t>(
|
||||
std::chrono::duration_cast<std::chrono::nanoseconds>(steady_clock::now() - now)
|
||||
.count());
|
||||
@@ -837,7 +857,11 @@ bool WebGPUDriver::isTextureFormatSupported(const TextureFormat format) {
|
||||
}
|
||||
|
||||
bool WebGPUDriver::isTextureSwizzleSupported() {
|
||||
#if defined(__EMSCRIPTEN__)
|
||||
return false;
|
||||
#else
|
||||
return mDevice.HasFeature(wgpu::FeatureName::TextureComponentSwizzle);
|
||||
#endif
|
||||
}
|
||||
|
||||
bool WebGPUDriver::isTextureFormatMipmappable(const TextureFormat format) {
|
||||
@@ -859,7 +883,7 @@ bool WebGPUDriver::isTextureFormatFilterable(TextureFormat format) {
|
||||
if (isFp32ColorFormat(format)) {
|
||||
return mDevice.HasFeature(wgpu::FeatureName::Float32Filterable);
|
||||
}
|
||||
if (isUnsignedIntFormat(format) || isSignedIntFormat(format) ||
|
||||
if (isUnsignedIntFormat(format) || isSignedIntFormat(format) ||
|
||||
isDepthFormat(format) || isStencilFormat(format)) {
|
||||
return false;
|
||||
}
|
||||
@@ -1324,7 +1348,8 @@ void WebGPUDriver::beginRenderPass(Handle<HwRenderTarget> renderTargetHandle,
|
||||
const uint8_t mipLevel = colorInfos[i].level;
|
||||
const uint32_t arrayLayer = colorInfos[i].layer;
|
||||
customColorViews[customColorViewCount] =
|
||||
colorTexture->makeAttachmentTextureView(mipLevel, arrayLayer, renderTarget->getLayerCount());
|
||||
colorTexture->makeAttachmentTextureView(mipLevel, arrayLayer,
|
||||
renderTarget->getLayerCount());
|
||||
if (msaaSidecarsRequired) {
|
||||
const wgpu::TextureView msaaSidecarView{
|
||||
colorTexture->makeMsaaSidecarTextureViewIfTextureSidecarExists(
|
||||
@@ -1483,7 +1508,12 @@ void WebGPUDriver::setPushConstant(backend::ShaderStage stage, uint8_t index,
|
||||
} else if (std::holds_alternative<bool>(value)) {
|
||||
data = std::get<bool>(value) ? 1 : 0;
|
||||
}
|
||||
#if defined(__EMSCRIPTEN__)
|
||||
wgpuRenderPassEncoderSetImmediates(mRenderPassEncoder.Get(), index * sizeof(uint32_t), &data,
|
||||
sizeof(uint32_t));
|
||||
#else
|
||||
mRenderPassEncoder.SetImmediates(index * sizeof(uint32_t), &data, sizeof(uint32_t));
|
||||
#endif
|
||||
}
|
||||
|
||||
void WebGPUDriver::insertEventMarker(char const* string) {
|
||||
|
||||
@@ -168,8 +168,10 @@ private:
|
||||
wgpu::TextureFormat::Undefined //
|
||||
}; // 32 : 328
|
||||
};
|
||||
#if !defined(__EMSCRIPTEN__)
|
||||
static_assert(sizeof(RenderPipelineKey) == 360,
|
||||
"RenderPipelineKey must not have implicit padding.");
|
||||
#endif
|
||||
static_assert(std::is_trivially_copyable<RenderPipelineKey>::value,
|
||||
"RenderPipelineKey must be a trivially copyable POD for fast hashing.");
|
||||
|
||||
|
||||
@@ -28,6 +28,33 @@
|
||||
#include <array>
|
||||
#include <cstring>
|
||||
|
||||
|
||||
// https://issues.chromium.org/issues/507581790
|
||||
// Manual polyfill pending upstream fix.
|
||||
#if defined(__EMSCRIPTEN__)
|
||||
#include <emscripten/em_js.h>
|
||||
|
||||
EM_JS(WGPUPipelineLayout, filamentCreatePipelineLayoutWithImmediateData,
|
||||
(WGPUDevice devicePtr, WGPUPipelineLayoutDescriptor const* descriptor), {
|
||||
const bglCount = HEAPU32[(descriptor >> 2) + 3];
|
||||
const bglPtr = HEAPU32[(descriptor >> 2) + 4];
|
||||
const bgls = [];
|
||||
for (let i = 0; i < bglCount; ++i) {
|
||||
bgls.push(WebGPU.getJsObject(HEAPU32[(bglPtr >> 2) + i]));
|
||||
}
|
||||
const desc = {
|
||||
"label": WebGPU.makeStringFromOptionalStringView(descriptor + 4),
|
||||
"bindGroupLayouts": bgls,
|
||||
"immediateSize": HEAPU32[(descriptor >> 2) + 5],
|
||||
};
|
||||
|
||||
const device = WebGPU.getJsObject(devicePtr);
|
||||
const ptr = _emwgpuCreatePipelineLayout(0);
|
||||
WebGPU.Internals.jsObjectInsert(ptr, device.createPipelineLayout(desc));
|
||||
return ptr;
|
||||
})
|
||||
#endif
|
||||
|
||||
namespace filament::backend {
|
||||
|
||||
WebGPUPipelineLayoutCache::WebGPUPipelineLayoutCache(wgpu::Device const& device)
|
||||
@@ -72,13 +99,28 @@ wgpu::PipelineLayout WebGPUPipelineLayoutCache::createPipelineLayout(
|
||||
wgpu::Limits supportedLimits{};
|
||||
mDevice.GetLimits(&supportedLimits);
|
||||
|
||||
uint32_t immediateSize = supportedLimits.maxImmediateSize;
|
||||
if (immediateSize == 0) {
|
||||
// Fallback: WebGPU implementations that support 'chromium-experimental-immediate-data'
|
||||
// might not expose 'maxImmediateSize' via JS limits yet, so we assume 64.
|
||||
immediateSize = 64;
|
||||
}
|
||||
|
||||
const wgpu::PipelineLayoutDescriptor descriptor{
|
||||
.label = wgpu::StringView(request.label.c_str_safe()),
|
||||
.bindGroupLayoutCount = request.bindGroupLayoutCount,
|
||||
.bindGroupLayouts = request.bindGroupLayouts.data(),
|
||||
.immediateSize = supportedLimits.maxImmediateSize,
|
||||
.immediateSize = immediateSize,
|
||||
};
|
||||
const wgpu::PipelineLayout layout{ mDevice.CreatePipelineLayout(&descriptor) };
|
||||
|
||||
const wgpu::PipelineLayout layout =
|
||||
#if defined(__EMSCRIPTEN__)
|
||||
wgpu::PipelineLayout::Acquire(
|
||||
filamentCreatePipelineLayoutWithImmediateData(mDevice.Get(),
|
||||
reinterpret_cast<WGPUPipelineLayoutDescriptor const*>(&descriptor)));
|
||||
#else
|
||||
mDevice.CreatePipelineLayout(&descriptor);
|
||||
#endif
|
||||
FILAMENT_CHECK_POSTCONDITION(layout)
|
||||
<< "Failed to create pipeline layout " << descriptor.label << ".";
|
||||
return layout;
|
||||
|
||||
@@ -76,8 +76,10 @@ private:
|
||||
uint8_t bindGroupLayoutCount{ 0 }; // 1 :32
|
||||
uint8_t padding[7]{ 0 }; // 7 :33
|
||||
};
|
||||
#if !defined(__EMSCRIPTEN__)
|
||||
static_assert(sizeof(PipelineLayoutKey) == 40,
|
||||
"PipelineLayoutKey must not have implicit padding.");
|
||||
#endif
|
||||
static_assert(std::is_trivially_copyable<PipelineLayoutKey>::value,
|
||||
"PipelineLayoutKey must be a trivially copyable POD for fast hashing.");
|
||||
|
||||
|
||||
@@ -43,101 +43,6 @@ namespace filament::backend {
|
||||
|
||||
namespace {
|
||||
|
||||
/**
|
||||
* Given the source code of a [WGSL] WebGPU shader in text (string view to it) and the constants
|
||||
* to be overwritten now (at runtime), returns updated [WGSL] shader code text, where the constants
|
||||
* have been replaced.
|
||||
* @param shaderLabel Something to call this shader for troubleshooting, error messaging, etc.
|
||||
* @param shaderSource The original WGSL WebGPU shader code as text to be processed. This is a
|
||||
* view to that text and this function does not change it; it is immutable.
|
||||
* Instead, the processed version of this source is returned by the function.
|
||||
* @param specConstants The constants to replace in the shader code, indexed by constant id.
|
||||
* @return Processed version of the WGSL WebGPU shader code provided, where the constants have
|
||||
* been replaced with the values provided by the specConstants parameter.
|
||||
*/
|
||||
[[nodiscard]] std::string replaceSpecConstants(std::string_view shaderLabel,
|
||||
std::string_view shaderSource,
|
||||
utils::FixedCapacityVector<Program::SpecializationConstant> const& specConstants) {
|
||||
// this function is not expected to be called at all if no spec constants are to be replaced
|
||||
assert_invariant(!specConstants.empty());
|
||||
static constexpr std::string_view specConstantPrefix = "FILAMENT_SPEC_CONST_";
|
||||
static constexpr size_t specConstantPrefixSize = specConstantPrefix.size();
|
||||
const char* const sourceData = shaderSource.data();
|
||||
std::stringstream processedShaderSource{};
|
||||
size_t pos = 0;
|
||||
while (pos < shaderSource.size()) {
|
||||
const size_t posOfNextSpecConstant = shaderSource.find(specConstantPrefix, pos);
|
||||
if (posOfNextSpecConstant == std::string::npos) {
|
||||
// no more spec constants, so just stream the rest of the source code string
|
||||
processedShaderSource << std::string_view(sourceData + pos, shaderSource.size() - pos);
|
||||
break;
|
||||
}
|
||||
const size_t posOfId = posOfNextSpecConstant + specConstantPrefixSize;
|
||||
const size_t posAfterId = shaderSource.find('_', posOfId);
|
||||
FILAMENT_CHECK_POSTCONDITION(posAfterId != std::string::npos)
|
||||
<< "malformed " << shaderLabel << ". Found spec constant prefix '"
|
||||
<< specConstantPrefix << "' without an id or '_' after it.";
|
||||
const std::string_view idStr =
|
||||
std::string_view(sourceData + posOfId, posAfterId - posOfId);
|
||||
const size_t posEndOfStatement = shaderSource.find(';', posAfterId);
|
||||
FILAMENT_CHECK_POSTCONDITION(posEndOfStatement != std::string::npos)
|
||||
<< "malformed " << shaderLabel << ". Found spec constant assignment with id "
|
||||
<< idStr << " without a terminating ';' character?";
|
||||
// this is a view into part of the statement, from after the id to the ';'
|
||||
const std::string_view statementSegment =
|
||||
std::string_view(sourceData + posAfterId, posEndOfStatement - posAfterId);
|
||||
size_t posOfEqual = statementSegment.find('=');
|
||||
if (posOfEqual == std::string::npos) {
|
||||
// Not an assignment, so we don't need to replace it.
|
||||
processedShaderSource << std::string_view(sourceData + pos,
|
||||
posEndOfStatement + 1 - pos);
|
||||
pos = posEndOfStatement + 1;
|
||||
continue;
|
||||
}
|
||||
posOfEqual += posAfterId; // position in original source overall, not just the segment
|
||||
int constantId = 0;
|
||||
char* endPtr;
|
||||
errno = 0; // Clear errno before the call
|
||||
|
||||
long tempConstantId = std::strtol(idStr.data(), &endPtr, 10);
|
||||
|
||||
// Check for conversion errors
|
||||
if (endPtr == idStr.data() || *endPtr != '\0' || errno == ERANGE) {
|
||||
// Parsing failed, or conversion was out of range for 'long'
|
||||
// or the string contained non-numeric characters after the number.
|
||||
PANIC_POSTCONDITION("Invalid spec constant id '%s' in %s (not a valid integer or out "
|
||||
"of range for 'long'?)",
|
||||
idStr.data(), shaderLabel.data());
|
||||
} else {
|
||||
// Check if the parsed long value fits into an int
|
||||
if (tempConstantId > std::numeric_limits<int>::max() ||
|
||||
tempConstantId < std::numeric_limits<int>::min()) {
|
||||
PANIC_POSTCONDITION(
|
||||
"Invalid spec constant id '%s' in %s (value out of range for 'int')",
|
||||
idStr.data(), shaderLabel.data());
|
||||
} else {
|
||||
constantId = static_cast<int>(tempConstantId);
|
||||
}
|
||||
}
|
||||
const std::variant<int32_t, float, bool> newValue = specConstants[constantId];
|
||||
// stream up to the equal sign...
|
||||
processedShaderSource << std::string_view(sourceData + pos, posOfEqual + 1 - pos);
|
||||
// stream the new value...
|
||||
if (auto* v = std::get_if<int32_t>(&newValue)) {
|
||||
processedShaderSource << " " << *v << "i";
|
||||
} else if (auto* f = std::get_if<float>(&newValue)) {
|
||||
processedShaderSource << " " << *f << "f";
|
||||
} else if (auto* b = std::get_if<bool>(&newValue)) {
|
||||
processedShaderSource << " " << ((*b) ? "true" : "false");
|
||||
}
|
||||
// end the statement...
|
||||
processedShaderSource << ";";
|
||||
// and skip to after the end of the statement in the original source and continue...
|
||||
pos = posEndOfStatement + 1;
|
||||
}
|
||||
return processedShaderSource.str();
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a WebGPU shader module for a given "program" "stage", accounting for override constants.
|
||||
* Effectively, this function is responsible for preprocessing the shader source and compiling it.
|
||||
@@ -145,14 +50,12 @@ namespace {
|
||||
* a shader module
|
||||
* @param program The "program" to compile/create the shader, which includes the shader source
|
||||
* @param stage The stage (e.g. vertex, fragment, etc.) to create the shader module
|
||||
* @param specConstants Override constants to apply when creating/compiling the shader module.
|
||||
* @return the proper WebGPU shader module compiled/created from the input parameters. This might
|
||||
* wrap a null handle if the shader is not present (if the shader source is empty), such as
|
||||
* a missing fragment or compute shader.
|
||||
*/
|
||||
[[nodiscard]] wgpu::ShaderModule createShaderModule(wgpu::Device const& device,
|
||||
Program const& program, const ShaderStage stage,
|
||||
utils::FixedCapacityVector<Program::SpecializationConstant> const& specConstants) {
|
||||
Program const& program, const ShaderStage stage) {
|
||||
const char* const programName = program.getName().c_str_safe();
|
||||
std::array<utils::FixedCapacityVector<uint8_t>, Program::SHADER_TYPE_COUNT> const&
|
||||
shaderSource = program.getShadersSource();
|
||||
@@ -164,18 +67,18 @@ namespace {
|
||||
std::stringstream labelStream;
|
||||
labelStream << programName << " " << filamentShaderStageToString(stage) << " shader";
|
||||
const auto label = labelStream.str();
|
||||
const std::string processedShaderSource =
|
||||
specConstants.empty()
|
||||
? reinterpret_cast<const char*>(sourceBytes.data())
|
||||
: replaceSpecConstants(label, reinterpret_cast<const char*>(sourceBytes.data()),
|
||||
specConstants);
|
||||
|
||||
wgpu::ShaderSourceWGSL wgslDescriptor{};
|
||||
wgslDescriptor.code = wgpu::StringView(processedShaderSource);
|
||||
wgslDescriptor.code = wgpu::StringView(reinterpret_cast<const char*>(sourceBytes.data()));
|
||||
const wgpu::ShaderModuleDescriptor descriptor{
|
||||
.nextInChain = &wgslDescriptor,
|
||||
.label = label.data()
|
||||
};
|
||||
const wgpu::ShaderModule shaderModule = device.CreateShaderModule(&descriptor);
|
||||
|
||||
#if !defined(__EMSCRIPTEN__)
|
||||
// TODO: We don't really need to wait for compilation info in production. It's helpful only
|
||||
// for debugging.
|
||||
const wgpu::Instance instance = device.GetAdapter().GetInstance();
|
||||
|
||||
// Synchronously compile the shader module.
|
||||
@@ -244,6 +147,7 @@ namespace {
|
||||
PANIC_POSTCONDITION("Timed out creating/compiling shader %s", descriptor.label.data);
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
FILAMENT_CHECK_POSTCONDITION(shaderModule) << "Failed to create " << descriptor.label;
|
||||
return shaderModule;
|
||||
}
|
||||
@@ -251,14 +155,11 @@ namespace {
|
||||
}// namespace
|
||||
|
||||
WebGPUProgram::WebGPUProgram(wgpu::Device const& device, Program const& program)
|
||||
: HwProgram{ program.getName() } {
|
||||
utils::FixedCapacityVector<Program::SpecializationConstant> const& specConstants =
|
||||
program.getSpecializationConstants();
|
||||
: HwProgram{ program.getName() } {
|
||||
// TODO: Consider creating/compiling these shaders in parallel.
|
||||
vertexShaderModule = createShaderModule(device, program, ShaderStage::VERTEX, specConstants);
|
||||
fragmentShaderModule =
|
||||
createShaderModule(device, program, ShaderStage::FRAGMENT, specConstants);
|
||||
computeShaderModule = createShaderModule(device, program, ShaderStage::COMPUTE, specConstants);
|
||||
vertexShaderModule = createShaderModule(device, program, ShaderStage::VERTEX);
|
||||
fragmentShaderModule = createShaderModule(device, program, ShaderStage::FRAGMENT);
|
||||
computeShaderModule = createShaderModule(device, program, ShaderStage::COMPUTE);
|
||||
}
|
||||
|
||||
}// namespace filament::backend
|
||||
|
||||
@@ -81,7 +81,9 @@ void WebGPUQueueManager::finish() {
|
||||
// This is similar to draining a work queue. We currently have no other way to force the "last"
|
||||
// callback to be called.
|
||||
while (mLatestSubmissionState->getStatus() == FenceStatus::TIMEOUT_EXPIRED) {
|
||||
#if !defined(__EMSCRIPTEN__)
|
||||
mDevice.GetAdapter().GetInstance().ProcessEvents();
|
||||
#endif
|
||||
std::this_thread::sleep_for(std::chrono::milliseconds(1));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -392,6 +392,9 @@ WebGPURenderPassMipmapGenerator::getScalarSampleTypeFrom(const wgpu::TextureForm
|
||||
case wgpu::TextureFormat::R16Snorm:
|
||||
case wgpu::TextureFormat::RG16Snorm:
|
||||
case wgpu::TextureFormat::RGBA16Snorm:
|
||||
|
||||
// Formats not available on WASM
|
||||
#if !defined(__EMSCRIPTEN__)
|
||||
case wgpu::TextureFormat::R8BG8Biplanar420Unorm:
|
||||
case wgpu::TextureFormat::R10X6BG10X6Biplanar420Unorm:
|
||||
case wgpu::TextureFormat::R8BG8A8Triplanar420Unorm:
|
||||
@@ -400,6 +403,7 @@ WebGPURenderPassMipmapGenerator::getScalarSampleTypeFrom(const wgpu::TextureForm
|
||||
case wgpu::TextureFormat::R10X6BG10X6Biplanar422Unorm:
|
||||
case wgpu::TextureFormat::R10X6BG10X6Biplanar444Unorm:
|
||||
case wgpu::TextureFormat::OpaqueYCbCrAndroid:
|
||||
#endif
|
||||
return ScalarSampleType::F32;
|
||||
case wgpu::TextureFormat::Depth16Unorm:
|
||||
case wgpu::TextureFormat::Depth24Plus:
|
||||
|
||||
@@ -67,10 +67,12 @@ template<typename WebGPUPrintable>
|
||||
}
|
||||
}
|
||||
|
||||
#if !defined(__EMSCRIPTEN__)
|
||||
[[nodiscard]] static inline std::string_view powerPreferenceToString(
|
||||
const wgpu::DawnAdapterPropertiesPowerPreference powerPreference) {
|
||||
return powerPreferenceToString(powerPreference.powerPreference);
|
||||
}
|
||||
#endif
|
||||
|
||||
[[nodiscard]] constexpr std::string_view backendTypeToString(const wgpu::BackendType backendType) {
|
||||
switch (backendType) {
|
||||
@@ -231,6 +233,7 @@ template<typename WebGPUPrintable>
|
||||
case wgpu::TextureFormat::R16Snorm: return "R16Snorm";
|
||||
case wgpu::TextureFormat::RG16Snorm: return "RG16Snorm";
|
||||
case wgpu::TextureFormat::RGBA16Snorm: return "RGBA16Snorm";
|
||||
#if !defined(__EMSCRIPTEN__)
|
||||
case wgpu::TextureFormat::R8BG8Biplanar420Unorm: return "R8BG8Biplanar420Unorm";
|
||||
case wgpu::TextureFormat::R10X6BG10X6Biplanar420Unorm: return "R10X6BG10X6Biplanar420Unorm";
|
||||
case wgpu::TextureFormat::R8BG8A8Triplanar420Unorm: return "R8BG8A8Triplanar420Unorm";
|
||||
@@ -239,6 +242,7 @@ template<typename WebGPUPrintable>
|
||||
case wgpu::TextureFormat::R10X6BG10X6Biplanar422Unorm: return "R10X6BG10X6Biplanar422Unorm";
|
||||
case wgpu::TextureFormat::R10X6BG10X6Biplanar444Unorm: return "R10X6BG10X6Biplanar444Unorm";
|
||||
case wgpu::TextureFormat::OpaqueYCbCrAndroid: return "OpaqueYCbCrAndroid";
|
||||
#endif
|
||||
default: return "Unknown";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -387,9 +387,12 @@ wgpu::Texture WebGPUSwapChain::getCurrentTexture() {
|
||||
}
|
||||
|
||||
void WebGPUSwapChain::present(DriverBase& driver) {
|
||||
#if !defined(__EMSCRIPTEN__)
|
||||
if (!isHeadless()) {
|
||||
mSurface.Present();
|
||||
}
|
||||
#endif
|
||||
|
||||
if (mFrameScheduled.callback) {
|
||||
driver.scheduleCallback(mFrameScheduled.handler,
|
||||
[callback = mFrameScheduled.callback]() {
|
||||
|
||||
@@ -17,11 +17,15 @@
|
||||
#ifndef TNT_FILAMENT_BACKEND_WEBGPUSWAPCHAIN_H
|
||||
#define TNT_FILAMENT_BACKEND_WEBGPUSWAPCHAIN_H
|
||||
|
||||
#include <webgpu/webgpu_cpp.h>
|
||||
|
||||
#include "DriverBase.h"
|
||||
#include <backend/Platform.h>
|
||||
|
||||
#if defined(__EMSCRIPTEN__)
|
||||
#include <backend/platforms/WebGPUWasmPolyfill.h>
|
||||
#endif
|
||||
|
||||
#include <webgpu/webgpu_cpp.h>
|
||||
|
||||
#include <cstdint>
|
||||
#include <memory>
|
||||
|
||||
|
||||
@@ -41,6 +41,14 @@ namespace filament::backend {
|
||||
|
||||
namespace {
|
||||
|
||||
bool supportsTransientAttachment(wgpu::Device const& device) {
|
||||
#if !defined(__EMSCRIPTEN__)
|
||||
return device.HasFeature(wgpu::FeatureName::TransientAttachments);
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
|
||||
[[nodiscard]] constexpr wgpu::StringView getUserTextureLabel(const SamplerType target) {
|
||||
// TODO will be helpful to get more useful info than this
|
||||
switch (target) {
|
||||
@@ -209,9 +217,9 @@ WebGPUTexture::WebGPUTexture(const SamplerType samplerType, const uint8_t levels
|
||||
mWebGPUUsage{ fToWGPUTextureUsage(usage, samples,
|
||||
mMipmapGenerationStrategy == MipmapGenerationStrategy::SPD_COMPUTE_PASS,
|
||||
mMipmapGenerationStrategy == MipmapGenerationStrategy::RENDER_PASS,
|
||||
device.HasFeature(wgpu::FeatureName::TransientAttachments)) },
|
||||
supportsTransientAttachment(device)) },
|
||||
mViewUsage{ fToWGPUTextureUsage(usage, samples, false, false,
|
||||
device.HasFeature(wgpu::FeatureName::TransientAttachments)) },
|
||||
supportsTransientAttachment(device)) },
|
||||
mDimension{ toWebGPUTextureViewDimension(samplerType) },
|
||||
mBlockWidth{ filament::backend::getBlockWidth(format) },
|
||||
mBlockHeight{ filament::backend::getBlockHeight(format) },
|
||||
@@ -291,10 +299,7 @@ WebGPUTexture::WebGPUTexture(WebGPUTexture const* src, const uint8_t baseLevel,
|
||||
mDefaultTextureView = makeTextureView(mDefaultMipLevel, levelCount, 0,
|
||||
mDefaultBaseArrayLayer, src->getViewDimension());
|
||||
} else {
|
||||
wgpu::TextureComponentSwizzleDescriptor swizzleDesc{};
|
||||
swizzleDesc.swizzle = mSwizzle;
|
||||
const wgpu::TextureViewDescriptor viewDesc{
|
||||
.nextInChain = &swizzleDesc,
|
||||
wgpu::TextureViewDescriptor viewDesc{
|
||||
.label = "swizzled_texture_view",
|
||||
.format = mTexture.GetFormat(),
|
||||
.dimension = src->getViewDimension(),
|
||||
@@ -303,6 +308,12 @@ WebGPUTexture::WebGPUTexture(WebGPUTexture const* src, const uint8_t baseLevel,
|
||||
.baseArrayLayer = 0,
|
||||
.arrayLayerCount = mDefaultBaseArrayLayer,
|
||||
};
|
||||
// b/508270158
|
||||
#if !defined(__EMSCRIPTEN__)
|
||||
wgpu::TextureComponentSwizzleDescriptor swizzleDesc{};
|
||||
swizzleDesc.swizzle = mSwizzle;
|
||||
viewDesc.nextInChain = &swizzleDesc,
|
||||
#endif
|
||||
mDefaultTextureView = mTexture.CreateView(&viewDesc);
|
||||
FILAMENT_CHECK_POSTCONDITION(mDefaultTextureView)
|
||||
<< "Failed to create swizzled Texture view";
|
||||
@@ -327,15 +338,18 @@ WebGPUTexture::WebGPUTexture(const WebGPUTexture* src,
|
||||
mDefaultBaseArrayLayer{ 0 },
|
||||
mMsaaSidecarTexture{src->mMsaaSidecarTexture},
|
||||
mSwizzle{ composeSwizzle(src->getSwizzle(), nextSwizzle) } {
|
||||
wgpu::TextureComponentSwizzleDescriptor swizzleDesc{};
|
||||
swizzleDesc.swizzle = mSwizzle;
|
||||
|
||||
const wgpu::TextureViewDescriptor viewDesc{
|
||||
.nextInChain = &swizzleDesc,
|
||||
wgpu::TextureViewDescriptor viewDesc{
|
||||
.label = "swizzled_texture_view",
|
||||
.format = mTexture.GetFormat(),
|
||||
.dimension = src->getViewDimension(),
|
||||
};
|
||||
// b/508270158
|
||||
#if !defined(__EMSCRIPTEN__)
|
||||
wgpu::TextureComponentSwizzleDescriptor swizzleDesc{};
|
||||
swizzleDesc.swizzle = mSwizzle;
|
||||
viewDesc.nextInChain = &swizzleDesc,
|
||||
#endif
|
||||
mDefaultTextureView = mTexture.CreateView(&viewDesc);
|
||||
FILAMENT_CHECK_POSTCONDITION(mDefaultTextureView) << "Failed to create swizzled Texture view";
|
||||
}
|
||||
|
||||
@@ -20,6 +20,9 @@
|
||||
#include "DriverBase.h"
|
||||
#include <backend/DriverEnums.h>
|
||||
|
||||
#if defined(__EMSCRIPTEN__)
|
||||
#include <backend/platforms/WebGPUWasmPolyfill.h>
|
||||
#endif
|
||||
#include <webgpu/webgpu_cpp.h>
|
||||
|
||||
#include <cstdint>
|
||||
|
||||
@@ -21,6 +21,10 @@
|
||||
|
||||
#include <backend/DriverEnums.h>
|
||||
|
||||
#if defined(__EMSCRIPTEN__)
|
||||
#include <backend/platforms/WebGPUWasmPolyfill.h>
|
||||
#endif
|
||||
|
||||
#include <webgpu/webgpu_cpp.h>
|
||||
|
||||
#include <string_view>
|
||||
@@ -597,7 +601,7 @@ namespace filament::backend {
|
||||
}
|
||||
|
||||
wgpu::TextureUsage transientAttachmentNeeded{ wgpu::TextureUsage::None };
|
||||
const bool useTransientAttachment {
|
||||
bool const useTransientAttachment =
|
||||
deviceSupportsTransientAttachments &&
|
||||
// Usage consists of attachment flags only.
|
||||
none(fUsage & ~TextureUsage::ALL_ATTACHMENTS) &&
|
||||
@@ -608,9 +612,12 @@ namespace filament::backend {
|
||||
// restriction.
|
||||
// Note that the custom shader does not resolve stencil. We do need to move to vk 1.2
|
||||
// and above to be able to support stencil resolve (along with depth).
|
||||
!(any(fUsage & TextureUsage::DEPTH_ATTACHMENT) && samples > 1)};
|
||||
!(any(fUsage & TextureUsage::DEPTH_ATTACHMENT) && samples > 1);
|
||||
|
||||
if (useTransientAttachment) {
|
||||
#if !defined(__EMSCRIPTEN__)
|
||||
transientAttachmentNeeded |= wgpu::TextureUsage::TransientAttachment;
|
||||
#endif
|
||||
}
|
||||
|
||||
// A texture that is a blit destination or render attachment will often need to be
|
||||
|
||||
@@ -225,42 +225,73 @@ struct AttributeInfo final {
|
||||
* associated with a vertex buffer, and the slot each one belongs
|
||||
*/
|
||||
void createBufferLayoutsBindingSlotsAndAttributeInfos(AttributeArray const& attributes,
|
||||
const uint8_t attributeCount, const uint32_t deviceMaxVertexBuffers,
|
||||
const uint32_t deviceMaxVertexBuffers,
|
||||
std::vector<WebGPUVertexBufferInfo::WebGPUSlotBindingInfo>& outWebGPUSlotBindingInfos,
|
||||
std::vector<wgpu::VertexBufferLayout>& outVertexBufferLayouts,
|
||||
std::array<AttributeInfo, MAX_VERTEX_ATTRIBUTE_COUNT>& outAttributeInfos) {
|
||||
std::array<AttributeInfo, MAX_VERTEX_ATTRIBUTE_COUNT>& outAttributeInfos,
|
||||
uint8_t& outActualAttributeCount) {
|
||||
uint8_t currentWebGPUSlotIndex = 0;
|
||||
uint8_t currentAttributeIndex = 0;
|
||||
outVertexBufferLayouts.reserve(MAX_VERTEX_BUFFER_COUNT);
|
||||
outWebGPUSlotBindingInfos.reserve(outVertexBufferLayouts.capacity());
|
||||
for (uint32_t attributeIndex = 0; attributeIndex < attributes.size(); ++attributeIndex) {
|
||||
const auto& attribute = attributes[attributeIndex];
|
||||
if (attribute.buffer == Attribute::BUFFER_UNUSED) {
|
||||
// We ignore "unused" attributes, ones not associated with a buffer. If a shader
|
||||
// references such an attribute we have a bug one way or another. Either the API/CPU
|
||||
// will produce an error (best case scenario), where an attribute is referenced in the
|
||||
// shader but not provided by the backend API (CPU-side), or the shader would be getting
|
||||
// junk/undefined data from the GPU, since we do not have a valid buffer of data to
|
||||
// provide to the shader/GPU.
|
||||
continue;
|
||||
|
||||
// Find a valid attribute to use as a dummy for unused slots (typically POSITION at index 0)
|
||||
Attribute dummyAttribute{};
|
||||
bool hasDummy = false;
|
||||
for (uint32_t i = 0; i < attributes.size(); ++i) {
|
||||
if (attributes[i].buffer != Attribute::BUFFER_UNUSED) {
|
||||
dummyAttribute = attributes[i];
|
||||
hasDummy = true;
|
||||
break;
|
||||
}
|
||||
const bool isInteger = attribute.flags & Attribute::FLAG_INTEGER_TARGET;
|
||||
const bool isNormalized = attribute.flags & Attribute::FLAG_NORMALIZED;
|
||||
const wgpu::VertexFormat vertexFormat =
|
||||
getVertexFormat(attribute.type, isNormalized, isInteger);
|
||||
}
|
||||
|
||||
/*
|
||||
* WebGPU Strict Validation Workaround:
|
||||
*
|
||||
* 1. Completeness: WebGPU requires ALL shader-declared attributes to exist in the Pipeline's
|
||||
* VertexState, even if unused by a specific mesh variant (e.g., BONE_WEIGHTS).
|
||||
* 2. Stride Boundary: Offset + Format_Size <= arrayStride.
|
||||
*
|
||||
* If we omit an unused attribute, WebGPU crashes (violates 1).
|
||||
* If we pad it as Float32x4 (16 bytes) into Slot 0 (e.g., Position, stride 12), WebGPU crashes
|
||||
* (violates 2):
|
||||
*
|
||||
* [ Slot 0 Stride: 12 bytes ]
|
||||
* |-------POSITION--------|
|
||||
* |------ BONE_WEIGHTS (Float32x4 = 16b) -----| <-- OVERFLOWS STRIDE!
|
||||
*
|
||||
* FIX: We alias unused attributes into Slot 0 as a 4-byte format (Float32 or Uint32).
|
||||
*
|
||||
* [ Slot 0 Stride: 12 bytes ]
|
||||
* |-------POSITION--------|
|
||||
* |-BONE-| <-- (Float32 = 4b) Safely fits inside the 12-byte stride!
|
||||
*
|
||||
* WebGPU safely promotes the 4-byte Float32 into a WGSL vec4<f32> as (x, 0.0, 0.0, 1.0).
|
||||
*/
|
||||
for (uint32_t attributeIndex = 0; attributeIndex < attributes.size(); ++attributeIndex) {
|
||||
auto attribute = attributes[attributeIndex];
|
||||
wgpu::VertexFormat vertexFormat;
|
||||
|
||||
if (attribute.buffer == Attribute::BUFFER_UNUSED) {
|
||||
if (!hasDummy) {
|
||||
continue;
|
||||
}
|
||||
// HACK: Re-use the dummy buffer for disabled attributes to satisfy WebGPU validation.
|
||||
// Filament's shaders expect vec4 or uvec4. We provide a dummy format.
|
||||
const bool isInteger = attribute.flags & Attribute::FLAG_INTEGER_TARGET;
|
||||
vertexFormat = isInteger ? wgpu::VertexFormat::Uint8x4 : wgpu::VertexFormat::Unorm8x4;
|
||||
attribute = dummyAttribute;
|
||||
} else {
|
||||
const bool isInteger = attribute.flags & Attribute::FLAG_INTEGER_TARGET;
|
||||
const bool isNormalized = attribute.flags & Attribute::FLAG_NORMALIZED;
|
||||
vertexFormat = getVertexFormat(attribute.type, isNormalized, isInteger);
|
||||
}
|
||||
|
||||
uint8_t existingSlot = INVALID_SLOT_INDEX;
|
||||
for (uint32_t slot = 0; slot < currentWebGPUSlotIndex; slot++) {
|
||||
WebGPUVertexBufferInfo::WebGPUSlotBindingInfo const& info =
|
||||
outWebGPUSlotBindingInfos[slot];
|
||||
// We consider attributes to be in the same slot/layout only if they belong to the
|
||||
// same buffer and are interleaved; they cannot belong to separate partitions in the
|
||||
// same buffer, for example.
|
||||
// For the attributes to be interleaved, the stride must match (among other things).
|
||||
// The attribute offset being less than the slot's/layout's buffer offset indicates
|
||||
// that it is in a separate partition before this slot/layout, thus not part of it.
|
||||
// The difference from the attribute's offset and this slot's/layout's buffer offset
|
||||
// being greater than the stride indicates it is in a separate partition after this
|
||||
// slot/layout, thus not part of it.
|
||||
if (info.sourceBufferIndex == attribute.buffer && info.stride == attribute.stride &&
|
||||
attribute.offset >= info.bufferOffset &&
|
||||
((attribute.offset - info.bufferOffset) < attribute.stride)) {
|
||||
@@ -269,26 +300,18 @@ void createBufferLayoutsBindingSlotsAndAttributeInfos(AttributeArray const& attr
|
||||
}
|
||||
}
|
||||
if (existingSlot == INVALID_SLOT_INDEX) {
|
||||
// New combination, use a new WebGPU slot
|
||||
FILAMENT_CHECK_PRECONDITION(currentWebGPUSlotIndex < MAX_VERTEX_BUFFER_COUNT &&
|
||||
currentWebGPUSlotIndex < deviceMaxVertexBuffers)
|
||||
<< "Number of vertex buffer layouts must not exceed MAX_VERTEX_BUFFER_COUNT ("
|
||||
<< MAX_VERTEX_BUFFER_COUNT << ") or the device limit ("
|
||||
<< deviceMaxVertexBuffers << ")";
|
||||
existingSlot = currentWebGPUSlotIndex++;
|
||||
outWebGPUSlotBindingInfos.push_back({
|
||||
.sourceBufferIndex = attribute.buffer,
|
||||
outWebGPUSlotBindingInfos.push_back({ .sourceBufferIndex = attribute.buffer,
|
||||
.bufferOffset = attribute.offset,
|
||||
.stride = attribute.stride });
|
||||
// we need to have a vertex buffer layout for each slot
|
||||
outVertexBufferLayouts.push_back({
|
||||
.stepMode = wgpu::VertexStepMode::Vertex,
|
||||
.arrayStride = attribute.stride
|
||||
// we do not know attributeCount or attributes at this time. We get those
|
||||
// in a subsequent pass over the attributeInfos we collect in this loop.
|
||||
});
|
||||
outVertexBufferLayouts.push_back(
|
||||
{ .stepMode = wgpu::VertexStepMode::Vertex, .arrayStride = attribute.stride });
|
||||
}
|
||||
// we don't use a designated initializer here because certain compilers can't handle it
|
||||
outAttributeInfos[currentAttributeIndex++] = AttributeInfo(
|
||||
existingSlot,
|
||||
{
|
||||
@@ -297,9 +320,8 @@ void createBufferLayoutsBindingSlotsAndAttributeInfos(AttributeArray const& attr
|
||||
attribute.offset - outWebGPUSlotBindingInfos[existingSlot].bufferOffset,
|
||||
.shaderLocation = attributeIndex });
|
||||
}
|
||||
FILAMENT_CHECK_POSTCONDITION(currentAttributeIndex == attributeCount)
|
||||
<< "Using " << currentAttributeIndex << " attributes, but " << attributeCount
|
||||
<< " where indicated.";
|
||||
|
||||
outActualAttributeCount = currentAttributeIndex;
|
||||
outVertexBufferLayouts.shrink_to_fit();
|
||||
outWebGPUSlotBindingInfos.shrink_to_fit();
|
||||
}
|
||||
@@ -316,21 +338,21 @@ WebGPUVertexBufferInfo::WebGPUVertexBufferInfo(const uint8_t bufferCount,
|
||||
<< ") exceeds Filament's MAX_VERTEX_ATTRIBUTE_COUNT limit ("
|
||||
<< MAX_VERTEX_ATTRIBUTE_COUNT << ") and/or the device's limit ("
|
||||
<< deviceLimits.maxVertexAttributes << ")";
|
||||
mVertexAttributes.reserve(attributeCount);
|
||||
mVertexAttributes.reserve(MAX_VERTEX_ATTRIBUTE_COUNT); // Reserve max as we might add dummies
|
||||
if (attributeCount == 0) {
|
||||
mVertexBufferLayouts.resize(0);
|
||||
mWebGPUSlotBindingInfos.resize(0);
|
||||
return; // should not be possible, but being defensive. nothing to do otherwise
|
||||
}
|
||||
std::array<AttributeInfo, MAX_VERTEX_ATTRIBUTE_COUNT> attributeInfos{};
|
||||
createBufferLayoutsBindingSlotsAndAttributeInfos(attributes, attributeCount,
|
||||
deviceLimits.maxVertexBuffers, mWebGPUSlotBindingInfos, mVertexBufferLayouts,
|
||||
attributeInfos);
|
||||
uint8_t actualAttributeCount = 0;
|
||||
createBufferLayoutsBindingSlotsAndAttributeInfos(attributes, deviceLimits.maxVertexBuffers,
|
||||
mWebGPUSlotBindingInfos, mVertexBufferLayouts, attributeInfos, actualAttributeCount);
|
||||
// sort attribute infos by increasing slot (by increasing offset within each slot).
|
||||
// We do this to ensure that attributes for the same slot/layout are contiguous in
|
||||
// the vector, so the vertex buffer layout associated with these contiguous attributes
|
||||
// can directly reference them in the mVertexAttributes vector below.
|
||||
std::sort(attributeInfos.data(), attributeInfos.data() + attributeCount,
|
||||
std::sort(attributeInfos.data(), attributeInfos.data() + actualAttributeCount,
|
||||
[](AttributeInfo const& first, AttributeInfo const& second) {
|
||||
if (first.slot < second.slot) {
|
||||
return true;
|
||||
@@ -344,7 +366,7 @@ WebGPUVertexBufferInfo::WebGPUVertexBufferInfo(const uint8_t bufferCount,
|
||||
});
|
||||
// populate mVertexAttributes and update mVertexBufferLayouts to reference the correct
|
||||
// attributes in it (which will be contiguous in memory as ensured by the sorting above)...
|
||||
for (uint32_t attributeIndex = 0; attributeIndex < attributeCount; ++attributeIndex) {
|
||||
for (uint32_t attributeIndex = 0; attributeIndex < actualAttributeCount; ++attributeIndex) {
|
||||
AttributeInfo const& info = attributeInfos[attributeIndex];
|
||||
mVertexAttributes.push_back(info.attribute);
|
||||
if (mVertexBufferLayouts[info.slot].attributeCount == 0) {
|
||||
|
||||
@@ -57,20 +57,29 @@ namespace {
|
||||
constexpr uint32_t MAX_MIPMAP_STORAGE_TEXTURES_PER_STAGE = 12u;
|
||||
|
||||
constexpr std::array REQUIRED_FEATURES = {
|
||||
wgpu::FeatureName::TransientAttachments,
|
||||
// Qualcomm 500 and 600 GPUs do not support this so it is not part of core webgpu spec. To
|
||||
// support such devices, we will either need Filament to not attempt this, or find another
|
||||
// workaround. https://github.com/gpuweb/gpuweb/issues/2648
|
||||
wgpu::FeatureName::RG11B10UfloatRenderable,
|
||||
// necessary for blit conversions of formats like RGBA32Float...
|
||||
wgpu::FeatureName::Float32Filterable,
|
||||
|
||||
|
||||
// Unsupported on WASM
|
||||
#if !defined(__EMSCRIPTEN__)
|
||||
wgpu::FeatureName::TransientAttachments,
|
||||
#endif
|
||||
};
|
||||
|
||||
constexpr std::array OPTIONAL_FEATURES = {
|
||||
wgpu::FeatureName::CoreFeaturesAndLimits,
|
||||
wgpu::FeatureName::DepthClipControl,
|
||||
wgpu::FeatureName::Depth32FloatStencil8,
|
||||
|
||||
// Unsupported on WASM
|
||||
#if !defined(__EMSCRIPTEN__)
|
||||
wgpu::FeatureName::TextureComponentSwizzle,
|
||||
#endif
|
||||
};
|
||||
|
||||
enum class LimitToValidate : uint8_t {
|
||||
@@ -266,12 +275,21 @@ void printInstanceDetails(wgpu::Instance const& instance) {
|
||||
#endif
|
||||
dawnTogglesDescriptor.enabledToggleCount = toggles.size();
|
||||
dawnTogglesDescriptor.enabledToggles = toggles.data();
|
||||
const wgpu::InstanceFeatureName features[] = {wgpu::InstanceFeatureName::TimedWaitAny};
|
||||
|
||||
#if defined(__EMSCRIPTEN__)
|
||||
constexpr std::array<wgpu::InstanceFeatureName, 0> features;
|
||||
#else
|
||||
constexpr std::array features = {
|
||||
wgpu::InstanceFeatureName::TimedWaitAny
|
||||
};
|
||||
#endif
|
||||
|
||||
wgpu::InstanceDescriptor instanceDescriptor{
|
||||
.nextInChain = &dawnTogglesDescriptor,
|
||||
.requiredFeatures = features,
|
||||
.requiredFeatureCount = features.size(),
|
||||
.requiredFeatures = features.data(),
|
||||
};
|
||||
instanceDescriptor.requiredFeatureCount = 1;
|
||||
|
||||
wgpu::Instance instance = wgpu::CreateInstance(&instanceDescriptor);
|
||||
FILAMENT_CHECK_POSTCONDITION(instance != nullptr) << "Unable to create WebGPU instance.";
|
||||
#if FWGPU_ENABLED(FWGPU_PRINT_SYSTEM)
|
||||
@@ -351,6 +369,8 @@ struct AdapterDetails final {
|
||||
: info(std::move(info)),
|
||||
powerPreference(powerPreference),
|
||||
adapter(std::move(adapter)) {}
|
||||
AdapterDetails(AdapterDetails&& other) noexcept = default;
|
||||
|
||||
AdapterDetails& operator=(AdapterDetails&& other) noexcept {
|
||||
adapter = std::exchange(other.adapter, nullptr);
|
||||
info = std::exchange(other.info, {});
|
||||
@@ -373,8 +393,10 @@ struct AdapterDetails final {
|
||||
|
||||
[[nodiscard]] std::string toString(AdapterDetails const& details) {
|
||||
std::stringstream out;
|
||||
out << adapterInfoToString(details.info)
|
||||
<< " power preference " << powerPreferenceToString(details.powerPreference);
|
||||
out << adapterInfoToString(details.info);
|
||||
#if !defined(__EMSCRIPTEN__)
|
||||
out << " power preference " << powerPreferenceToString(details.powerPreference);
|
||||
#endif
|
||||
return out.str();
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,85 @@
|
||||
/*
|
||||
* Copyright (C) 2026 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include <backend/platforms/WebGPUPlatformWasm.h>
|
||||
|
||||
#include <utils/Panic.h>
|
||||
|
||||
#include <webgpu/webgpu_cpp.h>
|
||||
#include <emscripten/html5.h>
|
||||
|
||||
#include <vector>
|
||||
#include <cstdint>
|
||||
|
||||
extern "C" WGPUDevice emscripten_webgpu_get_device(void);
|
||||
|
||||
namespace filament::backend {
|
||||
|
||||
wgpu::Device WebGPUPlatformWasm::sDevice = nullptr;
|
||||
|
||||
std::vector<wgpu::RequestAdapterOptions> WebGPUPlatformWasm::getAdapterOptions() {
|
||||
std::vector<wgpu::RequestAdapterOptions> requests;
|
||||
requests.reserve(2);
|
||||
requests.emplace_back(wgpu::RequestAdapterOptions{
|
||||
.powerPreference = wgpu::PowerPreference::HighPerformance,
|
||||
.forceFallbackAdapter = false,
|
||||
.backendType = wgpu::BackendType::WebGPU,
|
||||
});
|
||||
requests.emplace_back(wgpu::RequestAdapterOptions{
|
||||
.powerPreference = wgpu::PowerPreference::LowPower,
|
||||
.forceFallbackAdapter = false,
|
||||
.backendType = wgpu::BackendType::WebGPU,
|
||||
});
|
||||
return requests;
|
||||
}
|
||||
|
||||
wgpu::Adapter WebGPUPlatformWasm::requestAdapter(wgpu::Surface const& surface) { return nullptr; }
|
||||
|
||||
wgpu::Device WebGPUPlatformWasm::requestDevice(wgpu::Adapter const& adapter) {
|
||||
if (sDevice == nullptr) {
|
||||
WGPUDevice device = emscripten_webgpu_get_device();
|
||||
FILAMENT_CHECK_POSTCONDITION(device != nullptr)
|
||||
<< "WebGPU device not initialized. Call Filament.initWebGPU() first.";
|
||||
sDevice = wgpu::Device::Acquire(device);
|
||||
}
|
||||
return sDevice;
|
||||
}
|
||||
|
||||
wgpu::Extent2D WebGPUPlatformWasm::getSurfaceExtent(void* nativeWindow) const {
|
||||
const char* selector = static_cast<const char*>(nativeWindow);
|
||||
int width = 0;
|
||||
int height = 0;
|
||||
emscripten_get_canvas_element_size(selector, &width, &height);
|
||||
return wgpu::Extent2D{
|
||||
.width = static_cast<uint32_t>(width),
|
||||
.height = static_cast<uint32_t>(height),
|
||||
};
|
||||
}
|
||||
|
||||
wgpu::Surface WebGPUPlatformWasm::createSurface(void* nativeWindow, uint64_t /*flags*/) {
|
||||
wgpu::EmscriptenSurfaceSourceCanvasHTMLSelector canvasSource{};
|
||||
canvasSource.selector = static_cast<const char*>(nativeWindow);
|
||||
const wgpu::SurfaceDescriptor surfaceDescriptor{
|
||||
.nextInChain = &canvasSource,
|
||||
.label = "wasm_surface",
|
||||
};
|
||||
wgpu::Surface surface = mInstance.CreateSurface(&surfaceDescriptor);
|
||||
FILAMENT_CHECK_POSTCONDITION(surface.Get() != nullptr)
|
||||
<< "Unable to create Wasm-backed surface.";
|
||||
return surface;
|
||||
}
|
||||
|
||||
} // namespace filament::backend
|
||||
@@ -1,7 +1,7 @@
|
||||
cmake_minimum_required(VERSION 3.19)
|
||||
project(filament-tests)
|
||||
|
||||
if(IOS OR WEBGL)
|
||||
if(IOS OR WASM)
|
||||
return()
|
||||
endif()
|
||||
|
||||
|
||||
@@ -1,21 +1,15 @@
|
||||
Pod::Spec.new do |spec|
|
||||
spec.name = "Filament"
|
||||
spec.version = "1.71.3"
|
||||
spec.version = "1.71.2"
|
||||
spec.license = { :type => "Apache 2.0", :file => "LICENSE" }
|
||||
spec.homepage = "https://google.github.io/filament"
|
||||
spec.authors = "Google LLC."
|
||||
spec.summary = "Filament is a real-time physically based rendering engine for Android, iOS, Windows, Linux, macOS, and WASM/WebGL."
|
||||
spec.platform = :ios, "11.0"
|
||||
spec.source = { :http => "https://github.com/google/filament/releases/download/v1.71.3/filament-v1.71.3-ios.tgz" }
|
||||
spec.source = { :http => "https://github.com/google/filament/releases/download/v1.71.2/filament-v1.71.2-ios.tgz" }
|
||||
|
||||
spec.libraries = 'c++'
|
||||
|
||||
# Fix linking error with Xcode 12; we do not yet support the simulator on Apple silicon.
|
||||
spec.pod_target_xcconfig = {
|
||||
'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'arm64'
|
||||
}
|
||||
spec.user_target_xcconfig = { 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'arm64' }
|
||||
|
||||
spec.subspec "filament" do |ss|
|
||||
ss.source_files =
|
||||
"include/filament/*.h",
|
||||
@@ -25,13 +19,13 @@ Pod::Spec.new do |spec|
|
||||
"include/ibl/*.h",
|
||||
"include/geometry/*.h"
|
||||
ss.header_mappings_dir = "include"
|
||||
ss.vendored_libraries =
|
||||
"lib/universal/libfilament.a",
|
||||
"lib/universal/libbackend.a",
|
||||
"lib/universal/libfilabridge.a",
|
||||
"lib/universal/libfilaflat.a",
|
||||
"lib/universal/libibl.a",
|
||||
"lib/universal/libgeometry.a"
|
||||
ss.vendored_frameworks =
|
||||
"lib/libfilament.xcframework",
|
||||
"lib/libbackend.xcframework",
|
||||
"lib/libfilabridge.xcframework",
|
||||
"lib/libfilaflat.xcframework",
|
||||
"lib/libibl.xcframework",
|
||||
"lib/libgeometry.xcframework"
|
||||
ss.dependency "Filament/utils"
|
||||
ss.dependency "Filament/math"
|
||||
end
|
||||
@@ -42,11 +36,10 @@ Pod::Spec.new do |spec|
|
||||
"include/filament/MaterialChunkType.h",
|
||||
"include/filament/MaterialEnums.h"
|
||||
ss.header_mappings_dir = "include"
|
||||
ss.vendored_libraries =
|
||||
"lib/universal/libfilamat.a",
|
||||
"lib/universal/libshaders.a",
|
||||
"lib/universal/libsmol-v.a",
|
||||
"lib/universal/libfilabridge.a"
|
||||
ss.vendored_frameworks =
|
||||
"lib/libfilamat.xcframework",
|
||||
"lib/libshaders.xcframework",
|
||||
"lib/libsmol-v.xcframework"
|
||||
ss.dependency "Filament/utils"
|
||||
ss.dependency "Filament/math"
|
||||
end
|
||||
@@ -54,11 +47,11 @@ Pod::Spec.new do |spec|
|
||||
spec.subspec "gltfio_core" do |ss|
|
||||
ss.source_files = "include/gltfio/**/*.h"
|
||||
ss.header_mappings_dir = "include"
|
||||
ss.vendored_libraries =
|
||||
"lib/universal/libgltfio_core.a",
|
||||
"lib/universal/libdracodec.a",
|
||||
"lib/universal/libuberarchive.a",
|
||||
"lib/universal/libstb.a"
|
||||
ss.vendored_frameworks =
|
||||
"lib/libgltfio_core.xcframework",
|
||||
"lib/libdracodec.xcframework",
|
||||
"lib/libuberarchive.xcframework",
|
||||
"lib/libstb.xcframework"
|
||||
ss.dependency "Filament/filament"
|
||||
ss.dependency "Filament/ktxreader"
|
||||
ss.dependency "Filament/uberz"
|
||||
@@ -66,23 +59,23 @@ Pod::Spec.new do |spec|
|
||||
|
||||
spec.subspec "camutils" do |ss|
|
||||
ss.source_files = "include/camutils/*.h"
|
||||
ss.vendored_libraries = "lib/universal/libcamutils.a"
|
||||
ss.vendored_frameworks = "lib/libcamutils.xcframework"
|
||||
ss.header_dir = "camutils"
|
||||
ss.dependency "Filament/math"
|
||||
end
|
||||
|
||||
spec.subspec "filameshio" do |ss|
|
||||
ss.source_files = "include/filameshio/*.h"
|
||||
ss.vendored_libraries =
|
||||
"lib/universal/libfilameshio.a",
|
||||
"lib/universal/libmeshoptimizer.a"
|
||||
ss.vendored_frameworks =
|
||||
"lib/libfilameshio.xcframework",
|
||||
"lib/libmeshoptimizer.xcframework"
|
||||
ss.header_dir = "filameshio"
|
||||
ss.dependency "Filament/filament"
|
||||
end
|
||||
|
||||
spec.subspec "image" do |ss|
|
||||
ss.source_files = "include/image/*.h"
|
||||
ss.vendored_libraries = "lib/universal/libimage.a"
|
||||
ss.vendored_frameworks = "lib/libimage.xcframework"
|
||||
ss.header_dir = "image"
|
||||
ss.dependency "Filament/filament"
|
||||
end
|
||||
@@ -90,7 +83,7 @@ Pod::Spec.new do |spec|
|
||||
spec.subspec "utils" do |ss|
|
||||
ss.source_files = "include/utils/**/*.h"
|
||||
ss.header_mappings_dir = "include"
|
||||
ss.vendored_libraries = "lib/universal/libutils.a"
|
||||
ss.vendored_frameworks = "lib/libutils.xcframework"
|
||||
ss.dependency "Filament/tsl"
|
||||
end
|
||||
|
||||
@@ -107,9 +100,9 @@ Pod::Spec.new do |spec|
|
||||
spec.subspec "ktxreader" do |ss|
|
||||
ss.source_files = "include/ktxreader/*.h"
|
||||
ss.header_mappings_dir = "include"
|
||||
ss.vendored_libraries =
|
||||
"lib/universal/libktxreader.a",
|
||||
"lib/universal/libbasis_transcoder.a"
|
||||
ss.vendored_frameworks =
|
||||
"lib/libktxreader.xcframework",
|
||||
"lib/libbasis_transcoder.xcframework"
|
||||
ss.dependency "Filament/image"
|
||||
ss.dependency "Filament/filament"
|
||||
end
|
||||
@@ -117,9 +110,9 @@ Pod::Spec.new do |spec|
|
||||
spec.subspec "viewer" do |ss|
|
||||
ss.source_files = "include/viewer/*.h"
|
||||
ss.header_mappings_dir = "include"
|
||||
ss.vendored_libraries =
|
||||
"lib/universal/libviewer.a",
|
||||
"lib/universal/libcivetweb.a"
|
||||
ss.vendored_frameworks =
|
||||
"lib/libviewer.xcframework",
|
||||
"lib/libcivetweb.xcframework"
|
||||
ss.dependency "Filament/filament"
|
||||
ss.dependency "Filament/gltfio_core"
|
||||
end
|
||||
@@ -127,9 +120,9 @@ Pod::Spec.new do |spec|
|
||||
spec.subspec "uberz" do |ss|
|
||||
ss.source_files = "include/uberz/*.h"
|
||||
ss.header_mappings_dir = "include"
|
||||
ss.vendored_libraries =
|
||||
"lib/universal/libuberzlib.a",
|
||||
"lib/universal/libzstd.a"
|
||||
ss.vendored_frameworks =
|
||||
"lib/libuberzlib.xcframework",
|
||||
"lib/libzstd.xcframework"
|
||||
ss.header_dir = "uberz"
|
||||
ss.dependency "Filament/filamat"
|
||||
ss.dependency "Filament/tsl"
|
||||
|
||||
+14
-9
@@ -47,14 +47,16 @@ build Filament in Release mode, replace `debug` with `release` in the above `bui
|
||||
|
||||
If you also want to be able to run on the iOS simulator, add the `-s` flag to the `build.sh`
|
||||
command. For example, the following command will build for both devices (ARM64) and the simulator
|
||||
(x86_64) in Debug mode:
|
||||
(both Apple silicon `arm64` and Intel `x86_64`) in Debug mode:
|
||||
|
||||
```
|
||||
$ ./build.sh -s -p ios -i debug
|
||||
```
|
||||
|
||||
When building for the simulator, the sample will then link against the libraries present in
|
||||
`out/ios-debug/filament/lib/x86_64`.
|
||||
When building for the simulator, the samples link against the libraries present in
|
||||
`out/ios-debug/filament/lib/arm64` (Apple silicon simulators) or
|
||||
`out/ios-debug/filament/lib/x86_64` (Intel simulators). The Filament `.xcframework`s expose both
|
||||
slices, so Xcode automatically picks the right one for the active simulator runtime.
|
||||
|
||||
## Xcode
|
||||
|
||||
@@ -88,17 +90,20 @@ from scratch.
|
||||
|
||||
## XcodeGen
|
||||
|
||||
[XcodeGen](https://github.com/yonaskolb/XcodeGen) version 2.43.0 is used to generate the Xcode
|
||||
projects. While not required to run the samples, XcodeGen makes modifying them easier. Each sample
|
||||
folder contains the `project.yml` file used for the sample, which includes a global
|
||||
`app-template.yml` file. Simply run
|
||||
[XcodeGen](https://github.com/yonaskolb/XcodeGen) is used to generate the Xcode projects. While not
|
||||
required to run the samples, XcodeGen makes modifying them easier. Each sample folder contains the
|
||||
`project.yml` file used for the sample, which includes a global `app-template.yml` file. Either run
|
||||
|
||||
```
|
||||
$ xcodegen
|
||||
```
|
||||
|
||||
within a sample folder to re-generate the Xcode project. You may need to close and re-open the
|
||||
project in Xcode to see changes take effect.
|
||||
within a sample folder, or run `./generate-samples.sh` from this directory to regenerate all of
|
||||
them at once.
|
||||
|
||||
The committed `project.pbxproj` files use `objectVersion = 77`, which requires **Xcode 16 or newer**
|
||||
to open. CI pins Xcode 16.2 for this reason. You may need to close and re-open the project in Xcode
|
||||
to see changes take effect.
|
||||
|
||||
## Building iOS Samples with ASan / UBSan
|
||||
|
||||
|
||||
@@ -13,30 +13,35 @@ targetTemplates:
|
||||
- path: ${target_name}/Materials
|
||||
buildPhase: none
|
||||
optional: true
|
||||
dependencies:
|
||||
- framework: ../../out/$(FILAMENT_OUT_NAME)/filament/lib/libfilament.xcframework
|
||||
- framework: ../../out/$(FILAMENT_OUT_NAME)/filament/lib/libbackend.xcframework
|
||||
- framework: ../../out/$(FILAMENT_OUT_NAME)/filament/lib/libfilaflat.xcframework
|
||||
- framework: ../../out/$(FILAMENT_OUT_NAME)/filament/lib/libktxreader.xcframework
|
||||
- framework: ../../out/$(FILAMENT_OUT_NAME)/filament/lib/libfilabridge.xcframework
|
||||
- framework: ../../out/$(FILAMENT_OUT_NAME)/filament/lib/libutils.xcframework
|
||||
- framework: ../../out/$(FILAMENT_OUT_NAME)/filament/lib/libsmol-v.xcframework
|
||||
- framework: ../../out/$(FILAMENT_OUT_NAME)/filament/lib/libgeometry.xcframework
|
||||
- framework: ../../out/$(FILAMENT_OUT_NAME)/filament/lib/libibl.xcframework
|
||||
- framework: ../../out/$(FILAMENT_OUT_NAME)/filament/lib/libabseil.xcframework
|
||||
- framework: ../../out/$(FILAMENT_OUT_NAME)/filament/lib/libzstd.xcframework
|
||||
scheme:
|
||||
configVariants:
|
||||
- Metal
|
||||
- OpenGL
|
||||
settings:
|
||||
base:
|
||||
OTHER_LDFLAGS: ["-lfilament", "-lbackend", "-lfilaflat", "-lktxreader",
|
||||
"-lfilabridge", "-lutils", "-lsmol-v", "-lgeometry", "-libl",
|
||||
"-labseil", "-lzstd"]
|
||||
ENABLE_BITCODE: NO
|
||||
CLANG_CXX_LANGUAGE_STANDARD: c++20
|
||||
# This allows users to not have to specify a unique bundle ID when building the sample apps.
|
||||
SAMPLE_CODE_DISAMBIGUATOR: ${DEVELOPMENT_TEAM}
|
||||
configs:
|
||||
debug:
|
||||
HEADER_SEARCH_PATHS: ["../../../out/ios-debug/filament/include", "generated"]
|
||||
LIBRARY_SEARCH_PATHS:
|
||||
- "../../../out/ios-debug/filament/lib/$(CURRENT_ARCH)"
|
||||
- "../../../out/ios-debug/filament/lib/universal"
|
||||
FILAMENT_OUT_NAME: ios-debug
|
||||
HEADER_SEARCH_PATHS: ["$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include", "generated"]
|
||||
release:
|
||||
HEADER_SEARCH_PATHS: ["../../../out/ios-release/filament/include", "generated"]
|
||||
LIBRARY_SEARCH_PATHS:
|
||||
- "../../../out/ios-release/filament/lib/$(CURRENT_ARCH)"
|
||||
- "../../../out/ios-release/filament/lib/universal"
|
||||
FILAMENT_OUT_NAME: ios-release
|
||||
HEADER_SEARCH_PATHS: ["$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include", "generated"]
|
||||
metal:
|
||||
GCC_PREPROCESSOR_DEFINITIONS: ["FILAMENT_APP_USE_METAL=1", "$(inherited)"]
|
||||
opengl:
|
||||
|
||||
@@ -3,34 +3,117 @@
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 54;
|
||||
objectVersion = 77;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
0DE5DD77BF1B9049D63B76D0 /* libutils.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 7C969D515221A7739C68F3AC /* libutils.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
20863805FC626BF952BA3275 /* ViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 33D80A4472074C601C57C773 /* ViewController.mm */; };
|
||||
2AABB2C1262EBA9553666078 /* libsmol-v.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8F108854ADC54BBAA29C2055 /* libsmol-v.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
305D6C983D22F7BC74FC76C7 /* libabseil.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 0ED51915983DAE97083D44EF /* libabseil.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
32AC9F2183DD11F130D4A91D /* libfilament.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 912652335565C18B252345DE /* libfilament.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
376F63E72973F07BF618082D /* FilamentView.mm in Sources */ = {isa = PBXBuildFile; fileRef = B54DFEB4DB6ACC0289FA3046 /* FilamentView.mm */; };
|
||||
3D73E90782CC3A2124DF046F /* libfilaflat.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9E8375B927AFDFD1069016D1 /* libfilaflat.xcframework */; };
|
||||
477A2A67D32B7A3AF2E7B2F4 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = EB0A767D257F3D05BE9F0960 /* LaunchScreen.storyboard */; };
|
||||
66014C413BCBF00E8E6DAF76 /* libgeometry.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = DB3F32D8D3D7310FA3A0C1A1 /* libgeometry.xcframework */; };
|
||||
6A5D5E984CA862B943742745 /* libgeometry.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = DB3F32D8D3D7310FA3A0C1A1 /* libgeometry.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
6C8A7D49A8F689E20D60F4D4 /* libabseil.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0ED51915983DAE97083D44EF /* libabseil.xcframework */; };
|
||||
7D8D3494388D7BF4D9FE4FCE /* libfilamat.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = C4BDDF85AADA2069C0F9FBAE /* libfilamat.xcframework */; };
|
||||
7E671E777FDB5F34AAA13D5A /* libutils.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7C969D515221A7739C68F3AC /* libutils.xcframework */; };
|
||||
8095A6D37F6F1C9C13BBFEA8 /* libfilamat.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = C4BDDF85AADA2069C0F9FBAE /* libfilamat.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
8402B2AC6D081D1E8E065552 /* libbackend.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8632D4625CFCBD32A46772B5 /* libbackend.xcframework */; };
|
||||
88C039F10343B8598FD5FF7F /* libfilabridge.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = B2A3753419FC4A7D4C039868 /* libfilabridge.xcframework */; };
|
||||
91CCBA3BA96DC289D0E8E975 /* main.mm in Sources */ = {isa = PBXBuildFile; fileRef = AE6C78F32A0494087B0CEF32 /* main.mm */; };
|
||||
AA5AB498C5A6117057B06824 /* libfilaflat.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 9E8375B927AFDFD1069016D1 /* libfilaflat.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
AE63AFEA7E7D507BB677C158 /* libbackend.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8632D4625CFCBD32A46772B5 /* libbackend.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
B3684DB18E82C867020294F1 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 5FDB89AD408A508D6CB74C32 /* AppDelegate.m */; };
|
||||
BFE92829375EE1DBA1E4A689 /* libfilabridge.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = B2A3753419FC4A7D4C039868 /* libfilabridge.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
C74DDEF71B6F3C060BB56189 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B63A6E45E40F58037ABD8F84 /* Main.storyboard */; };
|
||||
C8C8BF3416B9B37003F1031E /* libktxreader.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 19CBBB6C426E8D038BDAC97B /* libktxreader.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
D0E54C592A378E549C96A54D /* libibl.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = D1E30700B368B5F84196FD97 /* libibl.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
D472EB54D462394FE99DCE2B /* libibl.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = D1E30700B368B5F84196FD97 /* libibl.xcframework */; };
|
||||
D5B2F0A85F7C6F352AA99DF1 /* libsmol-v.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8F108854ADC54BBAA29C2055 /* libsmol-v.xcframework */; };
|
||||
E090ED826EE54CA2EA611D83 /* libzstd.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 4C3E6E0AB2BA7D686E424D8F /* libzstd.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
E6163776920A1643B1ED01FA /* libzstd.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4C3E6E0AB2BA7D686E424D8F /* libzstd.xcframework */; };
|
||||
F5E844BFD77174F770543A87 /* libfilament.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 912652335565C18B252345DE /* libfilament.xcframework */; };
|
||||
FB393C813D7A30404A2DEF23 /* libktxreader.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 19CBBB6C426E8D038BDAC97B /* libktxreader.xcframework */; };
|
||||
FC9D623AC5CF31BA9FB0C47B /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 93394D7D4A78C56A2BD31A7D /* Assets.xcassets */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXCopyFilesBuildPhase section */
|
||||
0ABB76F2D4011A4AF5186FCA /* Embed Frameworks */ = {
|
||||
isa = PBXCopyFilesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
dstPath = "";
|
||||
dstSubfolderSpec = 10;
|
||||
files = (
|
||||
32AC9F2183DD11F130D4A91D /* libfilament.xcframework in Embed Frameworks */,
|
||||
AE63AFEA7E7D507BB677C158 /* libbackend.xcframework in Embed Frameworks */,
|
||||
AA5AB498C5A6117057B06824 /* libfilaflat.xcframework in Embed Frameworks */,
|
||||
C8C8BF3416B9B37003F1031E /* libktxreader.xcframework in Embed Frameworks */,
|
||||
BFE92829375EE1DBA1E4A689 /* libfilabridge.xcframework in Embed Frameworks */,
|
||||
0DE5DD77BF1B9049D63B76D0 /* libutils.xcframework in Embed Frameworks */,
|
||||
2AABB2C1262EBA9553666078 /* libsmol-v.xcframework in Embed Frameworks */,
|
||||
6A5D5E984CA862B943742745 /* libgeometry.xcframework in Embed Frameworks */,
|
||||
D0E54C592A378E549C96A54D /* libibl.xcframework in Embed Frameworks */,
|
||||
305D6C983D22F7BC74FC76C7 /* libabseil.xcframework in Embed Frameworks */,
|
||||
E090ED826EE54CA2EA611D83 /* libzstd.xcframework in Embed Frameworks */,
|
||||
8095A6D37F6F1C9C13BBFEA8 /* libfilamat.xcframework in Embed Frameworks */,
|
||||
);
|
||||
name = "Embed Frameworks";
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXCopyFilesBuildPhase section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
056C16E7805E8D33D4C8F7B4 /* FilamentView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FilamentView.h; sourceTree = "<group>"; };
|
||||
0ED51915983DAE97083D44EF /* libabseil.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libabseil.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libabseil.xcframework"; sourceTree = "<group>"; };
|
||||
13DDE7723EC1A6EFCA4D2D58 /* backend-test.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = "backend-test.app"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
17364ECD407006EEBDC06024 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
|
||||
19CBBB6C426E8D038BDAC97B /* libktxreader.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libktxreader.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libktxreader.xcframework"; sourceTree = "<group>"; };
|
||||
276A0ADD5B521719BBB1DA21 /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = "<group>"; };
|
||||
33D80A4472074C601C57C773 /* ViewController.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = ViewController.mm; sourceTree = "<group>"; };
|
||||
4C3E6E0AB2BA7D686E424D8F /* libzstd.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libzstd.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libzstd.xcframework"; sourceTree = "<group>"; };
|
||||
5FDB89AD408A508D6CB74C32 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
|
||||
603475CEE63507AA04A9B21A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
|
||||
7C969D515221A7739C68F3AC /* libutils.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libutils.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libutils.xcframework"; sourceTree = "<group>"; };
|
||||
8632D4625CFCBD32A46772B5 /* libbackend.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libbackend.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libbackend.xcframework"; sourceTree = "<group>"; };
|
||||
8F108854ADC54BBAA29C2055 /* libsmol-v.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = "libsmol-v.xcframework"; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libsmol-v.xcframework"; sourceTree = "<group>"; };
|
||||
912652335565C18B252345DE /* libfilament.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libfilament.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libfilament.xcframework"; sourceTree = "<group>"; };
|
||||
93394D7D4A78C56A2BD31A7D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
||||
9E8375B927AFDFD1069016D1 /* libfilaflat.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libfilaflat.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libfilaflat.xcframework"; sourceTree = "<group>"; };
|
||||
A283B2D6DB365368855E2D7A /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
|
||||
AE6C78F32A0494087B0CEF32 /* main.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = main.mm; sourceTree = "<group>"; };
|
||||
B2A3753419FC4A7D4C039868 /* libfilabridge.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libfilabridge.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libfilabridge.xcframework"; sourceTree = "<group>"; };
|
||||
B54DFEB4DB6ACC0289FA3046 /* FilamentView.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = FilamentView.mm; sourceTree = "<group>"; };
|
||||
C4BDDF85AADA2069C0F9FBAE /* libfilamat.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libfilamat.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libfilamat.xcframework"; sourceTree = "<group>"; };
|
||||
C76230D48038E8109EC121B0 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
|
||||
D1E30700B368B5F84196FD97 /* libibl.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libibl.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libibl.xcframework"; sourceTree = "<group>"; };
|
||||
DB3F32D8D3D7310FA3A0C1A1 /* libgeometry.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libgeometry.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libgeometry.xcframework"; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
5E31B50ED1338E6ADE1FA49A /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
F5E844BFD77174F770543A87 /* libfilament.xcframework in Frameworks */,
|
||||
8402B2AC6D081D1E8E065552 /* libbackend.xcframework in Frameworks */,
|
||||
3D73E90782CC3A2124DF046F /* libfilaflat.xcframework in Frameworks */,
|
||||
FB393C813D7A30404A2DEF23 /* libktxreader.xcframework in Frameworks */,
|
||||
88C039F10343B8598FD5FF7F /* libfilabridge.xcframework in Frameworks */,
|
||||
7E671E777FDB5F34AAA13D5A /* libutils.xcframework in Frameworks */,
|
||||
D5B2F0A85F7C6F352AA99DF1 /* libsmol-v.xcframework in Frameworks */,
|
||||
66014C413BCBF00E8E6DAF76 /* libgeometry.xcframework in Frameworks */,
|
||||
D472EB54D462394FE99DCE2B /* libibl.xcframework in Frameworks */,
|
||||
6C8A7D49A8F689E20D60F4D4 /* libabseil.xcframework in Frameworks */,
|
||||
E6163776920A1643B1ED01FA /* libzstd.xcframework in Frameworks */,
|
||||
7D8D3494388D7BF4D9FE4FCE /* libfilamat.xcframework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
05CA69F10D830E40A8FB561D /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
@@ -44,10 +127,30 @@
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
FE198F0E1EF047534F8F3128 /* backend-test */,
|
||||
81BF22C13654E58F622E6BEC /* Frameworks */,
|
||||
05CA69F10D830E40A8FB561D /* Products */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
81BF22C13654E58F622E6BEC /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
0ED51915983DAE97083D44EF /* libabseil.xcframework */,
|
||||
8632D4625CFCBD32A46772B5 /* libbackend.xcframework */,
|
||||
B2A3753419FC4A7D4C039868 /* libfilabridge.xcframework */,
|
||||
9E8375B927AFDFD1069016D1 /* libfilaflat.xcframework */,
|
||||
C4BDDF85AADA2069C0F9FBAE /* libfilamat.xcframework */,
|
||||
912652335565C18B252345DE /* libfilament.xcframework */,
|
||||
DB3F32D8D3D7310FA3A0C1A1 /* libgeometry.xcframework */,
|
||||
D1E30700B368B5F84196FD97 /* libibl.xcframework */,
|
||||
19CBBB6C426E8D038BDAC97B /* libktxreader.xcframework */,
|
||||
8F108854ADC54BBAA29C2055 /* libsmol-v.xcframework */,
|
||||
7C969D515221A7739C68F3AC /* libutils.xcframework */,
|
||||
4C3E6E0AB2BA7D686E424D8F /* libzstd.xcframework */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
FE198F0E1EF047534F8F3128 /* backend-test */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
@@ -57,11 +160,11 @@
|
||||
056C16E7805E8D33D4C8F7B4 /* FilamentView.h */,
|
||||
B54DFEB4DB6ACC0289FA3046 /* FilamentView.mm */,
|
||||
A283B2D6DB365368855E2D7A /* Info.plist */,
|
||||
EB0A767D257F3D05BE9F0960 /* LaunchScreen.storyboard */,
|
||||
AE6C78F32A0494087B0CEF32 /* main.mm */,
|
||||
B63A6E45E40F58037ABD8F84 /* Main.storyboard */,
|
||||
276A0ADD5B521719BBB1DA21 /* ViewController.h */,
|
||||
33D80A4472074C601C57C773 /* ViewController.mm */,
|
||||
EB0A767D257F3D05BE9F0960 /* LaunchScreen.storyboard */,
|
||||
B63A6E45E40F58037ABD8F84 /* Main.storyboard */,
|
||||
);
|
||||
path = "backend-test";
|
||||
sourceTree = "<group>";
|
||||
@@ -75,6 +178,8 @@
|
||||
buildPhases = (
|
||||
445863ED54C294354A388281 /* Sources */,
|
||||
BD71575ED7ED3237FEFD94C7 /* Resources */,
|
||||
5E31B50ED1338E6ADE1FA49A /* Frameworks */,
|
||||
0ABB76F2D4011A4AF5186FCA /* Embed Frameworks */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
@@ -95,9 +200,10 @@
|
||||
attributes = {
|
||||
BuildIndependentTargetsInParallel = YES;
|
||||
LastUpgradeCheck = 1430;
|
||||
TargetAttributes = {
|
||||
};
|
||||
};
|
||||
buildConfigurationList = E89E1EEA671E49DBAC9D5A9C /* Build configuration list for PBXProject "backend-test" */;
|
||||
compatibilityVersion = "Xcode 14.0";
|
||||
developmentRegion = en;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
@@ -106,7 +212,8 @@
|
||||
);
|
||||
mainGroup = 3D2B936C924E0DB70941EE6D;
|
||||
minimizedProjectReferenceProxies = 1;
|
||||
preferredProjectObjectVersion = 54;
|
||||
preferredProjectObjectVersion = 77;
|
||||
productRefGroup = 05CA69F10D830E40A8FB561D /* Products */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
@@ -168,7 +275,7 @@
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
@@ -224,12 +331,17 @@
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
ENABLE_BITCODE = NO;
|
||||
FILAMENT_OUT_NAME = "ios-debug";
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"../../../out/$(FILAMENT_OUT_NAME)/filament/lib\"",
|
||||
);
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"FILAMENT_APP_USE_OPENGL=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"../../../out/ios-debug/filament/include",
|
||||
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
|
||||
generated,
|
||||
);
|
||||
INFOPLIST_FILE = "backend-test/Info.plist";
|
||||
@@ -238,24 +350,8 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"../../../out/ios-debug/filament/lib/$(CURRENT_ARCH)",
|
||||
"../../../out/ios-debug/filament/lib/universal",
|
||||
);
|
||||
OTHER_LDFLAGS = (
|
||||
"-lfilament",
|
||||
"-lbackend",
|
||||
"-lfilaflat",
|
||||
"-lktxreader",
|
||||
"-lfilabridge",
|
||||
"-lutils",
|
||||
"-lsmol-v",
|
||||
"-lgeometry",
|
||||
"-libl",
|
||||
"-labseil",
|
||||
"-lzstd",
|
||||
"-lfilamat",
|
||||
"-force_load ../../../out/ios-debug/filament/lib/arm64/libbackend_test.a",
|
||||
"-force_load $(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/lib/$(CURRENT_ARCH)-$(PLATFORM_NAME)/libbackend_test.a",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "${SAMPLE_CODE_DISAMBIGUATOR}.google.filament.backend-test";
|
||||
SAMPLE_CODE_DISAMBIGUATOR = "${DEVELOPMENT_TEAM}";
|
||||
@@ -270,7 +366,7 @@
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
@@ -333,12 +429,17 @@
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
ENABLE_BITCODE = NO;
|
||||
FILAMENT_OUT_NAME = "ios-release";
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"../../../out/$(FILAMENT_OUT_NAME)/filament/lib\"",
|
||||
);
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"FILAMENT_APP_USE_OPENGL=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"../../../out/ios-release/filament/include",
|
||||
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
|
||||
generated,
|
||||
);
|
||||
INFOPLIST_FILE = "backend-test/Info.plist";
|
||||
@@ -347,24 +448,8 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"../../../out/ios-release/filament/lib/$(CURRENT_ARCH)",
|
||||
"../../../out/ios-release/filament/lib/universal",
|
||||
);
|
||||
OTHER_LDFLAGS = (
|
||||
"-lfilament",
|
||||
"-lbackend",
|
||||
"-lfilaflat",
|
||||
"-lktxreader",
|
||||
"-lfilabridge",
|
||||
"-lutils",
|
||||
"-lsmol-v",
|
||||
"-lgeometry",
|
||||
"-libl",
|
||||
"-labseil",
|
||||
"-lzstd",
|
||||
"-lfilamat",
|
||||
"-force_load ../../../out/ios-debug/filament/lib/arm64/libbackend_test.a",
|
||||
"-force_load $(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/lib/$(CURRENT_ARCH)-$(PLATFORM_NAME)/libbackend_test.a",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "${SAMPLE_CODE_DISAMBIGUATOR}.google.filament.backend-test";
|
||||
SAMPLE_CODE_DISAMBIGUATOR = "${DEVELOPMENT_TEAM}";
|
||||
@@ -379,7 +464,7 @@
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
@@ -435,12 +520,17 @@
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
ENABLE_BITCODE = NO;
|
||||
FILAMENT_OUT_NAME = "ios-debug";
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"../../../out/$(FILAMENT_OUT_NAME)/filament/lib\"",
|
||||
);
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"FILAMENT_APP_USE_METAL=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"../../../out/ios-debug/filament/include",
|
||||
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
|
||||
generated,
|
||||
);
|
||||
INFOPLIST_FILE = "backend-test/Info.plist";
|
||||
@@ -449,24 +539,8 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"../../../out/ios-debug/filament/lib/$(CURRENT_ARCH)",
|
||||
"../../../out/ios-debug/filament/lib/universal",
|
||||
);
|
||||
OTHER_LDFLAGS = (
|
||||
"-lfilament",
|
||||
"-lbackend",
|
||||
"-lfilaflat",
|
||||
"-lktxreader",
|
||||
"-lfilabridge",
|
||||
"-lutils",
|
||||
"-lsmol-v",
|
||||
"-lgeometry",
|
||||
"-libl",
|
||||
"-labseil",
|
||||
"-lzstd",
|
||||
"-lfilamat",
|
||||
"-force_load ../../../out/ios-debug/filament/lib/arm64/libbackend_test.a",
|
||||
"-force_load $(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/lib/$(CURRENT_ARCH)-$(PLATFORM_NAME)/libbackend_test.a",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "${SAMPLE_CODE_DISAMBIGUATOR}.google.filament.backend-test";
|
||||
SAMPLE_CODE_DISAMBIGUATOR = "${DEVELOPMENT_TEAM}";
|
||||
@@ -482,12 +556,17 @@
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
ENABLE_BITCODE = NO;
|
||||
FILAMENT_OUT_NAME = "ios-release";
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"../../../out/$(FILAMENT_OUT_NAME)/filament/lib\"",
|
||||
);
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"FILAMENT_APP_USE_METAL=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"../../../out/ios-release/filament/include",
|
||||
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
|
||||
generated,
|
||||
);
|
||||
INFOPLIST_FILE = "backend-test/Info.plist";
|
||||
@@ -496,24 +575,8 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"../../../out/ios-release/filament/lib/$(CURRENT_ARCH)",
|
||||
"../../../out/ios-release/filament/lib/universal",
|
||||
);
|
||||
OTHER_LDFLAGS = (
|
||||
"-lfilament",
|
||||
"-lbackend",
|
||||
"-lfilaflat",
|
||||
"-lktxreader",
|
||||
"-lfilabridge",
|
||||
"-lutils",
|
||||
"-lsmol-v",
|
||||
"-lgeometry",
|
||||
"-libl",
|
||||
"-labseil",
|
||||
"-lzstd",
|
||||
"-lfilamat",
|
||||
"-force_load ../../../out/ios-debug/filament/lib/arm64/libbackend_test.a",
|
||||
"-force_load $(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/lib/$(CURRENT_ARCH)-$(PLATFORM_NAME)/libbackend_test.a",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "${SAMPLE_CODE_DISAMBIGUATOR}.google.filament.backend-test";
|
||||
SAMPLE_CODE_DISAMBIGUATOR = "${DEVELOPMENT_TEAM}";
|
||||
@@ -528,7 +591,7 @@
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
|
||||
@@ -6,8 +6,10 @@ targets:
|
||||
backend-test:
|
||||
templates:
|
||||
- FilamentApp
|
||||
dependencies:
|
||||
- framework: ../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libfilamat.xcframework
|
||||
settings:
|
||||
base:
|
||||
# Because each test case is a separate file, the -force_load flag is necessary to prevent the
|
||||
# linker from removing "unused" symbols.
|
||||
OTHER_LDFLAGS: ["-lfilamat", "-force_load ../../../out/ios-debug/filament/lib/arm64/libbackend_test.a"]
|
||||
OTHER_LDFLAGS: ["-force_load $(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/lib/$(CURRENT_ARCH)-$(PLATFORM_NAME)/libbackend_test.a"]
|
||||
|
||||
@@ -10,7 +10,7 @@ set -e
|
||||
|
||||
HOST_TOOLS_PATH="${HOST_TOOLS_PATH:-../../../out/release/filament/bin}"
|
||||
|
||||
cmgen_path=`find ${HOST_TOOLS_PATH} -name cmgen -type f | head -n 1`
|
||||
cmgen_path=`find -L ${HOST_TOOLS_PATH} -name cmgen -type f | head -n 1`
|
||||
|
||||
# Ensure that the required tools are present in the out/ directory.
|
||||
# These can be built by running ./build.sh -p desktop -i release at Filament's root directory.
|
||||
|
||||
@@ -3,40 +3,178 @@
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 54;
|
||||
objectVersion = 77;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
00101E55E74547D6C2FD8C03 /* default_env_ibl.ktx in Resources */ = {isa = PBXBuildFile; fileRef = A027015F6F283E92C379F0B1 /* default_env_ibl.ktx */; };
|
||||
0A6463A23D9E0C766EF24559 /* libgeometry.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 61B9468E1B7FED7F00513152 /* libgeometry.xcframework */; };
|
||||
10A51B4DB601FEF9A6F1C0E3 /* libgeometry.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 61B9468E1B7FED7F00513152 /* libgeometry.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
10EB5B0EBD334A09BFC3B9DF /* libibl.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4D2FB034B2AD911A82D44F4E /* libibl.xcframework */; };
|
||||
1297B48507BF2849751AE0E6 /* FILViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3B5A2C1598614ED63098A783 /* FILViewController.mm */; };
|
||||
1404696E6E1E5E4D265773B8 /* libsmol-v.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = C766C894259479FC62B7C8B4 /* libsmol-v.xcframework */; };
|
||||
14D3627324AE91F7B9C74745 /* libuberzlib.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = F7030A0C0BABAD05CDEAFDE8 /* libuberzlib.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
174327B08EFFA8255829FF49 /* libbackend.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 1CFC9093A6EF27302A37326E /* libbackend.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
1E42FEC5AE043BDDCE3CB0A4 /* libcamutils.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 2B534EACCD70A2DA1623F743 /* libcamutils.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
22EBD00922E4FBAE5F20AF3B /* libviewer.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 52712E0BD50CA883190B6C1D /* libviewer.xcframework */; };
|
||||
285A74424AF5E3014363F8E6 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 14BA4B8B6A697847DA9934D2 /* Main.storyboard */; };
|
||||
2B0B9C8428D402D919CAC47E /* libimageio-lite.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 60330C4B6F21AA47B5524999 /* libimageio-lite.xcframework */; };
|
||||
318A6749D6D4258385B67447 /* libzstd.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 75EFC385D49A53E005466F45 /* libzstd.xcframework */; };
|
||||
36E0764917CB1EE729C6B771 /* libfilaflat.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = CF656283054DABCE73A96F57 /* libfilaflat.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
379B9C62A9AB782FDBC0E16C /* libabseil.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6BFA0007FC472C65083E2452 /* libabseil.xcframework */; };
|
||||
3CF14DE9557B15702D1CC5A9 /* libstb.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 487A93E37417074697C5AEE1 /* libstb.xcframework */; };
|
||||
4033B9273D8B4C4631200EC1 /* libimage.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8F6D55F40189E2AD59138BFC /* libimage.xcframework */; };
|
||||
453F7CCB3A029F9604857C1C /* FILModelView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1F16324F2F287CB27E1A84EB /* FILModelView.mm */; };
|
||||
45F28F70A616F4B5C67FEC66 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = DF545E3F8FD553E334F5D6D6 /* Assets.xcassets */; };
|
||||
4C287DB6F93BD352927F003A /* libabseil.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6BFA0007FC472C65083E2452 /* libabseil.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
4FE0C24C9B962C9F7439C9D4 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 1FF7EE9D5DD74F1A740C0D88 /* main.m */; };
|
||||
58EBAAC97B7EA63E102CDCDB /* BusterDrone in Resources */ = {isa = PBXBuildFile; fileRef = 7F78E613984102280C822052 /* BusterDrone */; };
|
||||
5C706EF98086B64B4CB3EF9A /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = A0A866F9B1B8D315E88D3D12 /* AppDelegate.m */; };
|
||||
5FA818045C43856C7FFED3DB /* libcivetweb.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = B41054C75146CF46900EB674 /* libcivetweb.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
60EB0B4391BB0FB171A4481D /* libmeshoptimizer.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = F696C8553E8CC1A6416678CB /* libmeshoptimizer.xcframework */; };
|
||||
698BA8E8638E7BD46D6BC337 /* libcamutils.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2B534EACCD70A2DA1623F743 /* libcamutils.xcframework */; };
|
||||
700D3E15E852F06C5D8AD28B /* libfilament.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 515259657B354C8F37272D16 /* libfilament.xcframework */; };
|
||||
701EA9C2DFA93FC8D27E4831 /* libimage.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8F6D55F40189E2AD59138BFC /* libimage.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
7922299F8548416D6E8504AB /* libfilabridge.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 020557AD44AE2D4F9D99EC33 /* libfilabridge.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
7FB58BE1AF39FD8710F6903E /* libzstd.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 75EFC385D49A53E005466F45 /* libzstd.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
847436C12F9597E494EDD811 /* libutils.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 91CAACDECFDED76D0DBD8404 /* libutils.xcframework */; };
|
||||
872D52205E6A17C440CEFB8B /* libbackend.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1CFC9093A6EF27302A37326E /* libbackend.xcframework */; };
|
||||
8949CFB77397BDDBB71B155C /* libfilaflat.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = CF656283054DABCE73A96F57 /* libfilaflat.xcframework */; };
|
||||
8A03666082048B85BDE1C1CE /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 21CA7296309BBFADBB0B00C3 /* LaunchScreen.storyboard */; };
|
||||
902D317731C0347ED896B7D2 /* libuberzlib.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = F7030A0C0BABAD05CDEAFDE8 /* libuberzlib.xcframework */; };
|
||||
A5D1D0F914C22A76A15EF93E /* libktxreader.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = AF19593AAD6D35C6A9198C27 /* libktxreader.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
A6C04B690A802EBF133E23C4 /* libfilament.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 515259657B354C8F37272D16 /* libfilament.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
A7C7D42BDE57B77CB9D9C5D2 /* default_env_skybox.ktx in Resources */ = {isa = PBXBuildFile; fileRef = 5271315876D6BC61346DFD97 /* default_env_skybox.ktx */; };
|
||||
AB07A9DD1861F9233ADC5A9F /* libibl.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 4D2FB034B2AD911A82D44F4E /* libibl.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
AE30134D543B24298D96BC03 /* libdracodec.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 7A57517D52C2BDCA859338D1 /* libdracodec.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
AEDF1CEAF183E92426DA594A /* libmeshoptimizer.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = F696C8553E8CC1A6416678CB /* libmeshoptimizer.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
AFAD827230601E60E38FA771 /* libstb.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 487A93E37417074697C5AEE1 /* libstb.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
B54C62933C17714E465A76A5 /* libutils.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 91CAACDECFDED76D0DBD8404 /* libutils.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
C0D8E3E2C38F674A23427224 /* libuberarchive.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 25D5A93890B91F8C86BE2F0A /* libuberarchive.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
C427F6D58A977156565AE677 /* libcivetweb.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = B41054C75146CF46900EB674 /* libcivetweb.xcframework */; };
|
||||
C7A64F27B1A83023C1212E1C /* libdracodec.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7A57517D52C2BDCA859338D1 /* libdracodec.xcframework */; };
|
||||
CB3A6143B788613B58BAB28A /* libgltfio_core.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5B9B11A731D26A94397D4B9B /* libgltfio_core.xcframework */; };
|
||||
CDD73BDF196F559F671AE616 /* libbasis_transcoder.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 4EDA245B8F43311DD75A1F81 /* libbasis_transcoder.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
D3AE8B47D9F8509C8A875E39 /* libgltfio_core.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 5B9B11A731D26A94397D4B9B /* libgltfio_core.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
D89F33EFEDE5814BFA8D9892 /* libimageio-lite.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 60330C4B6F21AA47B5524999 /* libimageio-lite.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
D93CA0A2E8A487D040934121 /* libsmol-v.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = C766C894259479FC62B7C8B4 /* libsmol-v.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
EFBDF01BC780CE2F40B83CE0 /* libbasis_transcoder.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4EDA245B8F43311DD75A1F81 /* libbasis_transcoder.xcframework */; };
|
||||
F14C52ECDB8C27794AD54DB0 /* libuberarchive.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 25D5A93890B91F8C86BE2F0A /* libuberarchive.xcframework */; };
|
||||
F5B36F9395DFC29EA677B406 /* libktxreader.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF19593AAD6D35C6A9198C27 /* libktxreader.xcframework */; };
|
||||
F682DAD214D9F8E2DD36A110 /* libviewer.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 52712E0BD50CA883190B6C1D /* libviewer.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
FC3919370067F7747B9C4C53 /* libfilabridge.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 020557AD44AE2D4F9D99EC33 /* libfilabridge.xcframework */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXCopyFilesBuildPhase section */
|
||||
26182010104312BFB0BA3CE4 /* Embed Frameworks */ = {
|
||||
isa = PBXCopyFilesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
dstPath = "";
|
||||
dstSubfolderSpec = 10;
|
||||
files = (
|
||||
A6C04B690A802EBF133E23C4 /* libfilament.xcframework in Embed Frameworks */,
|
||||
174327B08EFFA8255829FF49 /* libbackend.xcframework in Embed Frameworks */,
|
||||
36E0764917CB1EE729C6B771 /* libfilaflat.xcframework in Embed Frameworks */,
|
||||
A5D1D0F914C22A76A15EF93E /* libktxreader.xcframework in Embed Frameworks */,
|
||||
7922299F8548416D6E8504AB /* libfilabridge.xcframework in Embed Frameworks */,
|
||||
B54C62933C17714E465A76A5 /* libutils.xcframework in Embed Frameworks */,
|
||||
D93CA0A2E8A487D040934121 /* libsmol-v.xcframework in Embed Frameworks */,
|
||||
10A51B4DB601FEF9A6F1C0E3 /* libgeometry.xcframework in Embed Frameworks */,
|
||||
AB07A9DD1861F9233ADC5A9F /* libibl.xcframework in Embed Frameworks */,
|
||||
4C287DB6F93BD352927F003A /* libabseil.xcframework in Embed Frameworks */,
|
||||
7FB58BE1AF39FD8710F6903E /* libzstd.xcframework in Embed Frameworks */,
|
||||
D3AE8B47D9F8509C8A875E39 /* libgltfio_core.xcframework in Embed Frameworks */,
|
||||
C0D8E3E2C38F674A23427224 /* libuberarchive.xcframework in Embed Frameworks */,
|
||||
701EA9C2DFA93FC8D27E4831 /* libimage.xcframework in Embed Frameworks */,
|
||||
AFAD827230601E60E38FA771 /* libstb.xcframework in Embed Frameworks */,
|
||||
CDD73BDF196F559F671AE616 /* libbasis_transcoder.xcframework in Embed Frameworks */,
|
||||
1E42FEC5AE043BDDCE3CB0A4 /* libcamutils.xcframework in Embed Frameworks */,
|
||||
AE30134D543B24298D96BC03 /* libdracodec.xcframework in Embed Frameworks */,
|
||||
AEDF1CEAF183E92426DA594A /* libmeshoptimizer.xcframework in Embed Frameworks */,
|
||||
F682DAD214D9F8E2DD36A110 /* libviewer.xcframework in Embed Frameworks */,
|
||||
5FA818045C43856C7FFED3DB /* libcivetweb.xcframework in Embed Frameworks */,
|
||||
14D3627324AE91F7B9C74745 /* libuberzlib.xcframework in Embed Frameworks */,
|
||||
D89F33EFEDE5814BFA8D9892 /* libimageio-lite.xcframework in Embed Frameworks */,
|
||||
);
|
||||
name = "Embed Frameworks";
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXCopyFilesBuildPhase section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
020557AD44AE2D4F9D99EC33 /* libfilabridge.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libfilabridge.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libfilabridge.xcframework"; sourceTree = "<group>"; };
|
||||
03A535A718B2F64A70C5F231 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
|
||||
1CFC9093A6EF27302A37326E /* libbackend.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libbackend.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libbackend.xcframework"; sourceTree = "<group>"; };
|
||||
1ED9318FEC158171D99C0857 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
|
||||
1F16324F2F287CB27E1A84EB /* FILModelView.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = FILModelView.mm; sourceTree = "<group>"; };
|
||||
1FF7EE9D5DD74F1A740C0D88 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
|
||||
25D5A93890B91F8C86BE2F0A /* libuberarchive.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libuberarchive.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libuberarchive.xcframework"; sourceTree = "<group>"; };
|
||||
2B534EACCD70A2DA1623F743 /* libcamutils.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libcamutils.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libcamutils.xcframework"; sourceTree = "<group>"; };
|
||||
2B973C3E0FE0EEED37D41D32 /* FILModelView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FILModelView.h; sourceTree = "<group>"; };
|
||||
3B5A2C1598614ED63098A783 /* FILViewController.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = FILViewController.mm; sourceTree = "<group>"; };
|
||||
487A93E37417074697C5AEE1 /* libstb.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libstb.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libstb.xcframework"; sourceTree = "<group>"; };
|
||||
4D2FB034B2AD911A82D44F4E /* libibl.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libibl.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libibl.xcframework"; sourceTree = "<group>"; };
|
||||
4EDA245B8F43311DD75A1F81 /* libbasis_transcoder.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libbasis_transcoder.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libbasis_transcoder.xcframework"; sourceTree = "<group>"; };
|
||||
515259657B354C8F37272D16 /* libfilament.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libfilament.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libfilament.xcframework"; sourceTree = "<group>"; };
|
||||
52712E0BD50CA883190B6C1D /* libviewer.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libviewer.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libviewer.xcframework"; sourceTree = "<group>"; };
|
||||
5271315876D6BC61346DFD97 /* default_env_skybox.ktx */ = {isa = PBXFileReference; path = default_env_skybox.ktx; sourceTree = "<group>"; };
|
||||
5B9B11A731D26A94397D4B9B /* libgltfio_core.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libgltfio_core.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libgltfio_core.xcframework"; sourceTree = "<group>"; };
|
||||
60330C4B6F21AA47B5524999 /* libimageio-lite.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = "libimageio-lite.xcframework"; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libimageio-lite.xcframework"; sourceTree = "<group>"; };
|
||||
61B9468E1B7FED7F00513152 /* libgeometry.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libgeometry.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libgeometry.xcframework"; sourceTree = "<group>"; };
|
||||
6BFA0007FC472C65083E2452 /* libabseil.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libabseil.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libabseil.xcframework"; sourceTree = "<group>"; };
|
||||
6E6BB885F2B193E786CD9F14 /* FILViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FILViewController.h; sourceTree = "<group>"; };
|
||||
75EFC385D49A53E005466F45 /* libzstd.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libzstd.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libzstd.xcframework"; sourceTree = "<group>"; };
|
||||
7A57517D52C2BDCA859338D1 /* libdracodec.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libdracodec.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libdracodec.xcframework"; sourceTree = "<group>"; };
|
||||
7F78E613984102280C822052 /* BusterDrone */ = {isa = PBXFileReference; lastKnownFileType = folder; name = BusterDrone; path = ../../../third_party/models/BusterDrone; sourceTree = SOURCE_ROOT; };
|
||||
8F6D55F40189E2AD59138BFC /* libimage.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libimage.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libimage.xcframework"; sourceTree = "<group>"; };
|
||||
91CAACDECFDED76D0DBD8404 /* libutils.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libutils.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libutils.xcframework"; sourceTree = "<group>"; };
|
||||
9ADEA6DE7305D0B8CCFFA53D /* gltf-viewer.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = "gltf-viewer.app"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
A027015F6F283E92C379F0B1 /* default_env_ibl.ktx */ = {isa = PBXFileReference; path = default_env_ibl.ktx; sourceTree = "<group>"; };
|
||||
A0A866F9B1B8D315E88D3D12 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
|
||||
AF19593AAD6D35C6A9198C27 /* libktxreader.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libktxreader.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libktxreader.xcframework"; sourceTree = "<group>"; };
|
||||
B41054C75146CF46900EB674 /* libcivetweb.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libcivetweb.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libcivetweb.xcframework"; sourceTree = "<group>"; };
|
||||
B9C391BBD90EB54D27F8E4FD /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
|
||||
C766C894259479FC62B7C8B4 /* libsmol-v.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = "libsmol-v.xcframework"; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libsmol-v.xcframework"; sourceTree = "<group>"; };
|
||||
C7ECAA95F4A55C69B948F806 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
|
||||
CF656283054DABCE73A96F57 /* libfilaflat.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libfilaflat.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libfilaflat.xcframework"; sourceTree = "<group>"; };
|
||||
DF545E3F8FD553E334F5D6D6 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
||||
F696C8553E8CC1A6416678CB /* libmeshoptimizer.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libmeshoptimizer.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libmeshoptimizer.xcframework"; sourceTree = "<group>"; };
|
||||
F7030A0C0BABAD05CDEAFDE8 /* libuberzlib.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libuberzlib.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libuberzlib.xcframework"; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
E646271806112A138895CBE3 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
700D3E15E852F06C5D8AD28B /* libfilament.xcframework in Frameworks */,
|
||||
872D52205E6A17C440CEFB8B /* libbackend.xcframework in Frameworks */,
|
||||
8949CFB77397BDDBB71B155C /* libfilaflat.xcframework in Frameworks */,
|
||||
F5B36F9395DFC29EA677B406 /* libktxreader.xcframework in Frameworks */,
|
||||
FC3919370067F7747B9C4C53 /* libfilabridge.xcframework in Frameworks */,
|
||||
847436C12F9597E494EDD811 /* libutils.xcframework in Frameworks */,
|
||||
1404696E6E1E5E4D265773B8 /* libsmol-v.xcframework in Frameworks */,
|
||||
0A6463A23D9E0C766EF24559 /* libgeometry.xcframework in Frameworks */,
|
||||
10EB5B0EBD334A09BFC3B9DF /* libibl.xcframework in Frameworks */,
|
||||
379B9C62A9AB782FDBC0E16C /* libabseil.xcframework in Frameworks */,
|
||||
318A6749D6D4258385B67447 /* libzstd.xcframework in Frameworks */,
|
||||
CB3A6143B788613B58BAB28A /* libgltfio_core.xcframework in Frameworks */,
|
||||
F14C52ECDB8C27794AD54DB0 /* libuberarchive.xcframework in Frameworks */,
|
||||
4033B9273D8B4C4631200EC1 /* libimage.xcframework in Frameworks */,
|
||||
3CF14DE9557B15702D1CC5A9 /* libstb.xcframework in Frameworks */,
|
||||
EFBDF01BC780CE2F40B83CE0 /* libbasis_transcoder.xcframework in Frameworks */,
|
||||
698BA8E8638E7BD46D6BC337 /* libcamutils.xcframework in Frameworks */,
|
||||
C7A64F27B1A83023C1212E1C /* libdracodec.xcframework in Frameworks */,
|
||||
60EB0B4391BB0FB171A4481D /* libmeshoptimizer.xcframework in Frameworks */,
|
||||
22EBD00922E4FBAE5F20AF3B /* libviewer.xcframework in Frameworks */,
|
||||
C427F6D58A977156565AE677 /* libcivetweb.xcframework in Frameworks */,
|
||||
902D317731C0347ED896B7D2 /* libuberzlib.xcframework in Frameworks */,
|
||||
2B0B9C8428D402D919CAC47E /* libimageio-lite.xcframework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
2678CEA2FDBFE6D6DC1D4D71 /* gltf-viewer */ = {
|
||||
isa = PBXGroup;
|
||||
@@ -65,8 +203,8 @@
|
||||
children = (
|
||||
DF545E3F8FD553E334F5D6D6 /* Assets.xcassets */,
|
||||
B9C391BBD90EB54D27F8E4FD /* Info.plist */,
|
||||
21CA7296309BBFADBB0B00C3 /* LaunchScreen.storyboard */,
|
||||
1FF7EE9D5DD74F1A740C0D88 /* main.m */,
|
||||
21CA7296309BBFADBB0B00C3 /* LaunchScreen.storyboard */,
|
||||
14BA4B8B6A697847DA9934D2 /* Main.storyboard */,
|
||||
);
|
||||
path = SupportFiles;
|
||||
@@ -78,10 +216,41 @@
|
||||
7F78E613984102280C822052 /* BusterDrone */,
|
||||
E102A6C527928715EF7B0497 /* default_env */,
|
||||
2678CEA2FDBFE6D6DC1D4D71 /* gltf-viewer */,
|
||||
8826A1E62E0B87AA4A9982D5 /* Frameworks */,
|
||||
3BFD6EBD6D97D6F1C40F1C90 /* Products */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
8826A1E62E0B87AA4A9982D5 /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
6BFA0007FC472C65083E2452 /* libabseil.xcframework */,
|
||||
1CFC9093A6EF27302A37326E /* libbackend.xcframework */,
|
||||
4EDA245B8F43311DD75A1F81 /* libbasis_transcoder.xcframework */,
|
||||
2B534EACCD70A2DA1623F743 /* libcamutils.xcframework */,
|
||||
B41054C75146CF46900EB674 /* libcivetweb.xcframework */,
|
||||
7A57517D52C2BDCA859338D1 /* libdracodec.xcframework */,
|
||||
020557AD44AE2D4F9D99EC33 /* libfilabridge.xcframework */,
|
||||
CF656283054DABCE73A96F57 /* libfilaflat.xcframework */,
|
||||
515259657B354C8F37272D16 /* libfilament.xcframework */,
|
||||
61B9468E1B7FED7F00513152 /* libgeometry.xcframework */,
|
||||
5B9B11A731D26A94397D4B9B /* libgltfio_core.xcframework */,
|
||||
4D2FB034B2AD911A82D44F4E /* libibl.xcframework */,
|
||||
8F6D55F40189E2AD59138BFC /* libimage.xcframework */,
|
||||
60330C4B6F21AA47B5524999 /* libimageio-lite.xcframework */,
|
||||
AF19593AAD6D35C6A9198C27 /* libktxreader.xcframework */,
|
||||
F696C8553E8CC1A6416678CB /* libmeshoptimizer.xcframework */,
|
||||
C766C894259479FC62B7C8B4 /* libsmol-v.xcframework */,
|
||||
487A93E37417074697C5AEE1 /* libstb.xcframework */,
|
||||
25D5A93890B91F8C86BE2F0A /* libuberarchive.xcframework */,
|
||||
F7030A0C0BABAD05CDEAFDE8 /* libuberzlib.xcframework */,
|
||||
91CAACDECFDED76D0DBD8404 /* libutils.xcframework */,
|
||||
52712E0BD50CA883190B6C1D /* libviewer.xcframework */,
|
||||
75EFC385D49A53E005466F45 /* libzstd.xcframework */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
E102A6C527928715EF7B0497 /* default_env */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
@@ -102,6 +271,8 @@
|
||||
0B375996CE4EBC4A5B258C27 /* Build Resources */,
|
||||
C8F38C978C83CD5335A21F72 /* Sources */,
|
||||
7D3B1B99EEAFB6F53ECBAA5A /* Resources */,
|
||||
E646271806112A138895CBE3 /* Frameworks */,
|
||||
26182010104312BFB0BA3CE4 /* Embed Frameworks */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
@@ -122,9 +293,10 @@
|
||||
attributes = {
|
||||
BuildIndependentTargetsInParallel = YES;
|
||||
LastUpgradeCheck = 1430;
|
||||
TargetAttributes = {
|
||||
};
|
||||
};
|
||||
buildConfigurationList = 90327DE42AE5DF12C4BD2113 /* Build configuration list for PBXProject "gltf-viewer" */;
|
||||
compatibilityVersion = "Xcode 14.0";
|
||||
developmentRegion = en;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
@@ -133,7 +305,8 @@
|
||||
);
|
||||
mainGroup = 7DB4500696DB13904CDF40C4;
|
||||
minimizedProjectReferenceProxies = 1;
|
||||
preferredProjectObjectVersion = 56;
|
||||
preferredProjectObjectVersion = 77;
|
||||
productRefGroup = 3BFD6EBD6D97D6F1C40F1C90 /* Products */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
@@ -167,7 +340,7 @@
|
||||
inputFileListPaths = (
|
||||
);
|
||||
inputPaths = (
|
||||
"$(SRCROOT)/../../../third_party/environments/lightroom_14b.hdr",
|
||||
../../../third_party/environments/lightroom_14b.hdr,
|
||||
);
|
||||
name = "Build Resources";
|
||||
outputFileListPaths = (
|
||||
@@ -178,7 +351,7 @@
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "#/usr/bin/env/bash\n\nset -e\n\n# Compile resources.\n\n# The gltf-viewer app requires two resources:\n# 1. The IBL image\n# 2. The skybox image\n\nHOST_TOOLS_PATH=\"${HOST_TOOLS_PATH:-../../../out/release/filament/bin}\"\n\ncmgen_path=`find ${HOST_TOOLS_PATH} -name cmgen -type f | head -n 1`\n\n# Ensure that the required tools are present in the out/ directory.\n# These can be built by running ./build.sh -p desktop -i release at Filament's root directory.\n\nif [[ ! -e \"${cmgen_path}\" ]]; then\n echo \"No cmgen binary could be found in ${HOST_TOOLS_PATH}.\"\n echo \"Ensure Filament has been built/installed before building this app.\"\n exit 1\nfi\n\n# cmgen consumes an HDR environment map and generates two mipmapped KTX files (IBL and skybox)\n\"${cmgen_path}\" \\\n --quiet \\\n --deploy=\"${PROJECT_DIR}/generated/default_env\" \\\n --format=ktx --size=256 --extract-blur=0.1 \\\n \"${PROJECT_DIR}/../../../third_party/environments/lightroom_14b.hdr\"\n";
|
||||
shellScript = "#/usr/bin/env/bash\n\nset -e\n\n# Compile resources.\n\n# The gltf-viewer app requires two resources:\n# 1. The IBL image\n# 2. The skybox image\n\nHOST_TOOLS_PATH=\"${HOST_TOOLS_PATH:-../../../out/release/filament/bin}\"\n\ncmgen_path=`find -L ${HOST_TOOLS_PATH} -name cmgen -type f | head -n 1`\n\n# Ensure that the required tools are present in the out/ directory.\n# These can be built by running ./build.sh -p desktop -i release at Filament's root directory.\n\nif [[ ! -e \"${cmgen_path}\" ]]; then\n echo \"No cmgen binary could be found in ${HOST_TOOLS_PATH}.\"\n echo \"Ensure Filament has been built/installed before building this app.\"\n exit 1\nfi\n\n# cmgen consumes an HDR environment map and generates two mipmapped KTX files (IBL and skybox)\n\"${cmgen_path}\" \\\n --quiet \\\n --deploy=\"${PROJECT_DIR}/generated/default_env\" \\\n --format=ktx --size=256 --extract-blur=0.1 \\\n \"${PROJECT_DIR}/../../../third_party/environments/lightroom_14b.hdr\"\n";
|
||||
};
|
||||
/* End PBXShellScriptBuildPhase section */
|
||||
|
||||
@@ -222,7 +395,7 @@
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
@@ -284,7 +457,7 @@
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
@@ -339,7 +512,7 @@
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
@@ -395,12 +568,17 @@
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
ENABLE_BITCODE = NO;
|
||||
FILAMENT_OUT_NAME = "ios-release";
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"../../../out/$(FILAMENT_OUT_NAME)/filament/lib\"",
|
||||
);
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"FILAMENT_APP_USE_METAL=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"../../../out/ios-release/filament/include",
|
||||
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
|
||||
generated,
|
||||
);
|
||||
INFOPLIST_FILE = "gltf-viewer/SupportFiles/Info.plist";
|
||||
@@ -409,36 +587,6 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"../../../out/ios-release/filament/lib/$(CURRENT_ARCH)",
|
||||
"../../../out/ios-release/filament/lib/universal",
|
||||
);
|
||||
OTHER_LDFLAGS = (
|
||||
"-lfilament",
|
||||
"-lbackend",
|
||||
"-lfilaflat",
|
||||
"-lktxreader",
|
||||
"-lfilabridge",
|
||||
"-lutils",
|
||||
"-lsmol-v",
|
||||
"-lgeometry",
|
||||
"-libl",
|
||||
"-labseil",
|
||||
"-lzstd",
|
||||
"-lgltfio_core",
|
||||
"-luberarchive",
|
||||
"-limage",
|
||||
"-lstb",
|
||||
"-lbasis_transcoder",
|
||||
"-lzstd",
|
||||
"-lcamutils",
|
||||
"-ldracodec",
|
||||
"-lmeshoptimizer",
|
||||
"-lviewer",
|
||||
"-lcivetweb",
|
||||
"-luberzlib",
|
||||
"-limageio-lite",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "${SAMPLE_CODE_DISAMBIGUATOR}.google.filament.gltf-viewer";
|
||||
SAMPLE_CODE_DISAMBIGUATOR = "${DEVELOPMENT_TEAM}";
|
||||
SDKROOT = iphoneos;
|
||||
@@ -453,12 +601,17 @@
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
ENABLE_BITCODE = NO;
|
||||
FILAMENT_OUT_NAME = "ios-debug";
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"../../../out/$(FILAMENT_OUT_NAME)/filament/lib\"",
|
||||
);
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"FILAMENT_APP_USE_METAL=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"../../../out/ios-debug/filament/include",
|
||||
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
|
||||
generated,
|
||||
);
|
||||
INFOPLIST_FILE = "gltf-viewer/SupportFiles/Info.plist";
|
||||
@@ -467,36 +620,6 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"../../../out/ios-debug/filament/lib/$(CURRENT_ARCH)",
|
||||
"../../../out/ios-debug/filament/lib/universal",
|
||||
);
|
||||
OTHER_LDFLAGS = (
|
||||
"-lfilament",
|
||||
"-lbackend",
|
||||
"-lfilaflat",
|
||||
"-lktxreader",
|
||||
"-lfilabridge",
|
||||
"-lutils",
|
||||
"-lsmol-v",
|
||||
"-lgeometry",
|
||||
"-libl",
|
||||
"-labseil",
|
||||
"-lzstd",
|
||||
"-lgltfio_core",
|
||||
"-luberarchive",
|
||||
"-limage",
|
||||
"-lstb",
|
||||
"-lbasis_transcoder",
|
||||
"-lzstd",
|
||||
"-lcamutils",
|
||||
"-ldracodec",
|
||||
"-lmeshoptimizer",
|
||||
"-lviewer",
|
||||
"-lcivetweb",
|
||||
"-luberzlib",
|
||||
"-limageio-lite",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "${SAMPLE_CODE_DISAMBIGUATOR}.google.filament.gltf-viewer";
|
||||
SAMPLE_CODE_DISAMBIGUATOR = "${DEVELOPMENT_TEAM}";
|
||||
SDKROOT = iphoneos;
|
||||
@@ -510,7 +633,7 @@
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
@@ -573,12 +696,17 @@
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
ENABLE_BITCODE = NO;
|
||||
FILAMENT_OUT_NAME = "ios-release";
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"../../../out/$(FILAMENT_OUT_NAME)/filament/lib\"",
|
||||
);
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"FILAMENT_APP_USE_OPENGL=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"../../../out/ios-release/filament/include",
|
||||
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
|
||||
generated,
|
||||
);
|
||||
INFOPLIST_FILE = "gltf-viewer/SupportFiles/Info.plist";
|
||||
@@ -587,36 +715,6 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"../../../out/ios-release/filament/lib/$(CURRENT_ARCH)",
|
||||
"../../../out/ios-release/filament/lib/universal",
|
||||
);
|
||||
OTHER_LDFLAGS = (
|
||||
"-lfilament",
|
||||
"-lbackend",
|
||||
"-lfilaflat",
|
||||
"-lktxreader",
|
||||
"-lfilabridge",
|
||||
"-lutils",
|
||||
"-lsmol-v",
|
||||
"-lgeometry",
|
||||
"-libl",
|
||||
"-labseil",
|
||||
"-lzstd",
|
||||
"-lgltfio_core",
|
||||
"-luberarchive",
|
||||
"-limage",
|
||||
"-lstb",
|
||||
"-lbasis_transcoder",
|
||||
"-lzstd",
|
||||
"-lcamutils",
|
||||
"-ldracodec",
|
||||
"-lmeshoptimizer",
|
||||
"-lviewer",
|
||||
"-lcivetweb",
|
||||
"-luberzlib",
|
||||
"-limageio-lite",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "${SAMPLE_CODE_DISAMBIGUATOR}.google.filament.gltf-viewer";
|
||||
SAMPLE_CODE_DISAMBIGUATOR = "${DEVELOPMENT_TEAM}";
|
||||
SDKROOT = iphoneos;
|
||||
@@ -631,12 +729,17 @@
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
ENABLE_BITCODE = NO;
|
||||
FILAMENT_OUT_NAME = "ios-debug";
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"../../../out/$(FILAMENT_OUT_NAME)/filament/lib\"",
|
||||
);
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"FILAMENT_APP_USE_OPENGL=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"../../../out/ios-debug/filament/include",
|
||||
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
|
||||
generated,
|
||||
);
|
||||
INFOPLIST_FILE = "gltf-viewer/SupportFiles/Info.plist";
|
||||
@@ -645,36 +748,6 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"../../../out/ios-debug/filament/lib/$(CURRENT_ARCH)",
|
||||
"../../../out/ios-debug/filament/lib/universal",
|
||||
);
|
||||
OTHER_LDFLAGS = (
|
||||
"-lfilament",
|
||||
"-lbackend",
|
||||
"-lfilaflat",
|
||||
"-lktxreader",
|
||||
"-lfilabridge",
|
||||
"-lutils",
|
||||
"-lsmol-v",
|
||||
"-lgeometry",
|
||||
"-libl",
|
||||
"-labseil",
|
||||
"-lzstd",
|
||||
"-lgltfio_core",
|
||||
"-luberarchive",
|
||||
"-limage",
|
||||
"-lstb",
|
||||
"-lbasis_transcoder",
|
||||
"-lzstd",
|
||||
"-lcamutils",
|
||||
"-ldracodec",
|
||||
"-lmeshoptimizer",
|
||||
"-lviewer",
|
||||
"-lcivetweb",
|
||||
"-luberzlib",
|
||||
"-limageio-lite",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "${SAMPLE_CODE_DISAMBIGUATOR}.google.filament.gltf-viewer";
|
||||
SAMPLE_CODE_DISAMBIGUATOR = "${DEVELOPMENT_TEAM}";
|
||||
SDKROOT = iphoneos;
|
||||
|
||||
@@ -17,16 +17,24 @@ targets:
|
||||
optional: true
|
||||
templates:
|
||||
- FilamentApp
|
||||
settings:
|
||||
base:
|
||||
OTHER_LDFLAGS: ["-lgltfio_core", "-luberarchive", "-limage", "-lstb", "-lbasis_transcoder",
|
||||
"-lzstd", "-lcamutils", "-ldracodec", "-lmeshoptimizer", "-lviewer", "-lcivetweb",
|
||||
"-luberzlib", "-limageio-lite"]
|
||||
dependencies:
|
||||
- framework: ../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libgltfio_core.xcframework
|
||||
- framework: ../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libuberarchive.xcframework
|
||||
- framework: ../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libimage.xcframework
|
||||
- framework: ../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libstb.xcframework
|
||||
- framework: ../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libbasis_transcoder.xcframework
|
||||
- framework: ../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libcamutils.xcframework
|
||||
- framework: ../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libdracodec.xcframework
|
||||
- framework: ../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libmeshoptimizer.xcframework
|
||||
- framework: ../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libviewer.xcframework
|
||||
- framework: ../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libcivetweb.xcframework
|
||||
- framework: ../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libuberzlib.xcframework
|
||||
- framework: ../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libimageio-lite.xcframework
|
||||
preBuildScripts:
|
||||
- path: build-resources.sh
|
||||
name: Build Resources
|
||||
inputFiles:
|
||||
- $(SRCROOT)/../../../third_party/environments/lightroom_14b.hdr
|
||||
- ../../../third_party/environments/lightroom_14b.hdr
|
||||
outputFiles:
|
||||
- $(SRCROOT)/generated/default_env/default_env_ibl.ktx
|
||||
- $(SRCROOT)/generated/default_env/default_env_skybox.ktx
|
||||
|
||||
@@ -14,10 +14,10 @@ set -e
|
||||
|
||||
HOST_TOOLS_PATH="${HOST_TOOLS_PATH:-../../../out/release/filament/bin}"
|
||||
|
||||
filamesh_path=`find ${HOST_TOOLS_PATH} -name filamesh -type f | head -n 1`
|
||||
matc_path=`find ${HOST_TOOLS_PATH} -name matc -type f | head -n 1`
|
||||
resgen_path=`find ${HOST_TOOLS_PATH} -name resgen -type f | head -n 1`
|
||||
cmgen_path=`find ${HOST_TOOLS_PATH} -name cmgen -type f | head -n 1`
|
||||
filamesh_path=`find -L ${HOST_TOOLS_PATH} -name filamesh -type f | head -n 1`
|
||||
matc_path=`find -L ${HOST_TOOLS_PATH} -name matc -type f | head -n 1`
|
||||
resgen_path=`find -L ${HOST_TOOLS_PATH} -name resgen -type f | head -n 1`
|
||||
cmgen_path=`find -L ${HOST_TOOLS_PATH} -name cmgen -type f | head -n 1`
|
||||
|
||||
# Ensure that the required tools are present in the out/ directory.
|
||||
# These can be built by running ./build.sh -p desktop -i release at Filament's root directory.
|
||||
|
||||
@@ -3,44 +3,113 @@
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 54;
|
||||
objectVersion = 77;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
01DEF0C8AAF14D275D5E731B /* libgeometry.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = D3D6EFC9EE7349AC9F4F845A /* libgeometry.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
0704BBFECEFCE6618E4A67F7 /* libfilabridge.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 67D8E02D1AF661E4EF7CC2CD /* libfilabridge.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
072B1333A85F99F6FBA10846 /* libzstd.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = E238CF2D5E37556427C00675 /* libzstd.xcframework */; };
|
||||
091D995885B1312DA4322F31 /* libsmol-v.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0DE88103BBBE542FC5D46B1 /* libsmol-v.xcframework */; };
|
||||
11DE997161B2D3272247EE72 /* libbackend.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 9E445414106E7103104FC16C /* libbackend.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
1EFC9E499E3733CF230DAECB /* libabseil.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = DB899E40418A88883E6ED2E4 /* libabseil.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
2956D56161744254E2FFD353 /* libgeometry.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = D3D6EFC9EE7349AC9F4F845A /* libgeometry.xcframework */; };
|
||||
2B4ED44D08F36953D3D111CF /* libfilaflat.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = C9D99ABAB340140BF94D57B3 /* libfilaflat.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
4FAC85567A730FCCB7B3B6EC /* FilamentApp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CF21F54926F34F027F4FCEA4 /* FilamentApp.cpp */; };
|
||||
50F0F62A949F9DB17E1E102D /* libmeshoptimizer.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4CA1720B9D4D55AB6B8513B0 /* libmeshoptimizer.xcframework */; };
|
||||
5432120E716355C4A519ABC6 /* FilamentArViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = AA47852B486CBD549FA68729 /* FilamentArViewController.mm */; };
|
||||
5FEA2EC1B8A6FECCACA5FAFA /* libutils.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 644F36437FC03CCC25AC6EFC /* libutils.xcframework */; };
|
||||
66754FE8EF26B5335C0CC9FF /* FullScreenTriangle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 05D9AFA7CFC6498FE2A8C6A5 /* FullScreenTriangle.cpp */; };
|
||||
6D2DAB291A29345E5179ECD8 /* libfilament.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 87261693EC970989615C5AE7 /* libfilament.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
6DF5D6B097AC3C124C576DD1 /* libfilabridge.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 67D8E02D1AF661E4EF7CC2CD /* libfilabridge.xcframework */; };
|
||||
819CEF9004BAA1BD59EB3ADE /* libktxreader.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = A8E5A38F197D487277FDED20 /* libktxreader.xcframework */; };
|
||||
84AC34B44E1AEE96BA8C53B0 /* libimage.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 586F9BE85A436EBA56181848 /* libimage.xcframework */; };
|
||||
85C9CA885D3E9BA87AEA24E8 /* libsmol-v.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = D0DE88103BBBE542FC5D46B1 /* libsmol-v.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
89E16D259F951AA787C3B265 /* libutils.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 644F36437FC03CCC25AC6EFC /* libutils.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
9718E9B12B1D353DF9E66311 /* libibl.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = D6422176EDC22262D20C51A8 /* libibl.xcframework */; };
|
||||
99BD70EFF08A1419FE539A44 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = AE684A73135705C4EDAA7C53 /* Assets.xcassets */; };
|
||||
ACF87F0F3989EF583E90E499 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = B6B92BD0FA8E6F9CFEAE1707 /* main.m */; };
|
||||
AE4035E76423745AFC8CEB58 /* libfilameshio.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 16ED3BF9A0D7194CECB86D55 /* libfilameshio.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
AEEFE325E8BDB00E30FDEC93 /* Resources.S in Sources */ = {isa = PBXBuildFile; fileRef = DD0010D60097DEAA82DAA089 /* Resources.S */; };
|
||||
B28ED2F81785F13E0B9A3607 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = EC652AC3D2C91759215320C3 /* AppDelegate.m */; };
|
||||
B48D41A39CF5F4FDE5CF6770 /* libfilameshio.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 16ED3BF9A0D7194CECB86D55 /* libfilameshio.xcframework */; };
|
||||
B604AB5F246840D2CCF4762B /* libfilaflat.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = C9D99ABAB340140BF94D57B3 /* libfilaflat.xcframework */; };
|
||||
B8934FC46557424E705A2154 /* ARKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 33B2CBA1A0F654632B39A45D /* ARKit.framework */; };
|
||||
BC6AAB72CD468EF04F684014 /* libabseil.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = DB899E40418A88883E6ED2E4 /* libabseil.xcframework */; };
|
||||
CB7C1B8F335B873B77D15934 /* libmeshoptimizer.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 4CA1720B9D4D55AB6B8513B0 /* libmeshoptimizer.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
CBBBF68C2F58FF0F4FA81008 /* libimage.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 586F9BE85A436EBA56181848 /* libimage.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
CE6AB7B76D5EB580EFD90897 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = AFCB91D87494B7FC879A7A5E /* Main.storyboard */; };
|
||||
CFCD1B57C3CDFA2AC3525EF6 /* libfilament.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 87261693EC970989615C5AE7 /* libfilament.xcframework */; };
|
||||
D56834764BC4D127736878DF /* libbackend.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9E445414106E7103104FC16C /* libbackend.xcframework */; };
|
||||
DD6C337BAEC527FA0F5DB4A3 /* libibl.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = D6422176EDC22262D20C51A8 /* libibl.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
DEF78081F52F6A776242A599 /* FilamentView.m in Sources */ = {isa = PBXBuildFile; fileRef = 53D025A0625708CC50AEA0DB /* FilamentView.m */; };
|
||||
E4C06B048BFA075CD9FB73AD /* libktxreader.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = A8E5A38F197D487277FDED20 /* libktxreader.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
E92B00016D52070448DA66F6 /* libzstd.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = E238CF2D5E37556427C00675 /* libzstd.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
F933D6701B0A0E90381E8030 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = C88A8BDFC06D144D80EC052B /* LaunchScreen.storyboard */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXCopyFilesBuildPhase section */
|
||||
AA70CE1AA47836D72F588764 /* Embed Frameworks */ = {
|
||||
isa = PBXCopyFilesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
dstPath = "";
|
||||
dstSubfolderSpec = 10;
|
||||
files = (
|
||||
6D2DAB291A29345E5179ECD8 /* libfilament.xcframework in Embed Frameworks */,
|
||||
11DE997161B2D3272247EE72 /* libbackend.xcframework in Embed Frameworks */,
|
||||
2B4ED44D08F36953D3D111CF /* libfilaflat.xcframework in Embed Frameworks */,
|
||||
E4C06B048BFA075CD9FB73AD /* libktxreader.xcframework in Embed Frameworks */,
|
||||
0704BBFECEFCE6618E4A67F7 /* libfilabridge.xcframework in Embed Frameworks */,
|
||||
89E16D259F951AA787C3B265 /* libutils.xcframework in Embed Frameworks */,
|
||||
85C9CA885D3E9BA87AEA24E8 /* libsmol-v.xcframework in Embed Frameworks */,
|
||||
01DEF0C8AAF14D275D5E731B /* libgeometry.xcframework in Embed Frameworks */,
|
||||
DD6C337BAEC527FA0F5DB4A3 /* libibl.xcframework in Embed Frameworks */,
|
||||
1EFC9E499E3733CF230DAECB /* libabseil.xcframework in Embed Frameworks */,
|
||||
E92B00016D52070448DA66F6 /* libzstd.xcframework in Embed Frameworks */,
|
||||
AE4035E76423745AFC8CEB58 /* libfilameshio.xcframework in Embed Frameworks */,
|
||||
CB7C1B8F335B873B77D15934 /* libmeshoptimizer.xcframework in Embed Frameworks */,
|
||||
CBBBF68C2F58FF0F4FA81008 /* libimage.xcframework in Embed Frameworks */,
|
||||
);
|
||||
name = "Embed Frameworks";
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXCopyFilesBuildPhase section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
05D9AFA7CFC6498FE2A8C6A5 /* FullScreenTriangle.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = FullScreenTriangle.cpp; sourceTree = "<group>"; };
|
||||
16ED3BF9A0D7194CECB86D55 /* libfilameshio.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libfilameshio.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libfilameshio.xcframework"; sourceTree = "<group>"; };
|
||||
2AFEFBF6FE91628599F70817 /* clear_coat.mat */ = {isa = PBXFileReference; path = clear_coat.mat; sourceTree = "<group>"; };
|
||||
2AFF66F1228C5F1079042FE2 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
|
||||
33B2CBA1A0F654632B39A45D /* ARKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ARKit.framework; path = System/Library/Frameworks/ARKit.framework; sourceTree = SDKROOT; };
|
||||
4CA1720B9D4D55AB6B8513B0 /* libmeshoptimizer.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libmeshoptimizer.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libmeshoptimizer.xcframework"; sourceTree = "<group>"; };
|
||||
4F8E6B508F8C5DE284DA2E34 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
|
||||
53D025A0625708CC50AEA0DB /* FilamentView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FilamentView.m; sourceTree = "<group>"; };
|
||||
586F9BE85A436EBA56181848 /* libimage.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libimage.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libimage.xcframework"; sourceTree = "<group>"; };
|
||||
5B5D3E611DCDD9CD2C13B825 /* FilamentApp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FilamentApp.h; sourceTree = "<group>"; };
|
||||
644F36437FC03CCC25AC6EFC /* libutils.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libutils.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libutils.xcframework"; sourceTree = "<group>"; };
|
||||
67D8E02D1AF661E4EF7CC2CD /* libfilabridge.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libfilabridge.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libfilabridge.xcframework"; sourceTree = "<group>"; };
|
||||
6938BE21CFB8BEB2422BD490 /* FilamentArViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FilamentArViewController.h; sourceTree = "<group>"; };
|
||||
7C5E322BA97EEB4FB7EC030F /* camera_feed.mat */ = {isa = PBXFileReference; path = camera_feed.mat; sourceTree = "<group>"; };
|
||||
87261693EC970989615C5AE7 /* libfilament.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libfilament.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libfilament.xcframework"; sourceTree = "<group>"; };
|
||||
8832D93E678057F9940A226D /* shadow_plane.mat */ = {isa = PBXFileReference; path = shadow_plane.mat; sourceTree = "<group>"; };
|
||||
973EB840E804440B2AA0F93A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
|
||||
9E445414106E7103104FC16C /* libbackend.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libbackend.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libbackend.xcframework"; sourceTree = "<group>"; };
|
||||
A85B9D53F72DEE0374F8EBDF /* FullScreenTriangle.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FullScreenTriangle.h; sourceTree = "<group>"; };
|
||||
A8E5A38F197D487277FDED20 /* libktxreader.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libktxreader.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libktxreader.xcframework"; sourceTree = "<group>"; };
|
||||
AA47852B486CBD549FA68729 /* FilamentArViewController.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = FilamentArViewController.mm; sourceTree = "<group>"; };
|
||||
AE684A73135705C4EDAA7C53 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
||||
AF451D7D0FAAD069F916F51C /* MathHelpers.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MathHelpers.h; sourceTree = "<group>"; };
|
||||
B6B92BD0FA8E6F9CFEAE1707 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
|
||||
C9D99ABAB340140BF94D57B3 /* libfilaflat.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libfilaflat.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libfilaflat.xcframework"; sourceTree = "<group>"; };
|
||||
CF21F54926F34F027F4FCEA4 /* FilamentApp.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = FilamentApp.cpp; sourceTree = "<group>"; };
|
||||
D0800F9FE0C390D084082637 /* FilamentView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FilamentView.h; sourceTree = "<group>"; };
|
||||
D0DE88103BBBE542FC5D46B1 /* libsmol-v.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = "libsmol-v.xcframework"; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libsmol-v.xcframework"; sourceTree = "<group>"; };
|
||||
D3D6EFC9EE7349AC9F4F845A /* libgeometry.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libgeometry.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libgeometry.xcframework"; sourceTree = "<group>"; };
|
||||
D6422176EDC22262D20C51A8 /* libibl.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libibl.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libibl.xcframework"; sourceTree = "<group>"; };
|
||||
D7BA0AA38645722DCFA3490D /* hello-ar.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = "hello-ar.app"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
DB899E40418A88883E6ED2E4 /* libabseil.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libabseil.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libabseil.xcframework"; sourceTree = "<group>"; };
|
||||
DD0010D60097DEAA82DAA089 /* Resources.S */ = {isa = PBXFileReference; path = Resources.S; sourceTree = "<group>"; };
|
||||
E238CF2D5E37556427C00675 /* libzstd.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libzstd.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libzstd.xcframework"; sourceTree = "<group>"; };
|
||||
EC652AC3D2C91759215320C3 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
|
||||
FCF16FE1B4146DE87F2B76F3 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
@@ -50,7 +119,21 @@
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
CFCD1B57C3CDFA2AC3525EF6 /* libfilament.xcframework in Frameworks */,
|
||||
D56834764BC4D127736878DF /* libbackend.xcframework in Frameworks */,
|
||||
B604AB5F246840D2CCF4762B /* libfilaflat.xcframework in Frameworks */,
|
||||
819CEF9004BAA1BD59EB3ADE /* libktxreader.xcframework in Frameworks */,
|
||||
6DF5D6B097AC3C124C576DD1 /* libfilabridge.xcframework in Frameworks */,
|
||||
5FEA2EC1B8A6FECCACA5FAFA /* libutils.xcframework in Frameworks */,
|
||||
091D995885B1312DA4322F31 /* libsmol-v.xcframework in Frameworks */,
|
||||
2956D56161744254E2FFD353 /* libgeometry.xcframework in Frameworks */,
|
||||
9718E9B12B1D353DF9E66311 /* libibl.xcframework in Frameworks */,
|
||||
BC6AAB72CD468EF04F684014 /* libabseil.xcframework in Frameworks */,
|
||||
072B1333A85F99F6FBA10846 /* libzstd.xcframework in Frameworks */,
|
||||
B8934FC46557424E705A2154 /* ARKit.framework in Frameworks */,
|
||||
B48D41A39CF5F4FDE5CF6770 /* libfilameshio.xcframework in Frameworks */,
|
||||
50F0F62A949F9DB17E1E102D /* libmeshoptimizer.xcframework in Frameworks */,
|
||||
84AC34B44E1AEE96BA8C53B0 /* libimage.xcframework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@@ -92,6 +175,20 @@
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
33B2CBA1A0F654632B39A45D /* ARKit.framework */,
|
||||
DB899E40418A88883E6ED2E4 /* libabseil.xcframework */,
|
||||
9E445414106E7103104FC16C /* libbackend.xcframework */,
|
||||
67D8E02D1AF661E4EF7CC2CD /* libfilabridge.xcframework */,
|
||||
C9D99ABAB340140BF94D57B3 /* libfilaflat.xcframework */,
|
||||
87261693EC970989615C5AE7 /* libfilament.xcframework */,
|
||||
16ED3BF9A0D7194CECB86D55 /* libfilameshio.xcframework */,
|
||||
D3D6EFC9EE7349AC9F4F845A /* libgeometry.xcframework */,
|
||||
D6422176EDC22262D20C51A8 /* libibl.xcframework */,
|
||||
586F9BE85A436EBA56181848 /* libimage.xcframework */,
|
||||
A8E5A38F197D487277FDED20 /* libktxreader.xcframework */,
|
||||
4CA1720B9D4D55AB6B8513B0 /* libmeshoptimizer.xcframework */,
|
||||
D0DE88103BBBE542FC5D46B1 /* libsmol-v.xcframework */,
|
||||
644F36437FC03CCC25AC6EFC /* libutils.xcframework */,
|
||||
E238CF2D5E37556427C00675 /* libzstd.xcframework */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
@@ -101,10 +198,10 @@
|
||||
children = (
|
||||
AE684A73135705C4EDAA7C53 /* Assets.xcassets */,
|
||||
FCF16FE1B4146DE87F2B76F3 /* Info.plist */,
|
||||
C88A8BDFC06D144D80EC052B /* LaunchScreen.storyboard */,
|
||||
B6B92BD0FA8E6F9CFEAE1707 /* main.m */,
|
||||
AFCB91D87494B7FC879A7A5E /* Main.storyboard */,
|
||||
DD0010D60097DEAA82DAA089 /* Resources.S */,
|
||||
C88A8BDFC06D144D80EC052B /* LaunchScreen.storyboard */,
|
||||
AFCB91D87494B7FC879A7A5E /* Main.storyboard */,
|
||||
);
|
||||
path = SupportFiles;
|
||||
sourceTree = "<group>";
|
||||
@@ -144,6 +241,7 @@
|
||||
A5598850636B6208AE64E95E /* Sources */,
|
||||
77189A28CB88A4753728F549 /* Resources */,
|
||||
FA9CC5F2D3E84FB632557A2E /* Frameworks */,
|
||||
AA70CE1AA47836D72F588764 /* Embed Frameworks */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
@@ -164,9 +262,10 @@
|
||||
attributes = {
|
||||
BuildIndependentTargetsInParallel = YES;
|
||||
LastUpgradeCheck = 1430;
|
||||
TargetAttributes = {
|
||||
};
|
||||
};
|
||||
buildConfigurationList = 281E763643B2F1F3B903864B /* Build configuration list for PBXProject "hello-ar" */;
|
||||
compatibilityVersion = "Xcode 14.0";
|
||||
developmentRegion = en;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
@@ -175,7 +274,8 @@
|
||||
);
|
||||
mainGroup = 316A56C698744769908E6F88;
|
||||
minimizedProjectReferenceProxies = 1;
|
||||
preferredProjectObjectVersion = 54;
|
||||
preferredProjectObjectVersion = 77;
|
||||
productRefGroup = E2EC9706948EC07E74121EF1 /* Products */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
@@ -214,7 +314,7 @@
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "#/usr/bin/env/bash\n\nset -e\n\n# Compile resources.\n\n# The hello-ar app requires four resources:\n# 1. The cube mesh\n# 2. The Filament material definition\n# 3. The Filament camera feed material definition\n# 4. The Filament shadow plane material definition\n# 5. The IBL image\n# These will be compiled into the final binary via the resgen tool.\n\nHOST_TOOLS_PATH=\"${HOST_TOOLS_PATH:-../../../out/release/filament/bin}\"\n\nfilamesh_path=`find ${HOST_TOOLS_PATH} -name filamesh -type f | head -n 1`\nmatc_path=`find ${HOST_TOOLS_PATH} -name matc -type f | head -n 1`\nresgen_path=`find ${HOST_TOOLS_PATH} -name resgen -type f | head -n 1`\ncmgen_path=`find ${HOST_TOOLS_PATH} -name cmgen -type f | head -n 1`\n\n# Ensure that the required tools are present in the out/ directory.\n# These can be built by running ./build.sh -p desktop -i release at Filament's root directory.\n\nif [[ ! -e \"${filamesh_path}\" ]]; then\n echo \"No filamesh binary could be found in ${HOST_TOOLS_PATH}.\"\n echo \"Ensure Filament has been built/installed before building this app.\"\n exit 1\nfi\n\nif [[ ! -e \"${matc_path}\" ]]; then\n echo \"No matc binary could be found in ${HOST_TOOLS_PATH}.\"\n echo \"Ensure Filament has been built/installed before building this app.\"\n exit 1\nfi\n\nif [[ ! -e \"${resgen_path}\" ]]; then\n echo \"No resgen binary could be found in ${HOST_TOOLS_PATH}.\"\n echo \"Ensure Filament has been built/installed before building this app.\"\n exit 1\nfi\n\nif [[ ! -e \"${cmgen_path}\" ]]; then\n echo \"No cmgen binary could be found in ${HOST_TOOLS_PATH}.\"\n echo \"Ensure Filament has been built/installed before building this app.\"\n exit 1\nfi\n\n# The filamesh tool converts the .obj file into a Filament-specific filamesh file that has been\n# optimized for loading into Filament.\nmkdir -p \"${PROJECT_DIR}/generated/\"\n\"${filamesh_path}\" \\\n \"${PROJECT_DIR}/../../../assets/models/rounded_cube/rounded_cube.obj\" \\\n \"${PROJECT_DIR}/generated/cube.filamesh\"\n\n# The matc tool compiles the clear_coat.mat, shadow_plane.mat, and camera_feed.mat materials into\n# Filament material BLOBs.\n\n\"${matc_path}\" \\\n --api all \\\n --platform mobile \\\n -o \"${PROJECT_DIR}/generated/clear_coat.filamat\" \\\n \"${PROJECT_DIR}/Materials/clear_coat.mat\"\n\n\"${matc_path}\" \\\n --api all \\\n --platform mobile \\\n -o \"${PROJECT_DIR}/generated/shadow_plane.filamat\" \\\n \"${PROJECT_DIR}/Materials/shadow_plane.mat\"\n\n\"${matc_path}\" \\\n --api all \\\n --platform mobile \\\n -o \"${PROJECT_DIR}/generated/camera_feed.filamat\" \\\n \"${PROJECT_DIR}/Materials/camera_feed.mat\"\n\n# cmgen consumes an HDR environment map and generates two mipmapped KTX files (IBL and skybox)\n\"${cmgen_path}\" \\\n --quiet \\\n --deploy=\"${PROJECT_DIR}/generated/venetian_crossroads_2k\" \\\n --format=ktx --size=256 \\\n \"${PROJECT_DIR}/../../../third_party/environments/venetian_crossroads_2k.hdr\"\n\n# The resgen tool generates an assembly file, resources.apple.S that gets compiled and linked\n# into the final binary. It contains all the resources consumed by the app.\n\"${resgen_path}\" \\\n --deploy=\"${PROJECT_DIR}/generated\" \\\n \"${PROJECT_DIR}/generated/cube.filamesh\" \\\n \"${PROJECT_DIR}/generated/clear_coat.filamat\" \\\n \"${PROJECT_DIR}/generated/shadow_plane.filamat\" \\\n \"${PROJECT_DIR}/generated/camera_feed.filamat\" \\\n \"${PROJECT_DIR}/generated/venetian_crossroads_2k/venetian_crossroads_2k_ibl.ktx\"\n\n# FilamentApp.cpp and Resources.S include files generated by resgen.\n# Touch them to force Xcode to recompile.\ntouch \"${PROJECT_DIR}/hello-ar/FilamentArView/FullScreenTriangle.cpp\"\ntouch \"${PROJECT_DIR}/hello-ar/FilamentArView/FilamentApp.cpp\"\ntouch \"${PROJECT_DIR}/hello-ar/SupportFiles/Resources.S\"\n";
|
||||
shellScript = "#/usr/bin/env/bash\n\nset -e\n\n# Compile resources.\n\n# The hello-ar app requires four resources:\n# 1. The cube mesh\n# 2. The Filament material definition\n# 3. The Filament camera feed material definition\n# 4. The Filament shadow plane material definition\n# 5. The IBL image\n# These will be compiled into the final binary via the resgen tool.\n\nHOST_TOOLS_PATH=\"${HOST_TOOLS_PATH:-../../../out/release/filament/bin}\"\n\nfilamesh_path=`find -L ${HOST_TOOLS_PATH} -name filamesh -type f | head -n 1`\nmatc_path=`find -L ${HOST_TOOLS_PATH} -name matc -type f | head -n 1`\nresgen_path=`find -L ${HOST_TOOLS_PATH} -name resgen -type f | head -n 1`\ncmgen_path=`find -L ${HOST_TOOLS_PATH} -name cmgen -type f | head -n 1`\n\n# Ensure that the required tools are present in the out/ directory.\n# These can be built by running ./build.sh -p desktop -i release at Filament's root directory.\n\nif [[ ! -e \"${filamesh_path}\" ]]; then\n echo \"No filamesh binary could be found in ${HOST_TOOLS_PATH}.\"\n echo \"Ensure Filament has been built/installed before building this app.\"\n exit 1\nfi\n\nif [[ ! -e \"${matc_path}\" ]]; then\n echo \"No matc binary could be found in ${HOST_TOOLS_PATH}.\"\n echo \"Ensure Filament has been built/installed before building this app.\"\n exit 1\nfi\n\nif [[ ! -e \"${resgen_path}\" ]]; then\n echo \"No resgen binary could be found in ${HOST_TOOLS_PATH}.\"\n echo \"Ensure Filament has been built/installed before building this app.\"\n exit 1\nfi\n\nif [[ ! -e \"${cmgen_path}\" ]]; then\n echo \"No cmgen binary could be found in ${HOST_TOOLS_PATH}.\"\n echo \"Ensure Filament has been built/installed before building this app.\"\n exit 1\nfi\n\n# The filamesh tool converts the .obj file into a Filament-specific filamesh file that has been\n# optimized for loading into Filament.\nmkdir -p \"${PROJECT_DIR}/generated/\"\n\"${filamesh_path}\" \\\n \"${PROJECT_DIR}/../../../assets/models/rounded_cube/rounded_cube.obj\" \\\n \"${PROJECT_DIR}/generated/cube.filamesh\"\n\n# The matc tool compiles the clear_coat.mat, shadow_plane.mat, and camera_feed.mat materials into\n# Filament material BLOBs.\n\n\"${matc_path}\" \\\n --api all \\\n --platform mobile \\\n -o \"${PROJECT_DIR}/generated/clear_coat.filamat\" \\\n \"${PROJECT_DIR}/Materials/clear_coat.mat\"\n\n\"${matc_path}\" \\\n --api all \\\n --platform mobile \\\n -o \"${PROJECT_DIR}/generated/shadow_plane.filamat\" \\\n \"${PROJECT_DIR}/Materials/shadow_plane.mat\"\n\n\"${matc_path}\" \\\n --api all \\\n --platform mobile \\\n -o \"${PROJECT_DIR}/generated/camera_feed.filamat\" \\\n \"${PROJECT_DIR}/Materials/camera_feed.mat\"\n\n# cmgen consumes an HDR environment map and generates two mipmapped KTX files (IBL and skybox)\n\"${cmgen_path}\" \\\n --quiet \\\n --deploy=\"${PROJECT_DIR}/generated/venetian_crossroads_2k\" \\\n --format=ktx --size=256 \\\n \"${PROJECT_DIR}/../../../third_party/environments/venetian_crossroads_2k.hdr\"\n\n# The resgen tool generates an assembly file, resources.apple.S that gets compiled and linked\n# into the final binary. It contains all the resources consumed by the app.\n\"${resgen_path}\" \\\n --deploy=\"${PROJECT_DIR}/generated\" \\\n \"${PROJECT_DIR}/generated/cube.filamesh\" \\\n \"${PROJECT_DIR}/generated/clear_coat.filamat\" \\\n \"${PROJECT_DIR}/generated/shadow_plane.filamat\" \\\n \"${PROJECT_DIR}/generated/camera_feed.filamat\" \\\n \"${PROJECT_DIR}/generated/venetian_crossroads_2k/venetian_crossroads_2k_ibl.ktx\"\n\n# FilamentApp.cpp and Resources.S include files generated by resgen.\n# Touch them to force Xcode to recompile.\ntouch \"${PROJECT_DIR}/hello-ar/FilamentArView/FullScreenTriangle.cpp\"\ntouch \"${PROJECT_DIR}/hello-ar/FilamentArView/FilamentApp.cpp\"\ntouch \"${PROJECT_DIR}/hello-ar/SupportFiles/Resources.S\"\n";
|
||||
};
|
||||
/* End PBXShellScriptBuildPhase section */
|
||||
|
||||
@@ -262,12 +362,17 @@
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
ENABLE_BITCODE = NO;
|
||||
FILAMENT_OUT_NAME = "ios-debug";
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"../../../out/$(FILAMENT_OUT_NAME)/filament/lib\"",
|
||||
);
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"FILAMENT_APP_USE_METAL=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"../../../out/ios-debug/filament/include",
|
||||
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
|
||||
generated,
|
||||
);
|
||||
INFOPLIST_FILE = "hello-ar/SupportFiles/Info.plist";
|
||||
@@ -276,26 +381,6 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"../../../out/ios-debug/filament/lib/$(CURRENT_ARCH)",
|
||||
"../../../out/ios-debug/filament/lib/universal",
|
||||
);
|
||||
OTHER_LDFLAGS = (
|
||||
"-lfilament",
|
||||
"-lbackend",
|
||||
"-lfilaflat",
|
||||
"-lktxreader",
|
||||
"-lfilabridge",
|
||||
"-lutils",
|
||||
"-lsmol-v",
|
||||
"-lgeometry",
|
||||
"-libl",
|
||||
"-labseil",
|
||||
"-lzstd",
|
||||
"-lfilameshio",
|
||||
"-lmeshoptimizer",
|
||||
"-limage",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "${SAMPLE_CODE_DISAMBIGUATOR}.google.filament.hello-ar";
|
||||
SAMPLE_CODE_DISAMBIGUATOR = "${DEVELOPMENT_TEAM}";
|
||||
SDKROOT = iphoneos;
|
||||
@@ -310,12 +395,17 @@
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
ENABLE_BITCODE = NO;
|
||||
FILAMENT_OUT_NAME = "ios-release";
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"../../../out/$(FILAMENT_OUT_NAME)/filament/lib\"",
|
||||
);
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"FILAMENT_APP_USE_OPENGL=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"../../../out/ios-release/filament/include",
|
||||
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
|
||||
generated,
|
||||
);
|
||||
INFOPLIST_FILE = "hello-ar/SupportFiles/Info.plist";
|
||||
@@ -324,26 +414,6 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"../../../out/ios-release/filament/lib/$(CURRENT_ARCH)",
|
||||
"../../../out/ios-release/filament/lib/universal",
|
||||
);
|
||||
OTHER_LDFLAGS = (
|
||||
"-lfilament",
|
||||
"-lbackend",
|
||||
"-lfilaflat",
|
||||
"-lktxreader",
|
||||
"-lfilabridge",
|
||||
"-lutils",
|
||||
"-lsmol-v",
|
||||
"-lgeometry",
|
||||
"-libl",
|
||||
"-labseil",
|
||||
"-lzstd",
|
||||
"-lfilameshio",
|
||||
"-lmeshoptimizer",
|
||||
"-limage",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "${SAMPLE_CODE_DISAMBIGUATOR}.google.filament.hello-ar";
|
||||
SAMPLE_CODE_DISAMBIGUATOR = "${DEVELOPMENT_TEAM}";
|
||||
SDKROOT = iphoneos;
|
||||
@@ -357,7 +427,7 @@
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
@@ -420,12 +490,17 @@
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
ENABLE_BITCODE = NO;
|
||||
FILAMENT_OUT_NAME = "ios-release";
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"../../../out/$(FILAMENT_OUT_NAME)/filament/lib\"",
|
||||
);
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"FILAMENT_APP_USE_METAL=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"../../../out/ios-release/filament/include",
|
||||
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
|
||||
generated,
|
||||
);
|
||||
INFOPLIST_FILE = "hello-ar/SupportFiles/Info.plist";
|
||||
@@ -434,26 +509,6 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"../../../out/ios-release/filament/lib/$(CURRENT_ARCH)",
|
||||
"../../../out/ios-release/filament/lib/universal",
|
||||
);
|
||||
OTHER_LDFLAGS = (
|
||||
"-lfilament",
|
||||
"-lbackend",
|
||||
"-lfilaflat",
|
||||
"-lktxreader",
|
||||
"-lfilabridge",
|
||||
"-lutils",
|
||||
"-lsmol-v",
|
||||
"-lgeometry",
|
||||
"-libl",
|
||||
"-labseil",
|
||||
"-lzstd",
|
||||
"-lfilameshio",
|
||||
"-lmeshoptimizer",
|
||||
"-limage",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "${SAMPLE_CODE_DISAMBIGUATOR}.google.filament.hello-ar";
|
||||
SAMPLE_CODE_DISAMBIGUATOR = "${DEVELOPMENT_TEAM}";
|
||||
SDKROOT = iphoneos;
|
||||
@@ -467,7 +522,7 @@
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
@@ -529,7 +584,7 @@
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
@@ -585,12 +640,17 @@
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
ENABLE_BITCODE = NO;
|
||||
FILAMENT_OUT_NAME = "ios-debug";
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"../../../out/$(FILAMENT_OUT_NAME)/filament/lib\"",
|
||||
);
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"FILAMENT_APP_USE_OPENGL=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"../../../out/ios-debug/filament/include",
|
||||
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
|
||||
generated,
|
||||
);
|
||||
INFOPLIST_FILE = "hello-ar/SupportFiles/Info.plist";
|
||||
@@ -599,26 +659,6 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"../../../out/ios-debug/filament/lib/$(CURRENT_ARCH)",
|
||||
"../../../out/ios-debug/filament/lib/universal",
|
||||
);
|
||||
OTHER_LDFLAGS = (
|
||||
"-lfilament",
|
||||
"-lbackend",
|
||||
"-lfilaflat",
|
||||
"-lktxreader",
|
||||
"-lfilabridge",
|
||||
"-lutils",
|
||||
"-lsmol-v",
|
||||
"-lgeometry",
|
||||
"-libl",
|
||||
"-labseil",
|
||||
"-lzstd",
|
||||
"-lfilameshio",
|
||||
"-lmeshoptimizer",
|
||||
"-limage",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "${SAMPLE_CODE_DISAMBIGUATOR}.google.filament.hello-ar";
|
||||
SAMPLE_CODE_DISAMBIGUATOR = "${DEVELOPMENT_TEAM}";
|
||||
SDKROOT = iphoneos;
|
||||
@@ -632,7 +672,7 @@
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
|
||||
@@ -8,9 +8,9 @@ targets:
|
||||
- FilamentApp
|
||||
dependencies:
|
||||
- sdk: ARKit.framework
|
||||
settings:
|
||||
base:
|
||||
OTHER_LDFLAGS: ["-lfilameshio", "-lmeshoptimizer", "-limage"]
|
||||
- framework: ../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libfilameshio.xcframework
|
||||
- framework: ../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libmeshoptimizer.xcframework
|
||||
- framework: ../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libimage.xcframework
|
||||
preBuildScripts:
|
||||
- path: build-resources.sh
|
||||
name: Build Resources
|
||||
|
||||
@@ -11,8 +11,8 @@ set -e
|
||||
|
||||
HOST_TOOLS_PATH="${HOST_TOOLS_PATH:-../../../out/release/filament/bin}"
|
||||
|
||||
resgen_path=`find ${HOST_TOOLS_PATH} -name resgen -type f | head -n 1`
|
||||
cmgen_path=`find ${HOST_TOOLS_PATH} -name cmgen -type f | head -n 1`
|
||||
resgen_path=`find -L ${HOST_TOOLS_PATH} -name resgen -type f | head -n 1`
|
||||
cmgen_path=`find -L ${HOST_TOOLS_PATH} -name cmgen -type f | head -n 1`
|
||||
|
||||
# Ensure that the required tools are present in the out/ directory.
|
||||
# These can be built by running ./build.sh -p desktop -i release at Filament's root directory.
|
||||
|
||||
@@ -3,44 +3,162 @@
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 54;
|
||||
objectVersion = 77;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
0023225ED0F6344A42FDF021 /* libbasis_transcoder.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 18129A9C5FC10A170625F0DF /* libbasis_transcoder.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
032FA0177E5B258A6EFC10FB /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 3F8FDA2F8F0B257A1364E302 /* Assets.xcassets */; };
|
||||
0C4676263C3C6F429DE8E1E7 /* libabseil.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2ABE8F592F84AD947269C79F /* libabseil.xcframework */; };
|
||||
12FA790CDCF4048A3B3D816B /* libuberzlib.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8AE9C8F3B16EEC02C00FC462 /* libuberzlib.xcframework */; };
|
||||
153DF9C7D86AB76EDBEB3AC4 /* libktxreader.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6E2AD103B6A164CA10779A2C /* libktxreader.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
1A4585E6153963D89D838344 /* libutils.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 51E07CB7D191EE70C8393733 /* libutils.xcframework */; };
|
||||
2101923AA53D391D871C0BCF /* libutils.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 51E07CB7D191EE70C8393733 /* libutils.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
272268CA1B14AE98DFACDD33 /* libstb.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = A40EBFD944F94426FBCEDB82 /* libstb.xcframework */; };
|
||||
3153490EB02DE914E6C7B16B /* libimage.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 481A41C1DE19D71E21CA17C0 /* libimage.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
3370EF2CC0CD0D08F69CC581 /* libmeshoptimizer.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = F9B29DDB1D323E259E5EDBE4 /* libmeshoptimizer.xcframework */; };
|
||||
357279930C4271E22C329E27 /* libbackend.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 4A955859FB96A0B4AA15C36D /* libbackend.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
372DC481D060CF95FDFA9DD7 /* libzstd.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 190D6FD76C902A52E8C71DF7 /* libzstd.xcframework */; };
|
||||
3DA39FBD408D7B6F50822939 /* FilamentViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4544E7FD3EC9BC5C5E4487B7 /* FilamentViewController.mm */; };
|
||||
415CBC815DE6A370EE6DD502 /* libfilament.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4B9CD116AEF8BD291A123F2A /* libfilament.xcframework */; };
|
||||
41E74598143C17C5C2037D67 /* libfilament.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 4B9CD116AEF8BD291A123F2A /* libfilament.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
4474017EFFC53567F2369DB8 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = FEA341C442B210CFD35E4663 /* LaunchScreen.storyboard */; };
|
||||
4F555B8114838AF666F39CD1 /* App.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF77884F45974610F79F92F /* App.cpp */; };
|
||||
53C4CFCFC54929CEDE416EC5 /* libstb.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = A40EBFD944F94426FBCEDB82 /* libstb.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
6057DA6A016889B23EE6410F /* libgeometry.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6842BC9C9A130CE658B642CB /* libgeometry.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
6535EDC4F6D3BBCA745C453F /* libsmol-v.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5E33DC0C95B9B0260504E357 /* libsmol-v.xcframework */; };
|
||||
6D84A7C1AA03C171F01A044D /* libgltfio_core.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 06B530A8294DD5CBAD41DB51 /* libgltfio_core.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
6DFCBA84E571F0C5B1683640 /* libbackend.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4A955859FB96A0B4AA15C36D /* libbackend.xcframework */; };
|
||||
7BFDB88EAFC7B8CE0B571A35 /* libdracodec.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = CC1A326E7C2E54A8F3227045 /* libdracodec.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
7FD7B7E760C10ACDA64F0890 /* libuberarchive.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0BEC8295652B68CF0854F861 /* libuberarchive.xcframework */; };
|
||||
8309D337274D6920F81FDFED /* libfilaflat.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8947E0E5B74BA8785FE2158D /* libfilaflat.xcframework */; };
|
||||
872251D9846351641FFE1EDB /* libibl.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 83035F42A448BDA20C5EC0DB /* libibl.xcframework */; };
|
||||
872990CD06765549CBE6EB85 /* libbasis_transcoder.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 18129A9C5FC10A170625F0DF /* libbasis_transcoder.xcframework */; };
|
||||
899A92E0F0148A9BAE3E7B1A /* Resources.S in Sources */ = {isa = PBXBuildFile; fileRef = B1B470F3CDEE0D4A60B11C72 /* Resources.S */; };
|
||||
8D82323C866A8429A29903A8 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = F534BD31E8FB84B3925B0402 /* AppDelegate.m */; };
|
||||
916F7A5DE5031D7523FB1FA1 /* libsmol-v.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 5E33DC0C95B9B0260504E357 /* libsmol-v.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
A38DF6C8EA6292F62E9D5F68 /* libimage.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 481A41C1DE19D71E21CA17C0 /* libimage.xcframework */; };
|
||||
A8004A31F0068178EF0557DA /* libgeometry.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6842BC9C9A130CE658B642CB /* libgeometry.xcframework */; };
|
||||
ABF42D2B7081EB39CEC1B43B /* libgltfio_core.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 06B530A8294DD5CBAD41DB51 /* libgltfio_core.xcframework */; };
|
||||
ADE1F0D02BA65C77C6B109AB /* FilamentView.m in Sources */ = {isa = PBXBuildFile; fileRef = 84D7269DBC8441140F7F8905 /* FilamentView.m */; };
|
||||
B69E7A38F3A58F7DB4002219 /* libdracodec.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = CC1A326E7C2E54A8F3227045 /* libdracodec.xcframework */; };
|
||||
B766A23145C9D58BB09CB068 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 47B161015D23D464253ABAF1 /* main.m */; };
|
||||
B9E63A561CEE77D5D0D29A0E /* libuberarchive.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 0BEC8295652B68CF0854F861 /* libuberarchive.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
BFD25191C0BF9804FF3C1B19 /* DamagedHelmet.glb in Resources */ = {isa = PBXBuildFile; fileRef = B299B19218E1CF7B2D13ABB8 /* DamagedHelmet.glb */; };
|
||||
C609C4B4BD4082A399517524 /* libfilabridge.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 9555C4935AFD98E079719C07 /* libfilabridge.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
CE0DC84646DB51D505E521E9 /* libuberzlib.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8AE9C8F3B16EEC02C00FC462 /* libuberzlib.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
CFADC7EF16411309B0CF08D8 /* libzstd.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 190D6FD76C902A52E8C71DF7 /* libzstd.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
D1174ECF9CDDC1EA7DE95840 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 59032D070D1641AA60F6CC2D /* Main.storyboard */; };
|
||||
DB90B94FBBD5F819ED9D1685 /* CameraManipulator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6238AED51F5F46CCFBE6892D /* CameraManipulator.cpp */; };
|
||||
DC96354994E844E3730CBEB7 /* libibl.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 83035F42A448BDA20C5EC0DB /* libibl.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
E9C1BC8EC1312B0CCEF66A2F /* libabseil.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 2ABE8F592F84AD947269C79F /* libabseil.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
F4022ECAAC6BEA543556B428 /* libktxreader.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6E2AD103B6A164CA10779A2C /* libktxreader.xcframework */; };
|
||||
FB7DB6BC4ADAEA3F02731E73 /* libmeshoptimizer.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = F9B29DDB1D323E259E5EDBE4 /* libmeshoptimizer.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
FBC7DAEE0262EB58EC6BADC9 /* libfilaflat.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8947E0E5B74BA8785FE2158D /* libfilaflat.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
FD9CF0E054C901D1D3E7D6B2 /* libfilabridge.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9555C4935AFD98E079719C07 /* libfilabridge.xcframework */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXCopyFilesBuildPhase section */
|
||||
D5C4D57398FACAA29F2C2549 /* Embed Frameworks */ = {
|
||||
isa = PBXCopyFilesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
dstPath = "";
|
||||
dstSubfolderSpec = 10;
|
||||
files = (
|
||||
41E74598143C17C5C2037D67 /* libfilament.xcframework in Embed Frameworks */,
|
||||
357279930C4271E22C329E27 /* libbackend.xcframework in Embed Frameworks */,
|
||||
FBC7DAEE0262EB58EC6BADC9 /* libfilaflat.xcframework in Embed Frameworks */,
|
||||
153DF9C7D86AB76EDBEB3AC4 /* libktxreader.xcframework in Embed Frameworks */,
|
||||
C609C4B4BD4082A399517524 /* libfilabridge.xcframework in Embed Frameworks */,
|
||||
2101923AA53D391D871C0BCF /* libutils.xcframework in Embed Frameworks */,
|
||||
916F7A5DE5031D7523FB1FA1 /* libsmol-v.xcframework in Embed Frameworks */,
|
||||
6057DA6A016889B23EE6410F /* libgeometry.xcframework in Embed Frameworks */,
|
||||
DC96354994E844E3730CBEB7 /* libibl.xcframework in Embed Frameworks */,
|
||||
E9C1BC8EC1312B0CCEF66A2F /* libabseil.xcframework in Embed Frameworks */,
|
||||
CFADC7EF16411309B0CF08D8 /* libzstd.xcframework in Embed Frameworks */,
|
||||
6D84A7C1AA03C171F01A044D /* libgltfio_core.xcframework in Embed Frameworks */,
|
||||
B9E63A561CEE77D5D0D29A0E /* libuberarchive.xcframework in Embed Frameworks */,
|
||||
3153490EB02DE914E6C7B16B /* libimage.xcframework in Embed Frameworks */,
|
||||
7BFDB88EAFC7B8CE0B571A35 /* libdracodec.xcframework in Embed Frameworks */,
|
||||
FB7DB6BC4ADAEA3F02731E73 /* libmeshoptimizer.xcframework in Embed Frameworks */,
|
||||
0023225ED0F6344A42FDF021 /* libbasis_transcoder.xcframework in Embed Frameworks */,
|
||||
53C4CFCFC54929CEDE416EC5 /* libstb.xcframework in Embed Frameworks */,
|
||||
CE0DC84646DB51D505E521E9 /* libuberzlib.xcframework in Embed Frameworks */,
|
||||
);
|
||||
name = "Embed Frameworks";
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXCopyFilesBuildPhase section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
06B530A8294DD5CBAD41DB51 /* libgltfio_core.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libgltfio_core.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libgltfio_core.xcframework"; sourceTree = "<group>"; };
|
||||
07D735319AF2DC69DB8981FE /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
|
||||
0AF0F63216DE40C526ABFABF /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
|
||||
0BEC8295652B68CF0854F861 /* libuberarchive.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libuberarchive.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libuberarchive.xcframework"; sourceTree = "<group>"; };
|
||||
18129A9C5FC10A170625F0DF /* libbasis_transcoder.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libbasis_transcoder.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libbasis_transcoder.xcframework"; sourceTree = "<group>"; };
|
||||
190D6FD76C902A52E8C71DF7 /* libzstd.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libzstd.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libzstd.xcframework"; sourceTree = "<group>"; };
|
||||
2ABE8F592F84AD947269C79F /* libabseil.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libabseil.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libabseil.xcframework"; sourceTree = "<group>"; };
|
||||
31A71C869E24044EA5F802D5 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
|
||||
3259514676E5E799670D0F86 /* CameraManipulator.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CameraManipulator.h; sourceTree = "<group>"; };
|
||||
3AF77884F45974610F79F92F /* App.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = App.cpp; sourceTree = "<group>"; };
|
||||
3F8FDA2F8F0B257A1364E302 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
||||
4544E7FD3EC9BC5C5E4487B7 /* FilamentViewController.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = FilamentViewController.mm; sourceTree = "<group>"; };
|
||||
47B161015D23D464253ABAF1 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
|
||||
481A41C1DE19D71E21CA17C0 /* libimage.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libimage.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libimage.xcframework"; sourceTree = "<group>"; };
|
||||
4A955859FB96A0B4AA15C36D /* libbackend.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libbackend.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libbackend.xcframework"; sourceTree = "<group>"; };
|
||||
4B9CD116AEF8BD291A123F2A /* libfilament.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libfilament.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libfilament.xcframework"; sourceTree = "<group>"; };
|
||||
51E07CB7D191EE70C8393733 /* libutils.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libutils.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libutils.xcframework"; sourceTree = "<group>"; };
|
||||
5E33DC0C95B9B0260504E357 /* libsmol-v.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = "libsmol-v.xcframework"; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libsmol-v.xcframework"; sourceTree = "<group>"; };
|
||||
6238AED51F5F46CCFBE6892D /* CameraManipulator.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CameraManipulator.cpp; sourceTree = "<group>"; };
|
||||
6842BC9C9A130CE658B642CB /* libgeometry.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libgeometry.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libgeometry.xcframework"; sourceTree = "<group>"; };
|
||||
6E2AD103B6A164CA10779A2C /* libktxreader.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libktxreader.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libktxreader.xcframework"; sourceTree = "<group>"; };
|
||||
83035F42A448BDA20C5EC0DB /* libibl.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libibl.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libibl.xcframework"; sourceTree = "<group>"; };
|
||||
84D7269DBC8441140F7F8905 /* FilamentView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FilamentView.m; sourceTree = "<group>"; };
|
||||
8947E0E5B74BA8785FE2158D /* libfilaflat.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libfilaflat.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libfilaflat.xcframework"; sourceTree = "<group>"; };
|
||||
8AE9C8F3B16EEC02C00FC462 /* libuberzlib.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libuberzlib.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libuberzlib.xcframework"; sourceTree = "<group>"; };
|
||||
9555C4935AFD98E079719C07 /* libfilabridge.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libfilabridge.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libfilabridge.xcframework"; sourceTree = "<group>"; };
|
||||
A37B936423E3B1BF1CA137E0 /* hello-gltf.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = "hello-gltf.app"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
A40EBFD944F94426FBCEDB82 /* libstb.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libstb.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libstb.xcframework"; sourceTree = "<group>"; };
|
||||
A52D063A6C24A885D52E2F79 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
|
||||
B1B470F3CDEE0D4A60B11C72 /* Resources.S */ = {isa = PBXFileReference; path = Resources.S; sourceTree = "<group>"; };
|
||||
B299B19218E1CF7B2D13ABB8 /* DamagedHelmet.glb */ = {isa = PBXFileReference; path = DamagedHelmet.glb; sourceTree = "<group>"; };
|
||||
BAEAC7786B3EA7E47855A56B /* FilamentViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FilamentViewController.h; sourceTree = "<group>"; };
|
||||
CC1A326E7C2E54A8F3227045 /* libdracodec.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libdracodec.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libdracodec.xcframework"; sourceTree = "<group>"; };
|
||||
D3A6F9906B0647549CF53196 /* FilamentView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FilamentView.h; sourceTree = "<group>"; };
|
||||
EC3FAC405D5790391F3AE4FB /* App.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = App.h; sourceTree = "<group>"; };
|
||||
F534BD31E8FB84B3925B0402 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
|
||||
F9B29DDB1D323E259E5EDBE4 /* libmeshoptimizer.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libmeshoptimizer.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libmeshoptimizer.xcframework"; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
0F4486CC8242411EE5C50136 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
415CBC815DE6A370EE6DD502 /* libfilament.xcframework in Frameworks */,
|
||||
6DFCBA84E571F0C5B1683640 /* libbackend.xcframework in Frameworks */,
|
||||
8309D337274D6920F81FDFED /* libfilaflat.xcframework in Frameworks */,
|
||||
F4022ECAAC6BEA543556B428 /* libktxreader.xcframework in Frameworks */,
|
||||
FD9CF0E054C901D1D3E7D6B2 /* libfilabridge.xcframework in Frameworks */,
|
||||
1A4585E6153963D89D838344 /* libutils.xcframework in Frameworks */,
|
||||
6535EDC4F6D3BBCA745C453F /* libsmol-v.xcframework in Frameworks */,
|
||||
A8004A31F0068178EF0557DA /* libgeometry.xcframework in Frameworks */,
|
||||
872251D9846351641FFE1EDB /* libibl.xcframework in Frameworks */,
|
||||
0C4676263C3C6F429DE8E1E7 /* libabseil.xcframework in Frameworks */,
|
||||
372DC481D060CF95FDFA9DD7 /* libzstd.xcframework in Frameworks */,
|
||||
ABF42D2B7081EB39CEC1B43B /* libgltfio_core.xcframework in Frameworks */,
|
||||
7FD7B7E760C10ACDA64F0890 /* libuberarchive.xcframework in Frameworks */,
|
||||
A38DF6C8EA6292F62E9D5F68 /* libimage.xcframework in Frameworks */,
|
||||
B69E7A38F3A58F7DB4002219 /* libdracodec.xcframework in Frameworks */,
|
||||
3370EF2CC0CD0D08F69CC581 /* libmeshoptimizer.xcframework in Frameworks */,
|
||||
872990CD06765549CBE6EB85 /* libbasis_transcoder.xcframework in Frameworks */,
|
||||
272268CA1B14AE98DFACDD33 /* libstb.xcframework in Frameworks */,
|
||||
12FA790CDCF4048A3B3D816B /* libuberzlib.xcframework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
213197BBE06FB8316C6A730F /* DamagedHelmet */ = {
|
||||
isa = PBXGroup;
|
||||
@@ -56,6 +174,7 @@
|
||||
children = (
|
||||
213197BBE06FB8316C6A730F /* DamagedHelmet */,
|
||||
A57096EADC8A05A97A275513 /* hello-gltf */,
|
||||
F6A35BB32F71E5F5DC464FCC /* Frameworks */,
|
||||
E24AFBD404D0689AD84371D6 /* Products */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
@@ -78,10 +197,10 @@
|
||||
children = (
|
||||
3F8FDA2F8F0B257A1364E302 /* Assets.xcassets */,
|
||||
A52D063A6C24A885D52E2F79 /* Info.plist */,
|
||||
FEA341C442B210CFD35E4663 /* LaunchScreen.storyboard */,
|
||||
47B161015D23D464253ABAF1 /* main.m */,
|
||||
59032D070D1641AA60F6CC2D /* Main.storyboard */,
|
||||
B1B470F3CDEE0D4A60B11C72 /* Resources.S */,
|
||||
FEA341C442B210CFD35E4663 /* LaunchScreen.storyboard */,
|
||||
59032D070D1641AA60F6CC2D /* Main.storyboard */,
|
||||
);
|
||||
path = SupportFiles;
|
||||
sourceTree = "<group>";
|
||||
@@ -107,6 +226,32 @@
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
F6A35BB32F71E5F5DC464FCC /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
2ABE8F592F84AD947269C79F /* libabseil.xcframework */,
|
||||
4A955859FB96A0B4AA15C36D /* libbackend.xcframework */,
|
||||
18129A9C5FC10A170625F0DF /* libbasis_transcoder.xcframework */,
|
||||
CC1A326E7C2E54A8F3227045 /* libdracodec.xcframework */,
|
||||
9555C4935AFD98E079719C07 /* libfilabridge.xcframework */,
|
||||
8947E0E5B74BA8785FE2158D /* libfilaflat.xcframework */,
|
||||
4B9CD116AEF8BD291A123F2A /* libfilament.xcframework */,
|
||||
6842BC9C9A130CE658B642CB /* libgeometry.xcframework */,
|
||||
06B530A8294DD5CBAD41DB51 /* libgltfio_core.xcframework */,
|
||||
83035F42A448BDA20C5EC0DB /* libibl.xcframework */,
|
||||
481A41C1DE19D71E21CA17C0 /* libimage.xcframework */,
|
||||
6E2AD103B6A164CA10779A2C /* libktxreader.xcframework */,
|
||||
F9B29DDB1D323E259E5EDBE4 /* libmeshoptimizer.xcframework */,
|
||||
5E33DC0C95B9B0260504E357 /* libsmol-v.xcframework */,
|
||||
A40EBFD944F94426FBCEDB82 /* libstb.xcframework */,
|
||||
0BEC8295652B68CF0854F861 /* libuberarchive.xcframework */,
|
||||
8AE9C8F3B16EEC02C00FC462 /* libuberzlib.xcframework */,
|
||||
51E07CB7D191EE70C8393733 /* libutils.xcframework */,
|
||||
190D6FD76C902A52E8C71DF7 /* libzstd.xcframework */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
@@ -117,6 +262,8 @@
|
||||
434C630C7F01B07ABD7545B4 /* Build Resources */,
|
||||
30FFFB72D409D092136A7E09 /* Sources */,
|
||||
143100B2FF97ACD9B03A078A /* Resources */,
|
||||
0F4486CC8242411EE5C50136 /* Frameworks */,
|
||||
D5C4D57398FACAA29F2C2549 /* Embed Frameworks */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
@@ -137,9 +284,10 @@
|
||||
attributes = {
|
||||
BuildIndependentTargetsInParallel = YES;
|
||||
LastUpgradeCheck = 1430;
|
||||
TargetAttributes = {
|
||||
};
|
||||
};
|
||||
buildConfigurationList = C7514DDCFDA3C5F803E239F9 /* Build configuration list for PBXProject "hello-gltf" */;
|
||||
compatibilityVersion = "Xcode 14.0";
|
||||
developmentRegion = en;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
@@ -148,7 +296,8 @@
|
||||
);
|
||||
mainGroup = 74FBC1573C79190CC198A030;
|
||||
minimizedProjectReferenceProxies = 1;
|
||||
preferredProjectObjectVersion = 54;
|
||||
preferredProjectObjectVersion = 77;
|
||||
productRefGroup = E24AFBD404D0689AD84371D6 /* Products */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
@@ -188,7 +337,7 @@
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "#/usr/bin/env/bash\n\nset -e\n\n# Compile resources.\n\n# The hello-gltf app requires two resources:\n# 1. The IBL image\n# 2. The skybox image\n# These will be compiled into the final binary via the resgen tool.\n\nHOST_TOOLS_PATH=\"${HOST_TOOLS_PATH:-../../../out/release/filament/bin}\"\n\nresgen_path=`find ${HOST_TOOLS_PATH} -name resgen -type f | head -n 1`\ncmgen_path=`find ${HOST_TOOLS_PATH} -name cmgen -type f | head -n 1`\n\n# Ensure that the required tools are present in the out/ directory.\n# These can be built by running ./build.sh -p desktop -i release at Filament's root directory.\n\nif [[ ! -e \"${resgen_path}\" ]]; then\n echo \"No resgen binary could be found in ${HOST_TOOLS_PATH}.\"\n echo \"Ensure Filament has been built/installed before building this app.\"\n exit 1\nfi\n\nif [[ ! -e \"${cmgen_path}\" ]]; then\n echo \"No cmgen binary could be found in ${HOST_TOOLS_PATH}.\"\n echo \"Ensure Filament has been built/installed before building this app.\"\n exit 1\nfi\n\n# cmgen consumes an HDR environment map and generates two mipmapped KTX files (IBL and skybox)\n\"${cmgen_path}\" \\\n --quiet \\\n --deploy=\"${PROJECT_DIR}/generated/venetian_crossroads_2k\" \\\n --format=ktx --size=256 --extract-blur=0.1 \\\n \"${PROJECT_DIR}/../../../third_party/environments/venetian_crossroads_2k.hdr\"\n\n# The resgen tool generates an assembly file, resources.apple.S that gets compiled and linked\n# into the final binary. It contains all the resources consumed by the app.\n\"${resgen_path}\" \\\n --deploy=\"${PROJECT_DIR}/generated\" \\\n \"${PROJECT_DIR}/generated/venetian_crossroads_2k/venetian_crossroads_2k_skybox.ktx\" \\\n \"${PROJECT_DIR}/generated/venetian_crossroads_2k/venetian_crossroads_2k_ibl.ktx\"\n\n# App.cpp and Resources.S include files generated by resgen.\n# Touch them to force Xcode to recompile.\ntouch \"${PROJECT_DIR}/hello-gltf/FilamentView/App.cpp\"\ntouch \"${PROJECT_DIR}/hello-gltf/SupportFiles/Resources.S\"\n";
|
||||
shellScript = "#/usr/bin/env/bash\n\nset -e\n\n# Compile resources.\n\n# The hello-gltf app requires two resources:\n# 1. The IBL image\n# 2. The skybox image\n# These will be compiled into the final binary via the resgen tool.\n\nHOST_TOOLS_PATH=\"${HOST_TOOLS_PATH:-../../../out/release/filament/bin}\"\n\nresgen_path=`find -L ${HOST_TOOLS_PATH} -name resgen -type f | head -n 1`\ncmgen_path=`find -L ${HOST_TOOLS_PATH} -name cmgen -type f | head -n 1`\n\n# Ensure that the required tools are present in the out/ directory.\n# These can be built by running ./build.sh -p desktop -i release at Filament's root directory.\n\nif [[ ! -e \"${resgen_path}\" ]]; then\n echo \"No resgen binary could be found in ${HOST_TOOLS_PATH}.\"\n echo \"Ensure Filament has been built/installed before building this app.\"\n exit 1\nfi\n\nif [[ ! -e \"${cmgen_path}\" ]]; then\n echo \"No cmgen binary could be found in ${HOST_TOOLS_PATH}.\"\n echo \"Ensure Filament has been built/installed before building this app.\"\n exit 1\nfi\n\n# cmgen consumes an HDR environment map and generates two mipmapped KTX files (IBL and skybox)\n\"${cmgen_path}\" \\\n --quiet \\\n --deploy=\"${PROJECT_DIR}/generated/venetian_crossroads_2k\" \\\n --format=ktx --size=256 --extract-blur=0.1 \\\n \"${PROJECT_DIR}/../../../third_party/environments/venetian_crossroads_2k.hdr\"\n\n# The resgen tool generates an assembly file, resources.apple.S that gets compiled and linked\n# into the final binary. It contains all the resources consumed by the app.\n\"${resgen_path}\" \\\n --deploy=\"${PROJECT_DIR}/generated\" \\\n \"${PROJECT_DIR}/generated/venetian_crossroads_2k/venetian_crossroads_2k_skybox.ktx\" \\\n \"${PROJECT_DIR}/generated/venetian_crossroads_2k/venetian_crossroads_2k_ibl.ktx\"\n\n# App.cpp and Resources.S include files generated by resgen.\n# Touch them to force Xcode to recompile.\ntouch \"${PROJECT_DIR}/hello-gltf/FilamentView/App.cpp\"\ntouch \"${PROJECT_DIR}/hello-gltf/SupportFiles/Resources.S\"\n";
|
||||
};
|
||||
/* End PBXShellScriptBuildPhase section */
|
||||
|
||||
@@ -235,7 +384,7 @@
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
@@ -298,12 +447,17 @@
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
ENABLE_BITCODE = NO;
|
||||
FILAMENT_OUT_NAME = "ios-release";
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"../../../out/$(FILAMENT_OUT_NAME)/filament/lib\"",
|
||||
);
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"FILAMENT_APP_USE_OPENGL=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"../../../out/ios-release/filament/include",
|
||||
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
|
||||
generated,
|
||||
);
|
||||
INFOPLIST_FILE = "hello-gltf/SupportFiles/Info.plist";
|
||||
@@ -312,32 +466,6 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"../../../out/ios-release/filament/lib/$(CURRENT_ARCH)",
|
||||
"../../../out/ios-release/filament/lib/universal",
|
||||
);
|
||||
OTHER_LDFLAGS = (
|
||||
"-lfilament",
|
||||
"-lbackend",
|
||||
"-lfilaflat",
|
||||
"-lktxreader",
|
||||
"-lfilabridge",
|
||||
"-lutils",
|
||||
"-lsmol-v",
|
||||
"-lgeometry",
|
||||
"-libl",
|
||||
"-labseil",
|
||||
"-lzstd",
|
||||
"-lgltfio_core",
|
||||
"-luberarchive",
|
||||
"-limage",
|
||||
"-ldracodec",
|
||||
"-lmeshoptimizer",
|
||||
"-lbasis_transcoder",
|
||||
"-lstb",
|
||||
"-lzstd",
|
||||
"-luberzlib",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "${SAMPLE_CODE_DISAMBIGUATOR}.google.filament.hello-gltf";
|
||||
SAMPLE_CODE_DISAMBIGUATOR = "${DEVELOPMENT_TEAM}";
|
||||
SDKROOT = iphoneos;
|
||||
@@ -352,12 +480,17 @@
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
ENABLE_BITCODE = NO;
|
||||
FILAMENT_OUT_NAME = "ios-debug";
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"../../../out/$(FILAMENT_OUT_NAME)/filament/lib\"",
|
||||
);
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"FILAMENT_APP_USE_OPENGL=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"../../../out/ios-debug/filament/include",
|
||||
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
|
||||
generated,
|
||||
);
|
||||
INFOPLIST_FILE = "hello-gltf/SupportFiles/Info.plist";
|
||||
@@ -366,32 +499,6 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"../../../out/ios-debug/filament/lib/$(CURRENT_ARCH)",
|
||||
"../../../out/ios-debug/filament/lib/universal",
|
||||
);
|
||||
OTHER_LDFLAGS = (
|
||||
"-lfilament",
|
||||
"-lbackend",
|
||||
"-lfilaflat",
|
||||
"-lktxreader",
|
||||
"-lfilabridge",
|
||||
"-lutils",
|
||||
"-lsmol-v",
|
||||
"-lgeometry",
|
||||
"-libl",
|
||||
"-labseil",
|
||||
"-lzstd",
|
||||
"-lgltfio_core",
|
||||
"-luberarchive",
|
||||
"-limage",
|
||||
"-ldracodec",
|
||||
"-lmeshoptimizer",
|
||||
"-lbasis_transcoder",
|
||||
"-lstb",
|
||||
"-lzstd",
|
||||
"-luberzlib",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "${SAMPLE_CODE_DISAMBIGUATOR}.google.filament.hello-gltf";
|
||||
SAMPLE_CODE_DISAMBIGUATOR = "${DEVELOPMENT_TEAM}";
|
||||
SDKROOT = iphoneos;
|
||||
@@ -405,7 +512,7 @@
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
@@ -467,7 +574,7 @@
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
@@ -522,7 +629,7 @@
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
@@ -578,12 +685,17 @@
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
ENABLE_BITCODE = NO;
|
||||
FILAMENT_OUT_NAME = "ios-release";
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"../../../out/$(FILAMENT_OUT_NAME)/filament/lib\"",
|
||||
);
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"FILAMENT_APP_USE_METAL=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"../../../out/ios-release/filament/include",
|
||||
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
|
||||
generated,
|
||||
);
|
||||
INFOPLIST_FILE = "hello-gltf/SupportFiles/Info.plist";
|
||||
@@ -592,32 +704,6 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"../../../out/ios-release/filament/lib/$(CURRENT_ARCH)",
|
||||
"../../../out/ios-release/filament/lib/universal",
|
||||
);
|
||||
OTHER_LDFLAGS = (
|
||||
"-lfilament",
|
||||
"-lbackend",
|
||||
"-lfilaflat",
|
||||
"-lktxreader",
|
||||
"-lfilabridge",
|
||||
"-lutils",
|
||||
"-lsmol-v",
|
||||
"-lgeometry",
|
||||
"-libl",
|
||||
"-labseil",
|
||||
"-lzstd",
|
||||
"-lgltfio_core",
|
||||
"-luberarchive",
|
||||
"-limage",
|
||||
"-ldracodec",
|
||||
"-lmeshoptimizer",
|
||||
"-lbasis_transcoder",
|
||||
"-lstb",
|
||||
"-lzstd",
|
||||
"-luberzlib",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "${SAMPLE_CODE_DISAMBIGUATOR}.google.filament.hello-gltf";
|
||||
SAMPLE_CODE_DISAMBIGUATOR = "${DEVELOPMENT_TEAM}";
|
||||
SDKROOT = iphoneos;
|
||||
@@ -632,12 +718,17 @@
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
ENABLE_BITCODE = NO;
|
||||
FILAMENT_OUT_NAME = "ios-debug";
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"../../../out/$(FILAMENT_OUT_NAME)/filament/lib\"",
|
||||
);
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"FILAMENT_APP_USE_METAL=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"../../../out/ios-debug/filament/include",
|
||||
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
|
||||
generated,
|
||||
);
|
||||
INFOPLIST_FILE = "hello-gltf/SupportFiles/Info.plist";
|
||||
@@ -646,32 +737,6 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"../../../out/ios-debug/filament/lib/$(CURRENT_ARCH)",
|
||||
"../../../out/ios-debug/filament/lib/universal",
|
||||
);
|
||||
OTHER_LDFLAGS = (
|
||||
"-lfilament",
|
||||
"-lbackend",
|
||||
"-lfilaflat",
|
||||
"-lktxreader",
|
||||
"-lfilabridge",
|
||||
"-lutils",
|
||||
"-lsmol-v",
|
||||
"-lgeometry",
|
||||
"-libl",
|
||||
"-labseil",
|
||||
"-lzstd",
|
||||
"-lgltfio_core",
|
||||
"-luberarchive",
|
||||
"-limage",
|
||||
"-ldracodec",
|
||||
"-lmeshoptimizer",
|
||||
"-lbasis_transcoder",
|
||||
"-lstb",
|
||||
"-lzstd",
|
||||
"-luberzlib",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "${SAMPLE_CODE_DISAMBIGUATOR}.google.filament.hello-gltf";
|
||||
SAMPLE_CODE_DISAMBIGUATOR = "${DEVELOPMENT_TEAM}";
|
||||
SDKROOT = iphoneos;
|
||||
|
||||
@@ -10,10 +10,15 @@ targets:
|
||||
buildPhase: resources
|
||||
templates:
|
||||
- FilamentApp
|
||||
settings:
|
||||
base:
|
||||
OTHER_LDFLAGS: ["-lgltfio_core", "-luberarchive", "-limage", "-ldracodec", "-lmeshoptimizer",
|
||||
"-lbasis_transcoder", "-lstb", "-lzstd", "-luberzlib"]
|
||||
dependencies:
|
||||
- framework: ../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libgltfio_core.xcframework
|
||||
- framework: ../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libuberarchive.xcframework
|
||||
- framework: ../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libimage.xcframework
|
||||
- framework: ../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libdracodec.xcframework
|
||||
- framework: ../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libmeshoptimizer.xcframework
|
||||
- framework: ../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libbasis_transcoder.xcframework
|
||||
- framework: ../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libstb.xcframework
|
||||
- framework: ../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libuberzlib.xcframework
|
||||
preBuildScripts:
|
||||
- path: build-resources.sh
|
||||
name: Build Resources
|
||||
|
||||
@@ -13,10 +13,10 @@ set -e
|
||||
|
||||
HOST_TOOLS_PATH="${HOST_TOOLS_PATH:-../../../out/release/filament/bin}"
|
||||
|
||||
filamesh_path=`find ${HOST_TOOLS_PATH} -name filamesh -type f | head -n 1`
|
||||
matc_path=`find ${HOST_TOOLS_PATH} -name matc -type f | head -n 1`
|
||||
resgen_path=`find ${HOST_TOOLS_PATH} -name resgen -type f | head -n 1`
|
||||
cmgen_path=`find ${HOST_TOOLS_PATH} -name cmgen -type f | head -n 1`
|
||||
filamesh_path=`find -L ${HOST_TOOLS_PATH} -name filamesh -type f | head -n 1`
|
||||
matc_path=`find -L ${HOST_TOOLS_PATH} -name matc -type f | head -n 1`
|
||||
resgen_path=`find -L ${HOST_TOOLS_PATH} -name resgen -type f | head -n 1`
|
||||
cmgen_path=`find -L ${HOST_TOOLS_PATH} -name cmgen -type f | head -n 1`
|
||||
|
||||
# Ensure that the required tools are present in the out/ directory.
|
||||
# These can be built by running ./build.sh -p desktop -i release at Filament's root directory.
|
||||
|
||||
@@ -3,43 +3,136 @@
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 54;
|
||||
objectVersion = 77;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
06156526AD22EF2AD34A6E63 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = A17327655C031D575A522AD1 /* main.m */; };
|
||||
0B2B31A41B31D3D9592809BE /* libzstd.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = A1DC71CABF5B4C9A99EA62D8 /* libzstd.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
1F86261681826B617D56A65A /* libutils.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = A9FD2FF109F8EDD63D2DAB37 /* libutils.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
253D85057959A92D9C3FF638 /* libfilabridge.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE951DB3A83CC5BD589751BC /* libfilabridge.xcframework */; };
|
||||
29861FFCDF2A0BCF3C5C35E2 /* libmeshoptimizer.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6BBA4C3095CCF35600F500B8 /* libmeshoptimizer.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
3386B37A2A36AAE2D1A7EEA3 /* libfilameshio.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3DAD80BE7693C1D70E06675 /* libfilameshio.xcframework */; };
|
||||
3CE3011F1556DF145D8D5641 /* libfilameshio.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = B3DAD80BE7693C1D70E06675 /* libfilameshio.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
3D7229A87468A795596F67E5 /* libutils.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = A9FD2FF109F8EDD63D2DAB37 /* libutils.xcframework */; };
|
||||
3F24E10B5F119498FEC839BD /* libimage.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = FB7CEED84501DA291C801893 /* libimage.xcframework */; };
|
||||
47C387BD3672FED21E46A5CB /* libibl.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 37522F0B15C029FD4127180C /* libibl.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
4E2366C19FC594E529713AFD /* libgeometry.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = C379E4CC0D2A41B53A494804 /* libgeometry.xcframework */; };
|
||||
4E4E761A4D37F2479672E9CB /* libibl.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 37522F0B15C029FD4127180C /* libibl.xcframework */; };
|
||||
4F76C2B304B91E3396FB9BE0 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 43FDC2D4E6776749006FF5E8 /* Main.storyboard */; };
|
||||
5507E62B8924EAD813F76A12 /* libktxreader.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = D2E61F2554690ADAD89442FA /* libktxreader.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
612E11B0F5513B4426B753E3 /* libfilament.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 35C7020A906FD87045CA9188 /* libfilament.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
774BE86075C3087EE3E973F2 /* libzstd.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = A1DC71CABF5B4C9A99EA62D8 /* libzstd.xcframework */; };
|
||||
7C7FE778A73B60FEF2A3E87B /* libsmol-v.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 503D2F0E98B22FD99D9C4B32 /* libsmol-v.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
7FADC9D9565BFFBE23EE2B19 /* libabseil.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3FC6071B5A7CDAE7AC8F9F6A /* libabseil.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
80797782FC992AB6AC57F689 /* libsmol-v.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 503D2F0E98B22FD99D9C4B32 /* libsmol-v.xcframework */; };
|
||||
909A5210FF76323C0162AC03 /* libbackend.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE479671EAC6847969DCCA35 /* libbackend.xcframework */; };
|
||||
9ADC886BBE230370776B1CF3 /* libktxreader.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = D2E61F2554690ADAD89442FA /* libktxreader.xcframework */; };
|
||||
9F723250641BA99F8DAFEDFB /* libimage.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = FB7CEED84501DA291C801893 /* libimage.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
9FB8B786881C0C4C0CFBC55D /* libabseil.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3FC6071B5A7CDAE7AC8F9F6A /* libabseil.xcframework */; };
|
||||
A702E1AB94B19F53E55A946B /* CameraManipulator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D57C53C47A84D05D23B65278 /* CameraManipulator.cpp */; };
|
||||
B127450573BCB07E794547F3 /* FilamentView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 42B9073CE652C53E7F0A4602 /* FilamentView.mm */; };
|
||||
BD8BEB81AFF4F10D2CC14D3D /* libmeshoptimizer.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6BBA4C3095CCF35600F500B8 /* libmeshoptimizer.xcframework */; };
|
||||
CD584D8F302B74996AB93340 /* libfilaflat.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA4939E8DA8B4093E147961B /* libfilaflat.xcframework */; };
|
||||
CEA57549E5C487794BD5351D /* libgeometry.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = C379E4CC0D2A41B53A494804 /* libgeometry.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
D15F2C7D58D8FC89CE6116E1 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 1CAE8879115ECEC53FA0F052 /* Assets.xcassets */; };
|
||||
D66BEC047A004E63BD105F94 /* libfilaflat.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = DA4939E8DA8B4093E147961B /* libfilaflat.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
D760F404EE39FF9CA3DB15EF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 45C71AD43B55E58E07243647 /* LaunchScreen.storyboard */; };
|
||||
DD28C38B1BA7DC985D18010F /* libbackend.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = CE479671EAC6847969DCCA35 /* libbackend.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
E6438E524A7CA8B4ADCD6BB8 /* libfilabridge.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = CE951DB3A83CC5BD589751BC /* libfilabridge.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
F036B4FF12A2B4005547C01F /* FilamentApp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F01D34676A81F3F367B9F6AF /* FilamentApp.cpp */; };
|
||||
F7A5CF35639D0528CCD03908 /* Resources.S in Sources */ = {isa = PBXBuildFile; fileRef = AC02B019CB36611A7BCE5773 /* Resources.S */; };
|
||||
FAF09598FE02F9B10459EB34 /* libfilament.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 35C7020A906FD87045CA9188 /* libfilament.xcframework */; };
|
||||
FCEE5B4DF0074DCD841DFF12 /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = DACB12BFCAAA3222E7D1E9BB /* ViewController.m */; };
|
||||
FEA410A98CE28689BEF2251F /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 7FE9A0CE98FB055F3478E1CC /* AppDelegate.m */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXCopyFilesBuildPhase section */
|
||||
8E3DFDFC69EBD646F294582B /* Embed Frameworks */ = {
|
||||
isa = PBXCopyFilesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
dstPath = "";
|
||||
dstSubfolderSpec = 10;
|
||||
files = (
|
||||
612E11B0F5513B4426B753E3 /* libfilament.xcframework in Embed Frameworks */,
|
||||
DD28C38B1BA7DC985D18010F /* libbackend.xcframework in Embed Frameworks */,
|
||||
D66BEC047A004E63BD105F94 /* libfilaflat.xcframework in Embed Frameworks */,
|
||||
5507E62B8924EAD813F76A12 /* libktxreader.xcframework in Embed Frameworks */,
|
||||
E6438E524A7CA8B4ADCD6BB8 /* libfilabridge.xcframework in Embed Frameworks */,
|
||||
1F86261681826B617D56A65A /* libutils.xcframework in Embed Frameworks */,
|
||||
7C7FE778A73B60FEF2A3E87B /* libsmol-v.xcframework in Embed Frameworks */,
|
||||
CEA57549E5C487794BD5351D /* libgeometry.xcframework in Embed Frameworks */,
|
||||
47C387BD3672FED21E46A5CB /* libibl.xcframework in Embed Frameworks */,
|
||||
7FADC9D9565BFFBE23EE2B19 /* libabseil.xcframework in Embed Frameworks */,
|
||||
0B2B31A41B31D3D9592809BE /* libzstd.xcframework in Embed Frameworks */,
|
||||
3CE3011F1556DF145D8D5641 /* libfilameshio.xcframework in Embed Frameworks */,
|
||||
29861FFCDF2A0BCF3C5C35E2 /* libmeshoptimizer.xcframework in Embed Frameworks */,
|
||||
9F723250641BA99F8DAFEDFB /* libimage.xcframework in Embed Frameworks */,
|
||||
);
|
||||
name = "Embed Frameworks";
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXCopyFilesBuildPhase section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
17ADA23252FA61486B05D5BA /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = "<group>"; };
|
||||
1CAE8879115ECEC53FA0F052 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
||||
35C7020A906FD87045CA9188 /* libfilament.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libfilament.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libfilament.xcframework"; sourceTree = "<group>"; };
|
||||
37522F0B15C029FD4127180C /* libibl.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libibl.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libibl.xcframework"; sourceTree = "<group>"; };
|
||||
37CB2FCA6711AE57BD4B39F7 /* hello-pbr.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = "hello-pbr.app"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
3FC6071B5A7CDAE7AC8F9F6A /* libabseil.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libabseil.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libabseil.xcframework"; sourceTree = "<group>"; };
|
||||
42B9073CE652C53E7F0A4602 /* FilamentView.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = FilamentView.mm; sourceTree = "<group>"; };
|
||||
4618C7511DE661F89B114734 /* FilamentView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FilamentView.h; sourceTree = "<group>"; };
|
||||
503D2F0E98B22FD99D9C4B32 /* libsmol-v.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = "libsmol-v.xcframework"; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libsmol-v.xcframework"; sourceTree = "<group>"; };
|
||||
6BBA4C3095CCF35600F500B8 /* libmeshoptimizer.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libmeshoptimizer.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libmeshoptimizer.xcframework"; sourceTree = "<group>"; };
|
||||
7D60AE7BAB964978FAA0C84C /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
|
||||
7FE9A0CE98FB055F3478E1CC /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
|
||||
A17327655C031D575A522AD1 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
|
||||
A1DC71CABF5B4C9A99EA62D8 /* libzstd.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libzstd.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libzstd.xcframework"; sourceTree = "<group>"; };
|
||||
A3680F594905261290AEDB79 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
|
||||
A9FD2FF109F8EDD63D2DAB37 /* libutils.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libutils.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libutils.xcframework"; sourceTree = "<group>"; };
|
||||
AC02B019CB36611A7BCE5773 /* Resources.S */ = {isa = PBXFileReference; path = Resources.S; sourceTree = "<group>"; };
|
||||
ADF252527D202BB9D53E29C8 /* clear_coat.mat */ = {isa = PBXFileReference; path = clear_coat.mat; sourceTree = "<group>"; };
|
||||
B35CDFC5B6E5142B5E57BE33 /* FilamentApp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FilamentApp.h; sourceTree = "<group>"; };
|
||||
B3DAD80BE7693C1D70E06675 /* libfilameshio.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libfilameshio.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libfilameshio.xcframework"; sourceTree = "<group>"; };
|
||||
C379E4CC0D2A41B53A494804 /* libgeometry.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libgeometry.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libgeometry.xcframework"; sourceTree = "<group>"; };
|
||||
CE479671EAC6847969DCCA35 /* libbackend.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libbackend.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libbackend.xcframework"; sourceTree = "<group>"; };
|
||||
CE951DB3A83CC5BD589751BC /* libfilabridge.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libfilabridge.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libfilabridge.xcframework"; sourceTree = "<group>"; };
|
||||
D2E61F2554690ADAD89442FA /* libktxreader.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libktxreader.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libktxreader.xcframework"; sourceTree = "<group>"; };
|
||||
D57C53C47A84D05D23B65278 /* CameraManipulator.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CameraManipulator.cpp; sourceTree = "<group>"; };
|
||||
DA4939E8DA8B4093E147961B /* libfilaflat.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libfilaflat.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libfilaflat.xcframework"; sourceTree = "<group>"; };
|
||||
DACB12BFCAAA3222E7D1E9BB /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = "<group>"; };
|
||||
E176563EAAB0B36EFA7D67FD /* CameraManipulator.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CameraManipulator.h; sourceTree = "<group>"; };
|
||||
EC2A85E8863E17F68089B198 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
|
||||
ED2321CED4601521B7D1D849 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
|
||||
F01D34676A81F3F367B9F6AF /* FilamentApp.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = FilamentApp.cpp; sourceTree = "<group>"; };
|
||||
FB7CEED84501DA291C801893 /* libimage.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libimage.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libimage.xcframework"; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
464CABCAA933FAA2A5568882 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
FAF09598FE02F9B10459EB34 /* libfilament.xcframework in Frameworks */,
|
||||
909A5210FF76323C0162AC03 /* libbackend.xcframework in Frameworks */,
|
||||
CD584D8F302B74996AB93340 /* libfilaflat.xcframework in Frameworks */,
|
||||
9ADC886BBE230370776B1CF3 /* libktxreader.xcframework in Frameworks */,
|
||||
253D85057959A92D9C3FF638 /* libfilabridge.xcframework in Frameworks */,
|
||||
3D7229A87468A795596F67E5 /* libutils.xcframework in Frameworks */,
|
||||
80797782FC992AB6AC57F689 /* libsmol-v.xcframework in Frameworks */,
|
||||
4E2366C19FC594E529713AFD /* libgeometry.xcframework in Frameworks */,
|
||||
4E4E761A4D37F2479672E9CB /* libibl.xcframework in Frameworks */,
|
||||
9FB8B786881C0C4C0CFBC55D /* libabseil.xcframework in Frameworks */,
|
||||
774BE86075C3087EE3E973F2 /* libzstd.xcframework in Frameworks */,
|
||||
3386B37A2A36AAE2D1A7EEA3 /* libfilameshio.xcframework in Frameworks */,
|
||||
BD8BEB81AFF4F10D2CC14D3D /* libmeshoptimizer.xcframework in Frameworks */,
|
||||
3F24E10B5F119498FEC839BD /* libimage.xcframework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
4A44033C70281A0FC58A64FE /* hello-pbr */ = {
|
||||
isa = PBXGroup;
|
||||
@@ -54,21 +147,43 @@
|
||||
4618C7511DE661F89B114734 /* FilamentView.h */,
|
||||
42B9073CE652C53E7F0A4602 /* FilamentView.mm */,
|
||||
EC2A85E8863E17F68089B198 /* Info.plist */,
|
||||
45C71AD43B55E58E07243647 /* LaunchScreen.storyboard */,
|
||||
A17327655C031D575A522AD1 /* main.m */,
|
||||
43FDC2D4E6776749006FF5E8 /* Main.storyboard */,
|
||||
AC02B019CB36611A7BCE5773 /* Resources.S */,
|
||||
17ADA23252FA61486B05D5BA /* ViewController.h */,
|
||||
DACB12BFCAAA3222E7D1E9BB /* ViewController.m */,
|
||||
45C71AD43B55E58E07243647 /* LaunchScreen.storyboard */,
|
||||
43FDC2D4E6776749006FF5E8 /* Main.storyboard */,
|
||||
);
|
||||
path = "hello-pbr";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
6CD8748D8B4DAD182A726DC0 /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
3FC6071B5A7CDAE7AC8F9F6A /* libabseil.xcframework */,
|
||||
CE479671EAC6847969DCCA35 /* libbackend.xcframework */,
|
||||
CE951DB3A83CC5BD589751BC /* libfilabridge.xcframework */,
|
||||
DA4939E8DA8B4093E147961B /* libfilaflat.xcframework */,
|
||||
35C7020A906FD87045CA9188 /* libfilament.xcframework */,
|
||||
B3DAD80BE7693C1D70E06675 /* libfilameshio.xcframework */,
|
||||
C379E4CC0D2A41B53A494804 /* libgeometry.xcframework */,
|
||||
37522F0B15C029FD4127180C /* libibl.xcframework */,
|
||||
FB7CEED84501DA291C801893 /* libimage.xcframework */,
|
||||
D2E61F2554690ADAD89442FA /* libktxreader.xcframework */,
|
||||
6BBA4C3095CCF35600F500B8 /* libmeshoptimizer.xcframework */,
|
||||
503D2F0E98B22FD99D9C4B32 /* libsmol-v.xcframework */,
|
||||
A9FD2FF109F8EDD63D2DAB37 /* libutils.xcframework */,
|
||||
A1DC71CABF5B4C9A99EA62D8 /* libzstd.xcframework */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
8B171658B4A1227B9CA44459 = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
4A44033C70281A0FC58A64FE /* hello-pbr */,
|
||||
D92946BE29B34E951A7E0714 /* Materials */,
|
||||
6CD8748D8B4DAD182A726DC0 /* Frameworks */,
|
||||
A90A4582D4144797492F5C08 /* Products */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
@@ -99,6 +214,8 @@
|
||||
18BC4E25ED5FC66EC7B77F97 /* Build Resources */,
|
||||
4EAE126B59B0A66AD866406A /* Sources */,
|
||||
4C132EE193B59194A5C7572B /* Resources */,
|
||||
464CABCAA933FAA2A5568882 /* Frameworks */,
|
||||
8E3DFDFC69EBD646F294582B /* Embed Frameworks */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
@@ -119,9 +236,10 @@
|
||||
attributes = {
|
||||
BuildIndependentTargetsInParallel = YES;
|
||||
LastUpgradeCheck = 1430;
|
||||
TargetAttributes = {
|
||||
};
|
||||
};
|
||||
buildConfigurationList = 0479354FB8D9A411347D91A6 /* Build configuration list for PBXProject "hello-pbr" */;
|
||||
compatibilityVersion = "Xcode 14.0";
|
||||
developmentRegion = en;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
@@ -130,7 +248,8 @@
|
||||
);
|
||||
mainGroup = 8B171658B4A1227B9CA44459;
|
||||
minimizedProjectReferenceProxies = 1;
|
||||
preferredProjectObjectVersion = 54;
|
||||
preferredProjectObjectVersion = 77;
|
||||
productRefGroup = A90A4582D4144797492F5C08 /* Products */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
@@ -169,7 +288,7 @@
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "#/usr/bin/env/bash\n\nset -e\n\n# Compile resources.\n\n# The hello-pbr app requires four resources:\n# 1. The material sphere mesh\n# 2. The Filament material definition\n# 3. The IBL image\n# 4. The skybox image\n# These will be compiled into the final binary via the resgen tool.\n\nHOST_TOOLS_PATH=\"${HOST_TOOLS_PATH:-../../../out/release/filament/bin}\"\n\nfilamesh_path=`find ${HOST_TOOLS_PATH} -name filamesh -type f | head -n 1`\nmatc_path=`find ${HOST_TOOLS_PATH} -name matc -type f | head -n 1`\nresgen_path=`find ${HOST_TOOLS_PATH} -name resgen -type f | head -n 1`\ncmgen_path=`find ${HOST_TOOLS_PATH} -name cmgen -type f | head -n 1`\n\n# Ensure that the required tools are present in the out/ directory.\n# These can be built by running ./build.sh -p desktop -i release at Filament's root directory.\n\nif [[ ! -e \"${filamesh_path}\" ]]; then\n echo \"No filamesh binary could be found in ${HOST_TOOLS_PATH}.\"\n echo \"Ensure Filament has been built/installed before building this app.\"\n exit 1\nfi\n\nif [[ ! -e \"${matc_path}\" ]]; then\n echo \"No matc binary could be found in ${HOST_TOOLS_PATH}.\"\n echo \"Ensure Filament has been built/installed before building this app.\"\n exit 1\nfi\n\nif [[ ! -e \"${resgen_path}\" ]]; then\n echo \"No resgen binary could be found in ${HOST_TOOLS_PATH}.\"\n echo \"Ensure Filament has been built/installed before building this app.\"\n exit 1\nfi\n\nif [[ ! -e \"${cmgen_path}\" ]]; then\n echo \"No cmgen binary could be found in ${HOST_TOOLS_PATH}.\"\n echo \"Ensure Filament has been built/installed before building this app.\"\n exit 1\nfi\n\n# The filamesh tool converts the .obj file into a Filament-specific filamesh file that has been\n# optimized for loading into Filament.\nmkdir -p \"${PROJECT_DIR}/generated/\"\n\"${filamesh_path}\" \\\n \"${PROJECT_DIR}/../../../assets/models/material_sphere/material_sphere.obj\" \\\n \"${PROJECT_DIR}/generated/material_sphere.filamesh\"\n\n# The matc tool compiles the clear_coat.mat material into a Filament material BLOB.\n\"${matc_path}\" \\\n --api all \\\n --platform mobile \\\n -o \"${PROJECT_DIR}/generated/clear_coat.filamat\" \\\n \"${PROJECT_DIR}/Materials/clear_coat.mat\"\n\n# cmgen consumes an HDR environment map and generates two mipmapped KTX files (IBL and skybox)\n\"${cmgen_path}\" \\\n --quiet \\\n --deploy=\"${PROJECT_DIR}/generated/venetian_crossroads_2k\" \\\n --format=ktx --size=256 --extract-blur=0.1 \\\n \"${PROJECT_DIR}/../../../third_party/environments/venetian_crossroads_2k.hdr\"\n\n# The resgen tool generates an assembly file, resources.apple.S that gets compiled and linked\n# into the final binary. It contains all the resources consumed by the app.\n\"${resgen_path}\" \\\n --deploy=\"${PROJECT_DIR}/generated\" \\\n \"${PROJECT_DIR}/generated/material_sphere.filamesh\" \\\n \"${PROJECT_DIR}/generated/clear_coat.filamat\" \\\n \"${PROJECT_DIR}/generated/venetian_crossroads_2k/venetian_crossroads_2k_ibl.ktx\" \\\n \"${PROJECT_DIR}/generated/venetian_crossroads_2k/venetian_crossroads_2k_skybox.ktx\"\n\n# FilamentApp.cpp and Resources.S include files generated by resgen.\n# Touch them to force Xcode to recompile.\ntouch \"${PROJECT_DIR}/hello-pbr/FilamentApp.cpp\"\ntouch \"${PROJECT_DIR}/hello-pbr/Resources.S\"\n";
|
||||
shellScript = "#/usr/bin/env/bash\n\nset -e\n\n# Compile resources.\n\n# The hello-pbr app requires four resources:\n# 1. The material sphere mesh\n# 2. The Filament material definition\n# 3. The IBL image\n# 4. The skybox image\n# These will be compiled into the final binary via the resgen tool.\n\nHOST_TOOLS_PATH=\"${HOST_TOOLS_PATH:-../../../out/release/filament/bin}\"\n\nfilamesh_path=`find -L ${HOST_TOOLS_PATH} -name filamesh -type f | head -n 1`\nmatc_path=`find -L ${HOST_TOOLS_PATH} -name matc -type f | head -n 1`\nresgen_path=`find -L ${HOST_TOOLS_PATH} -name resgen -type f | head -n 1`\ncmgen_path=`find -L ${HOST_TOOLS_PATH} -name cmgen -type f | head -n 1`\n\n# Ensure that the required tools are present in the out/ directory.\n# These can be built by running ./build.sh -p desktop -i release at Filament's root directory.\n\nif [[ ! -e \"${filamesh_path}\" ]]; then\n echo \"No filamesh binary could be found in ${HOST_TOOLS_PATH}.\"\n echo \"Ensure Filament has been built/installed before building this app.\"\n exit 1\nfi\n\nif [[ ! -e \"${matc_path}\" ]]; then\n echo \"No matc binary could be found in ${HOST_TOOLS_PATH}.\"\n echo \"Ensure Filament has been built/installed before building this app.\"\n exit 1\nfi\n\nif [[ ! -e \"${resgen_path}\" ]]; then\n echo \"No resgen binary could be found in ${HOST_TOOLS_PATH}.\"\n echo \"Ensure Filament has been built/installed before building this app.\"\n exit 1\nfi\n\nif [[ ! -e \"${cmgen_path}\" ]]; then\n echo \"No cmgen binary could be found in ${HOST_TOOLS_PATH}.\"\n echo \"Ensure Filament has been built/installed before building this app.\"\n exit 1\nfi\n\n# The filamesh tool converts the .obj file into a Filament-specific filamesh file that has been\n# optimized for loading into Filament.\nmkdir -p \"${PROJECT_DIR}/generated/\"\n\"${filamesh_path}\" \\\n \"${PROJECT_DIR}/../../../assets/models/material_sphere/material_sphere.obj\" \\\n \"${PROJECT_DIR}/generated/material_sphere.filamesh\"\n\n# The matc tool compiles the clear_coat.mat material into a Filament material BLOB.\n\"${matc_path}\" \\\n --api all \\\n --platform mobile \\\n -o \"${PROJECT_DIR}/generated/clear_coat.filamat\" \\\n \"${PROJECT_DIR}/Materials/clear_coat.mat\"\n\n# cmgen consumes an HDR environment map and generates two mipmapped KTX files (IBL and skybox)\n\"${cmgen_path}\" \\\n --quiet \\\n --deploy=\"${PROJECT_DIR}/generated/venetian_crossroads_2k\" \\\n --format=ktx --size=256 --extract-blur=0.1 \\\n \"${PROJECT_DIR}/../../../third_party/environments/venetian_crossroads_2k.hdr\"\n\n# The resgen tool generates an assembly file, resources.apple.S that gets compiled and linked\n# into the final binary. It contains all the resources consumed by the app.\n\"${resgen_path}\" \\\n --deploy=\"${PROJECT_DIR}/generated\" \\\n \"${PROJECT_DIR}/generated/material_sphere.filamesh\" \\\n \"${PROJECT_DIR}/generated/clear_coat.filamat\" \\\n \"${PROJECT_DIR}/generated/venetian_crossroads_2k/venetian_crossroads_2k_ibl.ktx\" \\\n \"${PROJECT_DIR}/generated/venetian_crossroads_2k/venetian_crossroads_2k_skybox.ktx\"\n\n# FilamentApp.cpp and Resources.S include files generated by resgen.\n# Touch them to force Xcode to recompile.\ntouch \"${PROJECT_DIR}/hello-pbr/FilamentApp.cpp\"\ntouch \"${PROJECT_DIR}/hello-pbr/Resources.S\"\n";
|
||||
};
|
||||
/* End PBXShellScriptBuildPhase section */
|
||||
|
||||
@@ -216,7 +335,7 @@
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
@@ -279,12 +398,17 @@
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
ENABLE_BITCODE = NO;
|
||||
FILAMENT_OUT_NAME = "ios-debug";
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"../../../out/$(FILAMENT_OUT_NAME)/filament/lib\"",
|
||||
);
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"FILAMENT_APP_USE_OPENGL=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"../../../out/ios-debug/filament/include",
|
||||
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
|
||||
generated,
|
||||
);
|
||||
INFOPLIST_FILE = "hello-pbr/Info.plist";
|
||||
@@ -293,26 +417,6 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"../../../out/ios-debug/filament/lib/$(CURRENT_ARCH)",
|
||||
"../../../out/ios-debug/filament/lib/universal",
|
||||
);
|
||||
OTHER_LDFLAGS = (
|
||||
"-lfilament",
|
||||
"-lbackend",
|
||||
"-lfilaflat",
|
||||
"-lktxreader",
|
||||
"-lfilabridge",
|
||||
"-lutils",
|
||||
"-lsmol-v",
|
||||
"-lgeometry",
|
||||
"-libl",
|
||||
"-labseil",
|
||||
"-lzstd",
|
||||
"-lfilameshio",
|
||||
"-lmeshoptimizer",
|
||||
"-limage",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "${SAMPLE_CODE_DISAMBIGUATOR}.google.filament.hello-pbr";
|
||||
SAMPLE_CODE_DISAMBIGUATOR = "${DEVELOPMENT_TEAM}";
|
||||
SDKROOT = iphoneos;
|
||||
@@ -327,12 +431,17 @@
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
ENABLE_BITCODE = NO;
|
||||
FILAMENT_OUT_NAME = "ios-release";
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"../../../out/$(FILAMENT_OUT_NAME)/filament/lib\"",
|
||||
);
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"FILAMENT_APP_USE_OPENGL=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"../../../out/ios-release/filament/include",
|
||||
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
|
||||
generated,
|
||||
);
|
||||
INFOPLIST_FILE = "hello-pbr/Info.plist";
|
||||
@@ -341,26 +450,6 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"../../../out/ios-release/filament/lib/$(CURRENT_ARCH)",
|
||||
"../../../out/ios-release/filament/lib/universal",
|
||||
);
|
||||
OTHER_LDFLAGS = (
|
||||
"-lfilament",
|
||||
"-lbackend",
|
||||
"-lfilaflat",
|
||||
"-lktxreader",
|
||||
"-lfilabridge",
|
||||
"-lutils",
|
||||
"-lsmol-v",
|
||||
"-lgeometry",
|
||||
"-libl",
|
||||
"-labseil",
|
||||
"-lzstd",
|
||||
"-lfilameshio",
|
||||
"-lmeshoptimizer",
|
||||
"-limage",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "${SAMPLE_CODE_DISAMBIGUATOR}.google.filament.hello-pbr";
|
||||
SAMPLE_CODE_DISAMBIGUATOR = "${DEVELOPMENT_TEAM}";
|
||||
SDKROOT = iphoneos;
|
||||
@@ -375,12 +464,17 @@
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
ENABLE_BITCODE = NO;
|
||||
FILAMENT_OUT_NAME = "ios-debug";
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"../../../out/$(FILAMENT_OUT_NAME)/filament/lib\"",
|
||||
);
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"FILAMENT_APP_USE_METAL=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"../../../out/ios-debug/filament/include",
|
||||
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
|
||||
generated,
|
||||
);
|
||||
INFOPLIST_FILE = "hello-pbr/Info.plist";
|
||||
@@ -389,26 +483,6 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"../../../out/ios-debug/filament/lib/$(CURRENT_ARCH)",
|
||||
"../../../out/ios-debug/filament/lib/universal",
|
||||
);
|
||||
OTHER_LDFLAGS = (
|
||||
"-lfilament",
|
||||
"-lbackend",
|
||||
"-lfilaflat",
|
||||
"-lktxreader",
|
||||
"-lfilabridge",
|
||||
"-lutils",
|
||||
"-lsmol-v",
|
||||
"-lgeometry",
|
||||
"-libl",
|
||||
"-labseil",
|
||||
"-lzstd",
|
||||
"-lfilameshio",
|
||||
"-lmeshoptimizer",
|
||||
"-limage",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "${SAMPLE_CODE_DISAMBIGUATOR}.google.filament.hello-pbr";
|
||||
SAMPLE_CODE_DISAMBIGUATOR = "${DEVELOPMENT_TEAM}";
|
||||
SDKROOT = iphoneos;
|
||||
@@ -422,7 +496,7 @@
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
@@ -477,7 +551,7 @@
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
@@ -533,12 +607,17 @@
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
ENABLE_BITCODE = NO;
|
||||
FILAMENT_OUT_NAME = "ios-release";
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"../../../out/$(FILAMENT_OUT_NAME)/filament/lib\"",
|
||||
);
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"FILAMENT_APP_USE_METAL=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"../../../out/ios-release/filament/include",
|
||||
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
|
||||
generated,
|
||||
);
|
||||
INFOPLIST_FILE = "hello-pbr/Info.plist";
|
||||
@@ -547,26 +626,6 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"../../../out/ios-release/filament/lib/$(CURRENT_ARCH)",
|
||||
"../../../out/ios-release/filament/lib/universal",
|
||||
);
|
||||
OTHER_LDFLAGS = (
|
||||
"-lfilament",
|
||||
"-lbackend",
|
||||
"-lfilaflat",
|
||||
"-lktxreader",
|
||||
"-lfilabridge",
|
||||
"-lutils",
|
||||
"-lsmol-v",
|
||||
"-lgeometry",
|
||||
"-libl",
|
||||
"-labseil",
|
||||
"-lzstd",
|
||||
"-lfilameshio",
|
||||
"-lmeshoptimizer",
|
||||
"-limage",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "${SAMPLE_CODE_DISAMBIGUATOR}.google.filament.hello-pbr";
|
||||
SAMPLE_CODE_DISAMBIGUATOR = "${DEVELOPMENT_TEAM}";
|
||||
SDKROOT = iphoneos;
|
||||
@@ -580,7 +639,7 @@
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
|
||||
@@ -6,9 +6,10 @@ targets:
|
||||
hello-pbr:
|
||||
templates:
|
||||
- FilamentApp
|
||||
settings:
|
||||
base:
|
||||
OTHER_LDFLAGS: ["-lfilameshio", "-lmeshoptimizer", "-limage"]
|
||||
dependencies:
|
||||
- framework: ../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libfilameshio.xcframework
|
||||
- framework: ../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libmeshoptimizer.xcframework
|
||||
- framework: ../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libimage.xcframework
|
||||
preBuildScripts:
|
||||
- path: build-resources.sh
|
||||
name: Build Resources
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# Compile bakedColor material.
|
||||
|
||||
HOST_TOOLS_PATH="${HOST_TOOLS_PATH:-../../../out/release/filament/bin}"
|
||||
matc_path=`find ${HOST_TOOLS_PATH} -name matc -type f | head -n 1`
|
||||
matc_path=`find -L ${HOST_TOOLS_PATH} -name matc -type f | head -n 1`
|
||||
|
||||
if [[ ! -e "${matc_path}" ]]; then
|
||||
echo "No matc binary could be found in ${HOST_TOOLS_PATH}."
|
||||
|
||||
@@ -3,35 +3,113 @@
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 54;
|
||||
objectVersion = 77;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
0A3A34EAB98A45D1D4355A52 /* libbackend.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3BA0FF5017E4FECD94CF3F2 /* libbackend.xcframework */; };
|
||||
0F0218402B9C73D7B3775497 /* libabseil.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = D0F16339A5D96AB6AAF03A4C /* libabseil.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
12A40CB70167F2609E428EC6 /* libbackend.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = F3BA0FF5017E4FECD94CF3F2 /* libbackend.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
1326DEBB610801CD041AE322 /* libibl.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = ED0BAF80B49E29533E492727 /* libibl.xcframework */; };
|
||||
291EA8BF9E335683AD324451 /* libfilabridge.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA668D9E9DC67AD1FA16422A /* libfilabridge.xcframework */; };
|
||||
2DE5F1C322D1B8288CF6F1A9 /* libgeometry.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 44224172FC58D500DEFE7A7D /* libgeometry.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
34826A3819309F25EAF82B78 /* libibl.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = ED0BAF80B49E29533E492727 /* libibl.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
371FE9F805A6B436B22EF70D /* libfilaflat.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = C4952E6805DB5E7B871DF61C /* libfilaflat.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
4715F63AF782F1A15A37EFA8 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 45FE9476D47ECFFEA65D7146 /* AppDelegate.m */; };
|
||||
4B0C2B6E7D4BF89D8EDEB84F /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2620C967534D81CFFAB5D3FF /* ViewController.m */; };
|
||||
5B76FEB9522BC17E14EF3270 /* libutils.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3604FD7E74C46AC4FAB12BFA /* libutils.xcframework */; };
|
||||
67B75B37DC3FFFE6BDD91455 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = DDE4A219AEB5B4507F51B873 /* Main.storyboard */; };
|
||||
68822E4B9059C8A1E67EF062 /* libfilament.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = E36164E9425CAABBE17EF153 /* libfilament.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
6BBD88355CE6932E706CE45C /* libzstd.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8D062C70EFE8916B7656BB4E /* libzstd.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
7A4FA872EA928DB67BBF9351 /* libfilaflat.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = C4952E6805DB5E7B871DF61C /* libfilaflat.xcframework */; };
|
||||
8897619E0912B69F232FCC88 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 524293A0A8CDE9047347EF48 /* Assets.xcassets */; };
|
||||
915E0D1FE043E873C17EB0AB /* libgeometry.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 44224172FC58D500DEFE7A7D /* libgeometry.xcframework */; };
|
||||
966626FAF79F36B16F9AE201 /* libabseil.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0F16339A5D96AB6AAF03A4C /* libabseil.xcframework */; };
|
||||
96FBF778C4E3563A7C8D3A47 /* libsmol-v.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 727785EA0395D939E6804AF4 /* libsmol-v.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
978AB6421E245452AD8D9AE0 /* libktxreader.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = AC6CC7E260B2F20D0EA171E2 /* libktxreader.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
A05C6F2172B5C29D9A056E39 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 46A2FAD3D476FDADF45F70F8 /* LaunchScreen.storyboard */; };
|
||||
AC1320F672694ABEF53EFAC8 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = E56C70616FF30C50DFA8238B /* main.m */; };
|
||||
AD9F281E6F4F05A4B98FD437 /* libutils.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3604FD7E74C46AC4FAB12BFA /* libutils.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
B156789E3EC8798928C58BD2 /* libsmol-v.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 727785EA0395D939E6804AF4 /* libsmol-v.xcframework */; };
|
||||
BED52BA49D882353BBCEA4F4 /* FilamentView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0CDCD26337640C57D07E41ED /* FilamentView.mm */; };
|
||||
CF4322AB55566F31A284739B /* libktxreader.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = AC6CC7E260B2F20D0EA171E2 /* libktxreader.xcframework */; };
|
||||
D5837AE122E300682E245E00 /* libfilament.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = E36164E9425CAABBE17EF153 /* libfilament.xcframework */; };
|
||||
ECA5B4596C78D6B18043153D /* libfilabridge.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = DA668D9E9DC67AD1FA16422A /* libfilabridge.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
ECE38C7FF5D52E4222C22216 /* libzstd.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8D062C70EFE8916B7656BB4E /* libzstd.xcframework */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXCopyFilesBuildPhase section */
|
||||
C514B8F3AF16FEA064256123 /* Embed Frameworks */ = {
|
||||
isa = PBXCopyFilesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
dstPath = "";
|
||||
dstSubfolderSpec = 10;
|
||||
files = (
|
||||
68822E4B9059C8A1E67EF062 /* libfilament.xcframework in Embed Frameworks */,
|
||||
12A40CB70167F2609E428EC6 /* libbackend.xcframework in Embed Frameworks */,
|
||||
371FE9F805A6B436B22EF70D /* libfilaflat.xcframework in Embed Frameworks */,
|
||||
978AB6421E245452AD8D9AE0 /* libktxreader.xcframework in Embed Frameworks */,
|
||||
ECA5B4596C78D6B18043153D /* libfilabridge.xcframework in Embed Frameworks */,
|
||||
AD9F281E6F4F05A4B98FD437 /* libutils.xcframework in Embed Frameworks */,
|
||||
96FBF778C4E3563A7C8D3A47 /* libsmol-v.xcframework in Embed Frameworks */,
|
||||
2DE5F1C322D1B8288CF6F1A9 /* libgeometry.xcframework in Embed Frameworks */,
|
||||
34826A3819309F25EAF82B78 /* libibl.xcframework in Embed Frameworks */,
|
||||
0F0218402B9C73D7B3775497 /* libabseil.xcframework in Embed Frameworks */,
|
||||
6BBD88355CE6932E706CE45C /* libzstd.xcframework in Embed Frameworks */,
|
||||
);
|
||||
name = "Embed Frameworks";
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXCopyFilesBuildPhase section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
0CDCD26337640C57D07E41ED /* FilamentView.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = FilamentView.mm; sourceTree = "<group>"; };
|
||||
2620C967534D81CFFAB5D3FF /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = "<group>"; };
|
||||
350DC65C7EE8D98D8FE181DC /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
|
||||
3604FD7E74C46AC4FAB12BFA /* libutils.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libutils.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libutils.xcframework"; sourceTree = "<group>"; };
|
||||
3BB2247EC7FE4EFB2C3ED10A /* hello-triangle.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = "hello-triangle.app"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
41033B581E89DF4B33A2EB53 /* bakedColor.mat */ = {isa = PBXFileReference; path = bakedColor.mat; sourceTree = "<group>"; };
|
||||
44224172FC58D500DEFE7A7D /* libgeometry.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libgeometry.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libgeometry.xcframework"; sourceTree = "<group>"; };
|
||||
45FE9476D47ECFFEA65D7146 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
|
||||
524293A0A8CDE9047347EF48 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
||||
727785EA0395D939E6804AF4 /* libsmol-v.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = "libsmol-v.xcframework"; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libsmol-v.xcframework"; sourceTree = "<group>"; };
|
||||
761A2C7D6295697614AD3434 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
|
||||
8D062C70EFE8916B7656BB4E /* libzstd.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libzstd.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libzstd.xcframework"; sourceTree = "<group>"; };
|
||||
AC6CC7E260B2F20D0EA171E2 /* libktxreader.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libktxreader.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libktxreader.xcframework"; sourceTree = "<group>"; };
|
||||
C16E9A84F33BDFAEDC1E4837 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
|
||||
C311F8DEBEFEB185F0A7E4CC /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = "<group>"; };
|
||||
C4952E6805DB5E7B871DF61C /* libfilaflat.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libfilaflat.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libfilaflat.xcframework"; sourceTree = "<group>"; };
|
||||
CDBB6BE341D1C708FCB68750 /* FilamentView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FilamentView.h; sourceTree = "<group>"; };
|
||||
D0F16339A5D96AB6AAF03A4C /* libabseil.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libabseil.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libabseil.xcframework"; sourceTree = "<group>"; };
|
||||
DA668D9E9DC67AD1FA16422A /* libfilabridge.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libfilabridge.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libfilabridge.xcframework"; sourceTree = "<group>"; };
|
||||
E36164E9425CAABBE17EF153 /* libfilament.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libfilament.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libfilament.xcframework"; sourceTree = "<group>"; };
|
||||
E36D17DB3F44ADF8EFBEDBAF /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
|
||||
E56C70616FF30C50DFA8238B /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
|
||||
ED0BAF80B49E29533E492727 /* libibl.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libibl.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libibl.xcframework"; sourceTree = "<group>"; };
|
||||
F3BA0FF5017E4FECD94CF3F2 /* libbackend.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libbackend.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libbackend.xcframework"; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
3691C25600B8D42B8E9BC308 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
D5837AE122E300682E245E00 /* libfilament.xcframework in Frameworks */,
|
||||
0A3A34EAB98A45D1D4355A52 /* libbackend.xcframework in Frameworks */,
|
||||
7A4FA872EA928DB67BBF9351 /* libfilaflat.xcframework in Frameworks */,
|
||||
CF4322AB55566F31A284739B /* libktxreader.xcframework in Frameworks */,
|
||||
291EA8BF9E335683AD324451 /* libfilabridge.xcframework in Frameworks */,
|
||||
5B76FEB9522BC17E14EF3270 /* libutils.xcframework in Frameworks */,
|
||||
B156789E3EC8798928C58BD2 /* libsmol-v.xcframework in Frameworks */,
|
||||
915E0D1FE043E873C17EB0AB /* libgeometry.xcframework in Frameworks */,
|
||||
1326DEBB610801CD041AE322 /* libibl.xcframework in Frameworks */,
|
||||
966626FAF79F36B16F9AE201 /* libabseil.xcframework in Frameworks */,
|
||||
ECE38C7FF5D52E4222C22216 /* libzstd.xcframework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
39FD47E0213E1FFE59609A06 /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
@@ -41,11 +119,30 @@
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
554175C148AC5EDE93591BB3 /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
D0F16339A5D96AB6AAF03A4C /* libabseil.xcframework */,
|
||||
F3BA0FF5017E4FECD94CF3F2 /* libbackend.xcframework */,
|
||||
DA668D9E9DC67AD1FA16422A /* libfilabridge.xcframework */,
|
||||
C4952E6805DB5E7B871DF61C /* libfilaflat.xcframework */,
|
||||
E36164E9425CAABBE17EF153 /* libfilament.xcframework */,
|
||||
44224172FC58D500DEFE7A7D /* libgeometry.xcframework */,
|
||||
ED0BAF80B49E29533E492727 /* libibl.xcframework */,
|
||||
AC6CC7E260B2F20D0EA171E2 /* libktxreader.xcframework */,
|
||||
727785EA0395D939E6804AF4 /* libsmol-v.xcframework */,
|
||||
3604FD7E74C46AC4FAB12BFA /* libutils.xcframework */,
|
||||
8D062C70EFE8916B7656BB4E /* libzstd.xcframework */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
5B3E3AAF5C75644908492410 = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
C54ABC8D31D1863EF16253A0 /* hello-triangle */,
|
||||
8F55D652979868A470D724FA /* Materials */,
|
||||
554175C148AC5EDE93591BB3 /* Frameworks */,
|
||||
39FD47E0213E1FFE59609A06 /* Products */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
@@ -67,11 +164,11 @@
|
||||
CDBB6BE341D1C708FCB68750 /* FilamentView.h */,
|
||||
0CDCD26337640C57D07E41ED /* FilamentView.mm */,
|
||||
761A2C7D6295697614AD3434 /* Info.plist */,
|
||||
46A2FAD3D476FDADF45F70F8 /* LaunchScreen.storyboard */,
|
||||
E56C70616FF30C50DFA8238B /* main.m */,
|
||||
DDE4A219AEB5B4507F51B873 /* Main.storyboard */,
|
||||
C311F8DEBEFEB185F0A7E4CC /* ViewController.h */,
|
||||
2620C967534D81CFFAB5D3FF /* ViewController.m */,
|
||||
46A2FAD3D476FDADF45F70F8 /* LaunchScreen.storyboard */,
|
||||
DDE4A219AEB5B4507F51B873 /* Main.storyboard */,
|
||||
);
|
||||
path = "hello-triangle";
|
||||
sourceTree = "<group>";
|
||||
@@ -86,6 +183,8 @@
|
||||
668105208CE7DFC4DC55F8EC /* Build Materials */,
|
||||
7B94E1FEEC48280815A91021 /* Sources */,
|
||||
471869BF4E82B6ADC791072D /* Resources */,
|
||||
3691C25600B8D42B8E9BC308 /* Frameworks */,
|
||||
C514B8F3AF16FEA064256123 /* Embed Frameworks */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
@@ -106,9 +205,10 @@
|
||||
attributes = {
|
||||
BuildIndependentTargetsInParallel = YES;
|
||||
LastUpgradeCheck = 1430;
|
||||
TargetAttributes = {
|
||||
};
|
||||
};
|
||||
buildConfigurationList = 69A012BABE82CB5D1986B1BB /* Build configuration list for PBXProject "hello-triangle" */;
|
||||
compatibilityVersion = "Xcode 14.0";
|
||||
developmentRegion = en;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
@@ -117,7 +217,8 @@
|
||||
);
|
||||
mainGroup = 5B3E3AAF5C75644908492410;
|
||||
minimizedProjectReferenceProxies = 1;
|
||||
preferredProjectObjectVersion = 54;
|
||||
preferredProjectObjectVersion = 77;
|
||||
productRefGroup = 39FD47E0213E1FFE59609A06 /* Products */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
@@ -156,7 +257,7 @@
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "# Compile bakedColor material.\n\nHOST_TOOLS_PATH=\"${HOST_TOOLS_PATH:-../../../out/release/filament/bin}\"\nmatc_path=`find ${HOST_TOOLS_PATH} -name matc -type f | head -n 1`\n\nif [[ ! -e \"${matc_path}\" ]]; then\n echo \"No matc binary could be found in ${HOST_TOOLS_PATH}.\"\n echo \"Ensure Filament has been built/installed before building this app.\"\n exit 1\nfi\n\nmkdir -p \"${PROJECT_DIR}/generated/\"\n\"${matc_path}\" \\\n --api all \\\n -f header \\\n -o \"${PROJECT_DIR}/generated/bakedColor.inc\" \\\n \"${PROJECT_DIR}/Materials/bakedColor.mat\"\n\n# FilamentView.mm includes bakedColor.filamat, so touch it to force Xcode to\n# recompile it.\ntouch \"${PROJECT_DIR}/hello-triangle/FilamentView.mm\"\n";
|
||||
shellScript = "# Compile bakedColor material.\n\nHOST_TOOLS_PATH=\"${HOST_TOOLS_PATH:-../../../out/release/filament/bin}\"\nmatc_path=`find -L ${HOST_TOOLS_PATH} -name matc -type f | head -n 1`\n\nif [[ ! -e \"${matc_path}\" ]]; then\n echo \"No matc binary could be found in ${HOST_TOOLS_PATH}.\"\n echo \"Ensure Filament has been built/installed before building this app.\"\n exit 1\nfi\n\nmkdir -p \"${PROJECT_DIR}/generated/\"\n\"${matc_path}\" \\\n --api all \\\n -f header \\\n -o \"${PROJECT_DIR}/generated/bakedColor.inc\" \\\n \"${PROJECT_DIR}/Materials/bakedColor.mat\"\n\n# FilamentView.mm includes bakedColor.filamat, so touch it to force Xcode to\n# recompile it.\ntouch \"${PROJECT_DIR}/hello-triangle/FilamentView.mm\"\n";
|
||||
};
|
||||
/* End PBXShellScriptBuildPhase section */
|
||||
|
||||
@@ -201,12 +302,17 @@
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
ENABLE_BITCODE = NO;
|
||||
FILAMENT_OUT_NAME = "ios-debug";
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"../../../out/$(FILAMENT_OUT_NAME)/filament/lib\"",
|
||||
);
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"FILAMENT_APP_USE_OPENGL=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"../../../out/ios-debug/filament/include",
|
||||
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
|
||||
generated,
|
||||
);
|
||||
INFOPLIST_FILE = "hello-triangle/Info.plist";
|
||||
@@ -215,23 +321,6 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"../../../out/ios-debug/filament/lib/$(CURRENT_ARCH)",
|
||||
"../../../out/ios-debug/filament/lib/universal",
|
||||
);
|
||||
OTHER_LDFLAGS = (
|
||||
"-lfilament",
|
||||
"-lbackend",
|
||||
"-lfilaflat",
|
||||
"-lktxreader",
|
||||
"-lfilabridge",
|
||||
"-lutils",
|
||||
"-lsmol-v",
|
||||
"-lgeometry",
|
||||
"-libl",
|
||||
"-labseil",
|
||||
"-lzstd",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "${SAMPLE_CODE_DISAMBIGUATOR}.google.filament.hello-triangle";
|
||||
SAMPLE_CODE_DISAMBIGUATOR = "${DEVELOPMENT_TEAM}";
|
||||
SDKROOT = iphoneos;
|
||||
@@ -245,7 +334,7 @@
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
@@ -308,12 +397,17 @@
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
ENABLE_BITCODE = NO;
|
||||
FILAMENT_OUT_NAME = "ios-release";
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"../../../out/$(FILAMENT_OUT_NAME)/filament/lib\"",
|
||||
);
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"FILAMENT_APP_USE_METAL=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"../../../out/ios-release/filament/include",
|
||||
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
|
||||
generated,
|
||||
);
|
||||
INFOPLIST_FILE = "hello-triangle/Info.plist";
|
||||
@@ -322,23 +416,6 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"../../../out/ios-release/filament/lib/$(CURRENT_ARCH)",
|
||||
"../../../out/ios-release/filament/lib/universal",
|
||||
);
|
||||
OTHER_LDFLAGS = (
|
||||
"-lfilament",
|
||||
"-lbackend",
|
||||
"-lfilaflat",
|
||||
"-lktxreader",
|
||||
"-lfilabridge",
|
||||
"-lutils",
|
||||
"-lsmol-v",
|
||||
"-lgeometry",
|
||||
"-libl",
|
||||
"-labseil",
|
||||
"-lzstd",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "${SAMPLE_CODE_DISAMBIGUATOR}.google.filament.hello-triangle";
|
||||
SAMPLE_CODE_DISAMBIGUATOR = "${DEVELOPMENT_TEAM}";
|
||||
SDKROOT = iphoneos;
|
||||
@@ -353,12 +430,17 @@
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
ENABLE_BITCODE = NO;
|
||||
FILAMENT_OUT_NAME = "ios-release";
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"../../../out/$(FILAMENT_OUT_NAME)/filament/lib\"",
|
||||
);
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"FILAMENT_APP_USE_OPENGL=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"../../../out/ios-release/filament/include",
|
||||
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
|
||||
generated,
|
||||
);
|
||||
INFOPLIST_FILE = "hello-triangle/Info.plist";
|
||||
@@ -367,23 +449,6 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"../../../out/ios-release/filament/lib/$(CURRENT_ARCH)",
|
||||
"../../../out/ios-release/filament/lib/universal",
|
||||
);
|
||||
OTHER_LDFLAGS = (
|
||||
"-lfilament",
|
||||
"-lbackend",
|
||||
"-lfilaflat",
|
||||
"-lktxreader",
|
||||
"-lfilabridge",
|
||||
"-lutils",
|
||||
"-lsmol-v",
|
||||
"-lgeometry",
|
||||
"-libl",
|
||||
"-labseil",
|
||||
"-lzstd",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "${SAMPLE_CODE_DISAMBIGUATOR}.google.filament.hello-triangle";
|
||||
SAMPLE_CODE_DISAMBIGUATOR = "${DEVELOPMENT_TEAM}";
|
||||
SDKROOT = iphoneos;
|
||||
@@ -397,7 +462,7 @@
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
@@ -452,7 +517,7 @@
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
@@ -508,12 +573,17 @@
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
ENABLE_BITCODE = NO;
|
||||
FILAMENT_OUT_NAME = "ios-debug";
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"../../../out/$(FILAMENT_OUT_NAME)/filament/lib\"",
|
||||
);
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"FILAMENT_APP_USE_METAL=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"../../../out/ios-debug/filament/include",
|
||||
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
|
||||
generated,
|
||||
);
|
||||
INFOPLIST_FILE = "hello-triangle/Info.plist";
|
||||
@@ -522,23 +592,6 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"../../../out/ios-debug/filament/lib/$(CURRENT_ARCH)",
|
||||
"../../../out/ios-debug/filament/lib/universal",
|
||||
);
|
||||
OTHER_LDFLAGS = (
|
||||
"-lfilament",
|
||||
"-lbackend",
|
||||
"-lfilaflat",
|
||||
"-lktxreader",
|
||||
"-lfilabridge",
|
||||
"-lutils",
|
||||
"-lsmol-v",
|
||||
"-lgeometry",
|
||||
"-libl",
|
||||
"-labseil",
|
||||
"-lzstd",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "${SAMPLE_CODE_DISAMBIGUATOR}.google.filament.hello-triangle";
|
||||
SAMPLE_CODE_DISAMBIGUATOR = "${DEVELOPMENT_TEAM}";
|
||||
SDKROOT = iphoneos;
|
||||
@@ -552,7 +605,7 @@
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# Compile bakedColor material.
|
||||
|
||||
HOST_TOOLS_PATH="${HOST_TOOLS_PATH:-../../../out/release/filament/bin}"
|
||||
matc_path=`find ${HOST_TOOLS_PATH} -name matc -type f | head -n 1`
|
||||
matc_path=`find -L ${HOST_TOOLS_PATH} -name matc -type f | head -n 1`
|
||||
|
||||
if [[ ! -e "${matc_path}" ]]; then
|
||||
echo "No matc binary could be found in ${HOST_TOOLS_PATH}."
|
||||
|
||||
+135
-82
@@ -3,34 +3,112 @@
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 54;
|
||||
objectVersion = 77;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
1277F800D6D46E364FC36888 /* libgeometry.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 567E8EB7B4914540B082DA80 /* libgeometry.xcframework */; };
|
||||
1E31EA1A79A550407E4A39BB /* libzstd.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = E2AF349D32EBA154923EABB5 /* libzstd.xcframework */; };
|
||||
23318D8F70A6E13214CF15E0 /* libutils.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 91DE2DCC79C7DD9D830D883B /* libutils.xcframework */; };
|
||||
243D3B219322B6BD829F39F8 /* libktxreader.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = A6D7469820FD760B1040BFD2 /* libktxreader.xcframework */; };
|
||||
3A1A568B3431D8FB66F60DB3 /* libabseil.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = B254EC414E4905EC4CA22173 /* libabseil.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
527FF7B484BA83BCC248B097 /* libfilabridge.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 393E02B47C7710AB8B1F257A /* libfilabridge.xcframework */; };
|
||||
593638720D5E6F09E52ECB01 /* libibl.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = E1C8DFBE4D515753D5B51FF1 /* libibl.xcframework */; };
|
||||
5F8AE993649815236EC665EB /* libibl.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = E1C8DFBE4D515753D5B51FF1 /* libibl.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
60C0A11E074409CE5F88B4FE /* libbackend.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6EB7C2D5C91942D2B1EA056D /* libbackend.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
616A1B9A177BA2F02C920165 /* libfilaflat.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0202CBA0AE1EAA3EE3DE0FFC /* libfilaflat.xcframework */; };
|
||||
643749757FD9F8A609A336C7 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = E749A05E4E5F36757FB9399C /* Assets.xcassets */; };
|
||||
65FE8CD16998C5D479C9858E /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = C8CF5D9EB8BA11B44F639DFE /* AppDelegate.m */; };
|
||||
6B53BDEF1DAB8E4AD8CE754B /* libfilabridge.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 393E02B47C7710AB8B1F257A /* libfilabridge.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
7032AB98BE03DFE8E3071FD0 /* libbackend.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6EB7C2D5C91942D2B1EA056D /* libbackend.xcframework */; };
|
||||
715FFF9658000B58BFEC22C6 /* libutils.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 91DE2DCC79C7DD9D830D883B /* libutils.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
740AB9277340CDD2222020E2 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = AA728ADDAAE09D3A5FD80C82 /* main.m */; };
|
||||
7F65E29DE4BF2CAA0D0759AA /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 959043C1F56EAAE872B0FF05 /* Main.storyboard */; };
|
||||
80F7D25E275FE8C31AF9196E /* libzstd.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = E2AF349D32EBA154923EABB5 /* libzstd.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
852D4BD096E865D7263928C8 /* libabseil.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = B254EC414E4905EC4CA22173 /* libabseil.xcframework */; };
|
||||
8DA900E9A495C25262F78773 /* libgeometry.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 567E8EB7B4914540B082DA80 /* libgeometry.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
9F3C8B197C22178413BBAA37 /* libfilaflat.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 0202CBA0AE1EAA3EE3DE0FFC /* libfilaflat.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
A0FCB25FCDAE129BB6369957 /* libfilament.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = DF18A248DCF11412DDFAB5AE /* libfilament.xcframework */; };
|
||||
A9C3D93FE47802953C8A0868 /* FilamentView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1A807B46A326F19ABCEE0D62 /* FilamentView.mm */; };
|
||||
BA514AFE134AFD317CD71AA1 /* libsmol-v.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 26B0C9089541BEB14FE28934 /* libsmol-v.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
C8F443E4A5064C2D1F755954 /* libsmol-v.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 26B0C9089541BEB14FE28934 /* libsmol-v.xcframework */; };
|
||||
CAB4734A7E608F3C36C4C9C8 /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E6D9072BB2A497EEE9A7B662 /* ViewController.m */; };
|
||||
CDF7D87AB0D036A143F37946 /* libfilament.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = DF18A248DCF11412DDFAB5AE /* libfilament.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
DF6374DDCFE55DD536B52033 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 96B770972E0F353852755AB3 /* LaunchScreen.storyboard */; };
|
||||
F6EEC66B42DF66E5C4CEC17C /* libktxreader.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = A6D7469820FD760B1040BFD2 /* libktxreader.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXCopyFilesBuildPhase section */
|
||||
89F6975F74EBC72BCCA1074F /* Embed Frameworks */ = {
|
||||
isa = PBXCopyFilesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
dstPath = "";
|
||||
dstSubfolderSpec = 10;
|
||||
files = (
|
||||
CDF7D87AB0D036A143F37946 /* libfilament.xcframework in Embed Frameworks */,
|
||||
60C0A11E074409CE5F88B4FE /* libbackend.xcframework in Embed Frameworks */,
|
||||
9F3C8B197C22178413BBAA37 /* libfilaflat.xcframework in Embed Frameworks */,
|
||||
F6EEC66B42DF66E5C4CEC17C /* libktxreader.xcframework in Embed Frameworks */,
|
||||
6B53BDEF1DAB8E4AD8CE754B /* libfilabridge.xcframework in Embed Frameworks */,
|
||||
715FFF9658000B58BFEC22C6 /* libutils.xcframework in Embed Frameworks */,
|
||||
BA514AFE134AFD317CD71AA1 /* libsmol-v.xcframework in Embed Frameworks */,
|
||||
8DA900E9A495C25262F78773 /* libgeometry.xcframework in Embed Frameworks */,
|
||||
5F8AE993649815236EC665EB /* libibl.xcframework in Embed Frameworks */,
|
||||
3A1A568B3431D8FB66F60DB3 /* libabseil.xcframework in Embed Frameworks */,
|
||||
80F7D25E275FE8C31AF9196E /* libzstd.xcframework in Embed Frameworks */,
|
||||
);
|
||||
name = "Embed Frameworks";
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXCopyFilesBuildPhase section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
0202CBA0AE1EAA3EE3DE0FFC /* libfilaflat.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libfilaflat.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libfilaflat.xcframework"; sourceTree = "<group>"; };
|
||||
023105B81B6C662A3BABDC92 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
|
||||
0A8B371B11D177469DFEBB86 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
|
||||
1A807B46A326F19ABCEE0D62 /* FilamentView.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = FilamentView.mm; sourceTree = "<group>"; };
|
||||
26B0C9089541BEB14FE28934 /* libsmol-v.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = "libsmol-v.xcframework"; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libsmol-v.xcframework"; sourceTree = "<group>"; };
|
||||
2F32AE4C99AA8AE39BB09F0A /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = "<group>"; };
|
||||
393E02B47C7710AB8B1F257A /* libfilabridge.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libfilabridge.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libfilabridge.xcframework"; sourceTree = "<group>"; };
|
||||
567E8EB7B4914540B082DA80 /* libgeometry.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libgeometry.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libgeometry.xcframework"; sourceTree = "<group>"; };
|
||||
6EB7C2D5C91942D2B1EA056D /* libbackend.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libbackend.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libbackend.xcframework"; sourceTree = "<group>"; };
|
||||
7ED3EBFE01876351CFF9AD1A /* transparent-rendering.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = "transparent-rendering.app"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
91DE2DCC79C7DD9D830D883B /* libutils.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libutils.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libutils.xcframework"; sourceTree = "<group>"; };
|
||||
952B0BE8EFAEF9B6FCB77798 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
|
||||
A5E8D7CA26C338BF3D9D1932 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
|
||||
A6D7469820FD760B1040BFD2 /* libktxreader.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libktxreader.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libktxreader.xcframework"; sourceTree = "<group>"; };
|
||||
AA728ADDAAE09D3A5FD80C82 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
|
||||
B254EC414E4905EC4CA22173 /* libabseil.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libabseil.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libabseil.xcframework"; sourceTree = "<group>"; };
|
||||
BD21E933E2F77EE5ACBCDD5F /* FilamentView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FilamentView.h; sourceTree = "<group>"; };
|
||||
C8CF5D9EB8BA11B44F639DFE /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
|
||||
DF18A248DCF11412DDFAB5AE /* libfilament.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libfilament.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libfilament.xcframework"; sourceTree = "<group>"; };
|
||||
E1C8DFBE4D515753D5B51FF1 /* libibl.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libibl.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libibl.xcframework"; sourceTree = "<group>"; };
|
||||
E2AF349D32EBA154923EABB5 /* libzstd.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libzstd.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libzstd.xcframework"; sourceTree = "<group>"; };
|
||||
E6D9072BB2A497EEE9A7B662 /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = "<group>"; };
|
||||
E749A05E4E5F36757FB9399C /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
9267558086B89E5F350ADDC4 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
A0FCB25FCDAE129BB6369957 /* libfilament.xcframework in Frameworks */,
|
||||
7032AB98BE03DFE8E3071FD0 /* libbackend.xcframework in Frameworks */,
|
||||
616A1B9A177BA2F02C920165 /* libfilaflat.xcframework in Frameworks */,
|
||||
243D3B219322B6BD829F39F8 /* libktxreader.xcframework in Frameworks */,
|
||||
527FF7B484BA83BCC248B097 /* libfilabridge.xcframework in Frameworks */,
|
||||
23318D8F70A6E13214CF15E0 /* libutils.xcframework in Frameworks */,
|
||||
C8F443E4A5064C2D1F755954 /* libsmol-v.xcframework in Frameworks */,
|
||||
1277F800D6D46E364FC36888 /* libgeometry.xcframework in Frameworks */,
|
||||
593638720D5E6F09E52ECB01 /* libibl.xcframework in Frameworks */,
|
||||
852D4BD096E865D7263928C8 /* libabseil.xcframework in Frameworks */,
|
||||
1E31EA1A79A550407E4A39BB /* libzstd.xcframework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
0B098038EF2CFAC88AFE0F18 /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
@@ -44,6 +122,7 @@
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
6E33B6C4EE9FFF8BBCE5DD20 /* transparent-rendering */,
|
||||
C5AF8AD86B58EF5D0BD7B0B2 /* Frameworks */,
|
||||
0B098038EF2CFAC88AFE0F18 /* Products */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
@@ -57,15 +136,33 @@
|
||||
BD21E933E2F77EE5ACBCDD5F /* FilamentView.h */,
|
||||
1A807B46A326F19ABCEE0D62 /* FilamentView.mm */,
|
||||
952B0BE8EFAEF9B6FCB77798 /* Info.plist */,
|
||||
96B770972E0F353852755AB3 /* LaunchScreen.storyboard */,
|
||||
AA728ADDAAE09D3A5FD80C82 /* main.m */,
|
||||
959043C1F56EAAE872B0FF05 /* Main.storyboard */,
|
||||
2F32AE4C99AA8AE39BB09F0A /* ViewController.h */,
|
||||
E6D9072BB2A497EEE9A7B662 /* ViewController.m */,
|
||||
96B770972E0F353852755AB3 /* LaunchScreen.storyboard */,
|
||||
959043C1F56EAAE872B0FF05 /* Main.storyboard */,
|
||||
);
|
||||
path = "transparent-rendering";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
C5AF8AD86B58EF5D0BD7B0B2 /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
B254EC414E4905EC4CA22173 /* libabseil.xcframework */,
|
||||
6EB7C2D5C91942D2B1EA056D /* libbackend.xcframework */,
|
||||
393E02B47C7710AB8B1F257A /* libfilabridge.xcframework */,
|
||||
0202CBA0AE1EAA3EE3DE0FFC /* libfilaflat.xcframework */,
|
||||
DF18A248DCF11412DDFAB5AE /* libfilament.xcframework */,
|
||||
567E8EB7B4914540B082DA80 /* libgeometry.xcframework */,
|
||||
E1C8DFBE4D515753D5B51FF1 /* libibl.xcframework */,
|
||||
A6D7469820FD760B1040BFD2 /* libktxreader.xcframework */,
|
||||
26B0C9089541BEB14FE28934 /* libsmol-v.xcframework */,
|
||||
91DE2DCC79C7DD9D830D883B /* libutils.xcframework */,
|
||||
E2AF349D32EBA154923EABB5 /* libzstd.xcframework */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
@@ -76,6 +173,8 @@
|
||||
31596072423F6FB0A84C97A0 /* Build Materials */,
|
||||
EE3B63E6A11EDDBC48502B27 /* Sources */,
|
||||
A676D3A853739CDAB454587E /* Resources */,
|
||||
9267558086B89E5F350ADDC4 /* Frameworks */,
|
||||
89F6975F74EBC72BCCA1074F /* Embed Frameworks */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
@@ -96,9 +195,10 @@
|
||||
attributes = {
|
||||
BuildIndependentTargetsInParallel = YES;
|
||||
LastUpgradeCheck = 1430;
|
||||
TargetAttributes = {
|
||||
};
|
||||
};
|
||||
buildConfigurationList = 8A22BD23DB15965551506480 /* Build configuration list for PBXProject "transparent-rendering" */;
|
||||
compatibilityVersion = "Xcode 14.0";
|
||||
developmentRegion = en;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
@@ -107,7 +207,8 @@
|
||||
);
|
||||
mainGroup = 4C27390036DEB15C67D5A664;
|
||||
minimizedProjectReferenceProxies = 1;
|
||||
preferredProjectObjectVersion = 54;
|
||||
preferredProjectObjectVersion = 77;
|
||||
productRefGroup = 0B098038EF2CFAC88AFE0F18 /* Products */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
@@ -146,7 +247,7 @@
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "# Compile bakedColor material.\n\nHOST_TOOLS_PATH=\"${HOST_TOOLS_PATH:-../../../out/release/filament/bin}\"\nmatc_path=`find ${HOST_TOOLS_PATH} -name matc -type f | head -n 1`\n\nif [[ ! -e \"${matc_path}\" ]]; then\n echo \"No matc binary could be found in ${HOST_TOOLS_PATH}.\"\n echo \"Ensure Filament has been built/installed before building this app.\"\n exit 1\nfi\n\nmkdir -p \"${PROJECT_DIR}/generated/\"\n\"${matc_path}\" \\\n --api all \\\n -f header \\\n -o \"${PROJECT_DIR}/generated/bakedColor.inc\" \\\n \"${PROJECT_DIR}/Materials/bakedColor.mat\"\n\n# FilamentView.mm includes bakedColor.filamat, so touch it to force Xcode to\n# recompile it.\ntouch \"${PROJECT_DIR}/transparent-rendering/FilamentView.mm\"\n";
|
||||
shellScript = "# Compile bakedColor material.\n\nHOST_TOOLS_PATH=\"${HOST_TOOLS_PATH:-../../../out/release/filament/bin}\"\nmatc_path=`find -L ${HOST_TOOLS_PATH} -name matc -type f | head -n 1`\n\nif [[ ! -e \"${matc_path}\" ]]; then\n echo \"No matc binary could be found in ${HOST_TOOLS_PATH}.\"\n echo \"Ensure Filament has been built/installed before building this app.\"\n exit 1\nfi\n\nmkdir -p \"${PROJECT_DIR}/generated/\"\n\"${matc_path}\" \\\n --api all \\\n -f header \\\n -o \"${PROJECT_DIR}/generated/bakedColor.inc\" \\\n \"${PROJECT_DIR}/Materials/bakedColor.mat\"\n\n# FilamentView.mm includes bakedColor.filamat, so touch it to force Xcode to\n# recompile it.\ntouch \"${PROJECT_DIR}/transparent-rendering/FilamentView.mm\"\n";
|
||||
};
|
||||
/* End PBXShellScriptBuildPhase section */
|
||||
|
||||
@@ -190,7 +291,7 @@
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
@@ -245,7 +346,7 @@
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
@@ -307,7 +408,7 @@
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
@@ -363,12 +464,17 @@
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
ENABLE_BITCODE = NO;
|
||||
FILAMENT_OUT_NAME = "ios-release";
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"../../../out/$(FILAMENT_OUT_NAME)/filament/lib\"",
|
||||
);
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"FILAMENT_APP_USE_OPENGL=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"../../../out/ios-release/filament/include",
|
||||
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
|
||||
generated,
|
||||
);
|
||||
INFOPLIST_FILE = "transparent-rendering/Info.plist";
|
||||
@@ -377,23 +483,6 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"../../../out/ios-release/filament/lib/$(CURRENT_ARCH)",
|
||||
"../../../out/ios-release/filament/lib/universal",
|
||||
);
|
||||
OTHER_LDFLAGS = (
|
||||
"-lfilament",
|
||||
"-lbackend",
|
||||
"-lfilaflat",
|
||||
"-lktxreader",
|
||||
"-lfilabridge",
|
||||
"-lutils",
|
||||
"-lsmol-v",
|
||||
"-lgeometry",
|
||||
"-libl",
|
||||
"-labseil",
|
||||
"-lzstd",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "${SAMPLE_CODE_DISAMBIGUATOR}.google.filament.transparent-rendering";
|
||||
SAMPLE_CODE_DISAMBIGUATOR = "${DEVELOPMENT_TEAM}";
|
||||
SDKROOT = iphoneos;
|
||||
@@ -408,12 +497,17 @@
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
ENABLE_BITCODE = NO;
|
||||
FILAMENT_OUT_NAME = "ios-debug";
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"../../../out/$(FILAMENT_OUT_NAME)/filament/lib\"",
|
||||
);
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"FILAMENT_APP_USE_METAL=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"../../../out/ios-debug/filament/include",
|
||||
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
|
||||
generated,
|
||||
);
|
||||
INFOPLIST_FILE = "transparent-rendering/Info.plist";
|
||||
@@ -422,23 +516,6 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"../../../out/ios-debug/filament/lib/$(CURRENT_ARCH)",
|
||||
"../../../out/ios-debug/filament/lib/universal",
|
||||
);
|
||||
OTHER_LDFLAGS = (
|
||||
"-lfilament",
|
||||
"-lbackend",
|
||||
"-lfilaflat",
|
||||
"-lktxreader",
|
||||
"-lfilabridge",
|
||||
"-lutils",
|
||||
"-lsmol-v",
|
||||
"-lgeometry",
|
||||
"-libl",
|
||||
"-labseil",
|
||||
"-lzstd",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "${SAMPLE_CODE_DISAMBIGUATOR}.google.filament.transparent-rendering";
|
||||
SAMPLE_CODE_DISAMBIGUATOR = "${DEVELOPMENT_TEAM}";
|
||||
SDKROOT = iphoneos;
|
||||
@@ -453,12 +530,17 @@
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
ENABLE_BITCODE = NO;
|
||||
FILAMENT_OUT_NAME = "ios-debug";
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"../../../out/$(FILAMENT_OUT_NAME)/filament/lib\"",
|
||||
);
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"FILAMENT_APP_USE_OPENGL=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"../../../out/ios-debug/filament/include",
|
||||
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
|
||||
generated,
|
||||
);
|
||||
INFOPLIST_FILE = "transparent-rendering/Info.plist";
|
||||
@@ -467,23 +549,6 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"../../../out/ios-debug/filament/lib/$(CURRENT_ARCH)",
|
||||
"../../../out/ios-debug/filament/lib/universal",
|
||||
);
|
||||
OTHER_LDFLAGS = (
|
||||
"-lfilament",
|
||||
"-lbackend",
|
||||
"-lfilaflat",
|
||||
"-lktxreader",
|
||||
"-lfilabridge",
|
||||
"-lutils",
|
||||
"-lsmol-v",
|
||||
"-lgeometry",
|
||||
"-libl",
|
||||
"-labseil",
|
||||
"-lzstd",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "${SAMPLE_CODE_DISAMBIGUATOR}.google.filament.transparent-rendering";
|
||||
SAMPLE_CODE_DISAMBIGUATOR = "${DEVELOPMENT_TEAM}";
|
||||
SDKROOT = iphoneos;
|
||||
@@ -498,12 +563,17 @@
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
ENABLE_BITCODE = NO;
|
||||
FILAMENT_OUT_NAME = "ios-release";
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"../../../out/$(FILAMENT_OUT_NAME)/filament/lib\"",
|
||||
);
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"FILAMENT_APP_USE_METAL=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"../../../out/ios-release/filament/include",
|
||||
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
|
||||
generated,
|
||||
);
|
||||
INFOPLIST_FILE = "transparent-rendering/Info.plist";
|
||||
@@ -512,23 +582,6 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"../../../out/ios-release/filament/lib/$(CURRENT_ARCH)",
|
||||
"../../../out/ios-release/filament/lib/universal",
|
||||
);
|
||||
OTHER_LDFLAGS = (
|
||||
"-lfilament",
|
||||
"-lbackend",
|
||||
"-lfilaflat",
|
||||
"-lktxreader",
|
||||
"-lfilabridge",
|
||||
"-lutils",
|
||||
"-lsmol-v",
|
||||
"-lgeometry",
|
||||
"-libl",
|
||||
"-labseil",
|
||||
"-lzstd",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "${SAMPLE_CODE_DISAMBIGUATOR}.google.filament.transparent-rendering";
|
||||
SAMPLE_CODE_DISAMBIGUATOR = "${DEVELOPMENT_TEAM}";
|
||||
SDKROOT = iphoneos;
|
||||
@@ -542,7 +595,7 @@
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
|
||||
@@ -50,7 +50,7 @@ install(DIRECTORY ${PUBLIC_HDR_DIR}/camutils DESTINATION include)
|
||||
# ==================================================================================================
|
||||
# Tests
|
||||
# ==================================================================================================
|
||||
if (FILAMENT_BUILD_TESTING AND NOT ANDROID AND NOT WEBGL AND NOT IOS)
|
||||
if (FILAMENT_BUILD_TESTING AND NOT ANDROID AND NOT WASM AND NOT IOS)
|
||||
add_executable(test_${TARGET} tests/test_camutils.cpp)
|
||||
target_link_libraries(test_${TARGET} PRIVATE camutils gtest)
|
||||
set_target_properties(test_${TARGET} PROPERTIES FOLDER Tests)
|
||||
|
||||
@@ -138,7 +138,7 @@ constexpr size_t CONFIG_MINSPEC_UBO_SIZE = 16384;
|
||||
// https://crbug.com/1348363 Lighting looks wrong with D3D11 but not OpenGL
|
||||
// Note that __EMSCRIPTEN__ is not defined when running matc, but that's okay because we're
|
||||
// actually using a specification constant.
|
||||
#if defined(__EMSCRIPTEN__)
|
||||
#if defined(__EMSCRIPTEN__) && !defined(FILAMENT_SUPPORTS_WEBGPU)
|
||||
constexpr size_t CONFIG_MAX_INSTANCES = 8;
|
||||
#else
|
||||
constexpr size_t CONFIG_MAX_INSTANCES = 64;
|
||||
|
||||
@@ -881,14 +881,6 @@ utils::io::sstream& CodeGenerator::generateSpecializationConstant(utils::io::sst
|
||||
|
||||
static const char* types[] = { "int", "float", "bool" };
|
||||
|
||||
// Spec constants aren't fully supported in Tint,
|
||||
// workaround until https://issues.chromium.org/issues/42250586 is resolved
|
||||
if (mTargetApi == TargetApi::WEBGPU) {
|
||||
std::string const variableName = "FILAMENT_SPEC_CONST_" + std::to_string(id) + "_" + name;
|
||||
out << " const " << types[value.index()] << " " << variableName << " = " << constantString << ";\n";
|
||||
out << types[value.index()] << " " << name << " = " << variableName << ";\n";
|
||||
return out;
|
||||
}
|
||||
if (mTargetLanguage == MaterialBuilderBase::TargetLanguage::SPIRV) {
|
||||
out << "layout (constant_id = " << id << ") const "
|
||||
<< types[value.index()] << " " << name << " = " << constantString << ";\n";
|
||||
|
||||
@@ -37,7 +37,7 @@ install(FILES ${DIST_HDRS} DESTINATION include/${TARGET})
|
||||
# ==================================================================================================
|
||||
# Tests
|
||||
# ==================================================================================================
|
||||
if (FILAMENT_BUILD_TESTING AND NOT IOS AND NOT WEBGL AND NOT ANDROID)
|
||||
if (FILAMENT_BUILD_TESTING AND NOT IOS AND NOT WASM AND NOT ANDROID)
|
||||
add_executable(test_${TARGET} tests/test_filamesh.cpp )
|
||||
target_link_libraries(test_${TARGET} PRIVATE filameshio gtest)
|
||||
set_target_properties(test_${TARGET} PROPERTIES FOLDER Tests)
|
||||
|
||||
@@ -46,7 +46,7 @@ if (MSVC)
|
||||
set(OPTIMIZATION_FLAGS
|
||||
/fp:fast
|
||||
)
|
||||
elseif(WEBGL)
|
||||
elseif (WASM)
|
||||
# Avoid strict-vtable-pointers here, it is broken in WebAssembly.
|
||||
set(OPTIMIZATION_FLAGS -fvisibility-inlines-hidden)
|
||||
else()
|
||||
|
||||
@@ -73,7 +73,7 @@ install(FILES "${GEOMETRY_COMBINED_OUTPUT}" DESTINATION lib/${DIST_DIR} RENAME $
|
||||
# ==================================================================================================
|
||||
# Tests
|
||||
# ==================================================================================================
|
||||
if (FILAMENT_BUILD_TESTING AND NOT ANDROID AND NOT WEBGL AND NOT IOS)
|
||||
if (FILAMENT_BUILD_TESTING AND NOT ANDROID AND NOT WASM AND NOT IOS)
|
||||
set(TARGET test_transcoder)
|
||||
add_executable(${TARGET} tests/test_transcoder.cpp)
|
||||
target_link_libraries(${TARGET} PRIVATE geometry gtest)
|
||||
|
||||
@@ -198,13 +198,13 @@ set_target_properties(gltfio_core PROPERTIES FOLDER Libs)
|
||||
target_compile_definitions(gltfio_core PUBLIC -DGLTFIO_DRACO_SUPPORTED=1)
|
||||
target_link_libraries(gltfio_core PUBLIC dracodec meshoptimizer ${WEBP_DECODER_LIB_TARGET})
|
||||
|
||||
if (WEBGL_PTHREADS)
|
||||
if (WASM_PTHREADS)
|
||||
target_compile_definitions(gltfio_core PUBLIC -DFILAMENT_WASM_THREADS)
|
||||
endif()
|
||||
|
||||
target_compile_options(gltfio_core PRIVATE ${FILAMENT_WARNINGS})
|
||||
|
||||
if (NOT WEBGL AND NOT ANDROID AND NOT IOS)
|
||||
if (NOT WASM AND NOT ANDROID AND NOT IOS)
|
||||
|
||||
# ==================================================================================================
|
||||
# Link the core library with additional dependencies to create the "full" library
|
||||
@@ -246,7 +246,7 @@ if (FILAMENT_BUILD_TESTING)
|
||||
|
||||
# The following tests rely on private APIs that are stripped
|
||||
# away in Release builds
|
||||
if (TNT_DEV AND NOT WEBGL AND NOT ANDROID AND NOT IOS)
|
||||
if (TNT_DEV AND NOT WASM AND NOT ANDROID AND NOT IOS)
|
||||
set(TEST_TARGET test_gltfio)
|
||||
|
||||
add_executable(${TEST_TARGET} test/gltfio_test.cpp)
|
||||
|
||||
@@ -99,7 +99,7 @@ if (MSVC)
|
||||
set(OPTIMIZATION_FLAGS
|
||||
/fp:fast
|
||||
)
|
||||
elseif(WEBGL)
|
||||
elseif (WASM)
|
||||
# Avoid strict-vtable-pointers here, it is broken in WebAssembly.
|
||||
set(OPTIMIZATION_FLAGS -fvisibility-inlines-hidden)
|
||||
else()
|
||||
|
||||
@@ -53,7 +53,7 @@ install(DIRECTORY ${PUBLIC_HDR_DIR}/image DESTINATION include)
|
||||
# ==================================================================================================
|
||||
# Tests
|
||||
# ==================================================================================================
|
||||
if (FILAMENT_BUILD_TESTING AND NOT ANDROID AND NOT WEBGL AND NOT IOS AND NOT FILAMENT_SKIP_SDL2)
|
||||
if (FILAMENT_BUILD_TESTING AND NOT ANDROID AND NOT WASM AND NOT IOS AND NOT FILAMENT_SKIP_SDL2)
|
||||
add_executable(test_${TARGET} tests/test_image.cpp)
|
||||
target_link_libraries(test_${TARGET} PRIVATE imageio gtest)
|
||||
set_target_properties(test_${TARGET} PROPERTIES FOLDER Tests)
|
||||
|
||||
@@ -17,9 +17,9 @@ target_link_libraries(imagediff PRIVATE
|
||||
)
|
||||
|
||||
|
||||
if (NOT ANDROID AND NOT WEBGL AND NOT IOS)
|
||||
if (NOT ANDROID AND NOT WASM AND NOT IOS)
|
||||
add_executable(test_imagediff tests/test_ImageDiff.cpp)
|
||||
target_link_libraries(test_imagediff PRIVATE imagediff gtest image utils)
|
||||
endif()
|
||||
|
||||
install(TARGETS imagediff ARCHIVE DESTINATION lib/${DIST_ARCH} LIBRARY DESTINATION lib/${DIST_ARCH})
|
||||
install(TARGETS imagediff ARCHIVE DESTINATION lib/${DIST_DIR} LIBRARY DESTINATION lib/${DIST_DIR})
|
||||
|
||||
@@ -45,7 +45,7 @@ install(DIRECTORY ${PUBLIC_HDR_DIR}/imageio-lite DESTINATION include)
|
||||
# ==================================================================================================
|
||||
# Tests
|
||||
# ==================================================================================================
|
||||
if (NOT ANDROID AND NOT WEBGL AND NOT IOS)
|
||||
if (NOT ANDROID AND NOT WASM AND NOT IOS)
|
||||
add_executable(test_${TARGET} tests/test_imageio-lite.cpp)
|
||||
target_link_libraries(test_${TARGET} PRIVATE ${TARGET} image gtest)
|
||||
set_target_properties(test_${TARGET} PROPERTIES FOLDER Tests)
|
||||
|
||||
@@ -60,7 +60,7 @@ endfunction()
|
||||
add_testfile(color_grid_uastc_zstd.ktx2)
|
||||
add_testfile(lightroom_ibl.ktx)
|
||||
|
||||
if (FILAMENT_BUILD_TESTING AND NOT ANDROID AND NOT WEBGL AND NOT IOS)
|
||||
if (FILAMENT_BUILD_TESTING AND NOT ANDROID AND NOT WASM AND NOT IOS)
|
||||
add_executable(test_ktxreader tests/test_ktxreader.cpp ${TESTFILES})
|
||||
target_link_libraries(test_ktxreader PRIVATE ${TARGET} gtest)
|
||||
set_target_properties(test_ktxreader PROPERTIES FOLDER Tests)
|
||||
|
||||
@@ -115,7 +115,7 @@ if (APPLE)
|
||||
list(APPEND SRCS src/darwin/Systrace.cpp)
|
||||
list(APPEND SRCS src/darwin/Tracing.cpp)
|
||||
endif()
|
||||
if (WEBGL)
|
||||
if (WASM)
|
||||
list(APPEND SRCS src/web/Path.cpp)
|
||||
endif()
|
||||
|
||||
@@ -208,12 +208,12 @@ if (FILAMENT_BUILD_TESTING)
|
||||
test/test_Status.cpp
|
||||
)
|
||||
|
||||
if (WEBGL_PTHREADS)
|
||||
if (WASM_PTHREADS)
|
||||
target_compile_definitions(${TARGET} PUBLIC -DFILAMENT_WASM_THREADS)
|
||||
endif()
|
||||
|
||||
# The Path tests are platform-specific
|
||||
if (NOT WEBGL)
|
||||
if (NOT WASM)
|
||||
if (WIN32)
|
||||
list(APPEND TEST_SRCS test/test_WinPath.cpp)
|
||||
else()
|
||||
@@ -231,7 +231,7 @@ endif()
|
||||
# Benchmarks
|
||||
# ==================================================================================================
|
||||
|
||||
if (FILAMENT_BUILD_TESTING AND NOT WEBGL)
|
||||
if (FILAMENT_BUILD_TESTING AND NOT WASM)
|
||||
|
||||
add_library(benchmark_${TARGET}_callee SHARED benchmark/benchmark_callee.cpp)
|
||||
set_target_properties(benchmark_${TARGET}_callee PROPERTIES FOLDER Benchmarks)
|
||||
|
||||
@@ -55,10 +55,19 @@ public:
|
||||
static constexpr size_t getArrayCount() noexcept { return kArrayCount; }
|
||||
|
||||
// Size needed to store "size" array elements
|
||||
static size_t getNeededSize(size_t size) noexcept {
|
||||
static size_t getNeededSize(size_t const size) noexcept {
|
||||
return getOffset(kArrayCount - 1, size) + sizeof(TypeAt<kArrayCount - 1>) * size;
|
||||
}
|
||||
|
||||
template<typename OtherAllocator>
|
||||
void copyRange(size_t destOffset,
|
||||
const StructureOfArraysBase<OtherAllocator, Elements...>& src, size_t srcOffset, size_t count) {
|
||||
assert(destOffset + count <= mCapacity);
|
||||
assert(srcOffset + count <= src.mSize);
|
||||
Copier<OtherAllocator> copier{this, src, destOffset, srcOffset, count};
|
||||
const_cast<StructureOfArraysBase*>(this)->for_each_index(mArrays, copier);
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------------------------
|
||||
|
||||
class IteratorValue;
|
||||
@@ -77,21 +86,28 @@ public:
|
||||
friend class IteratorValue;
|
||||
friend iterator;
|
||||
friend const_iterator;
|
||||
friend class StructureOfArraysBase;
|
||||
StructureOfArraysBase* const UTILS_RESTRICT soa;
|
||||
size_t const index;
|
||||
|
||||
IteratorValueRef(StructureOfArraysBase* soa, size_t index) : soa(soa), index(index) { }
|
||||
IteratorValueRef(StructureOfArraysBase* soa, size_t const index) : soa(soa), index(index) { }
|
||||
|
||||
// assigns a value_type to a reference (i.e. assigns to what's pointed to by the reference)
|
||||
template<size_t ... Is>
|
||||
IteratorValueRef& assign(IteratorValue const& rhs, std::index_sequence<Is...>);
|
||||
|
||||
template<size_t ... Is>
|
||||
IteratorValueRef& assign(Structure const& rhs, std::index_sequence<Is...>);
|
||||
|
||||
template<size_t ... Is>
|
||||
IteratorValueRef& assign(Structure&& rhs, std::index_sequence<Is...>) noexcept;
|
||||
|
||||
// assigns a value_type to a reference (i.e. assigns to what's pointed to by the reference)
|
||||
template<size_t ... Is>
|
||||
IteratorValueRef& assign(IteratorValue&& rhs, std::index_sequence<Is...>) noexcept;
|
||||
|
||||
// objects pointed to by reference can be swapped, so provide the special swap() function.
|
||||
friend void swap(IteratorValueRef lhs, IteratorValueRef rhs) {
|
||||
friend void swap(IteratorValueRef const lhs, IteratorValueRef const rhs) {
|
||||
lhs.soa->swap(lhs.index, rhs.index);
|
||||
}
|
||||
|
||||
@@ -99,6 +115,9 @@ public:
|
||||
// references can be created by copy-assignment only
|
||||
IteratorValueRef(IteratorValueRef const& rhs) noexcept : soa(rhs.soa), index(rhs.index) { }
|
||||
|
||||
IteratorValueRef& operator=(Structure const& rhs);
|
||||
IteratorValueRef& operator=(Structure&& rhs) noexcept;
|
||||
|
||||
// copy the content of a reference to the content of this one
|
||||
IteratorValueRef& operator=(IteratorValueRef const& rhs);
|
||||
|
||||
@@ -120,6 +139,10 @@ public:
|
||||
template<size_t I> TypeAt<I>& get() { return soa->elementAt<I>(index); }
|
||||
};
|
||||
|
||||
IteratorValueRef operator[](size_t index) noexcept {
|
||||
return {this, index};
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* The value_type of iterator. This is basically the "structure" of the SoA.
|
||||
@@ -175,7 +198,7 @@ public:
|
||||
CVQualifiedSOAPointer soa; // don't use restrict, can have aliases if multiple iterators are created
|
||||
size_t index;
|
||||
|
||||
Iterator(CVQualifiedSOAPointer soa, size_t index) : soa(soa), index(index) {}
|
||||
Iterator(CVQualifiedSOAPointer soa, size_t const index) : soa(soa), index(index) {}
|
||||
|
||||
public:
|
||||
using value_type = IteratorValue;
|
||||
@@ -196,10 +219,10 @@ public:
|
||||
|
||||
Iterator& operator++() { ++index; return *this; }
|
||||
Iterator& operator--() { --index; return *this; }
|
||||
Iterator& operator+=(size_t n) { index += n; return *this; }
|
||||
Iterator& operator-=(size_t n) { index -= n; return *this; }
|
||||
Iterator operator+(size_t n) const { return { soa, index + n }; }
|
||||
Iterator operator-(size_t n) const { return { soa, index - n }; }
|
||||
Iterator& operator+=(size_t const n) { index += n; return *this; }
|
||||
Iterator& operator-=(size_t const n) { index -= n; return *this; }
|
||||
Iterator operator+(size_t const n) const { return { soa, index + n }; }
|
||||
Iterator operator-(size_t const n) const { return { soa, index - n }; }
|
||||
difference_type operator-(Iterator const& rhs) const { return index - rhs.index; }
|
||||
bool operator==(Iterator const& rhs) const { return (index == rhs.index); }
|
||||
bool operator!=(Iterator const& rhs) const { return (index != rhs.index); }
|
||||
@@ -222,7 +245,7 @@ public:
|
||||
|
||||
StructureOfArraysBase() = default;
|
||||
|
||||
explicit StructureOfArraysBase(size_t capacity) {
|
||||
explicit StructureOfArraysBase(size_t const capacity) {
|
||||
setCapacity(capacity);
|
||||
}
|
||||
|
||||
@@ -270,7 +293,7 @@ public:
|
||||
// set the capacity of the array. the capacity cannot be smaller than the current size,
|
||||
// the call is a no-op in that case.
|
||||
UTILS_NOINLINE
|
||||
void setCapacity(size_t capacity) {
|
||||
void setCapacity(size_t const capacity) {
|
||||
// allocate enough space for "capacity" elements of each array
|
||||
// capacity cannot change when optional storage is specified
|
||||
if (capacity >= mSize) {
|
||||
@@ -292,7 +315,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
void ensureCapacity(size_t needed) {
|
||||
void ensureCapacity(size_t const needed) {
|
||||
if (UTILS_UNLIKELY(needed > mCapacity)) {
|
||||
// not enough space, increase the capacity
|
||||
const size_t capacity = (needed > SIZE_MAX / 3) ? needed : (needed * 3 + 1) / 2;
|
||||
@@ -305,7 +328,7 @@ public:
|
||||
// If the arrays don't have enough capacity, the capacity is increased accordingly
|
||||
// (the capacity is set to 3/2 of the asked size).
|
||||
UTILS_NOINLINE
|
||||
void resize(size_t needed) {
|
||||
void resize(size_t const needed) {
|
||||
ensureCapacity(needed);
|
||||
resizeNoCheck(needed);
|
||||
if (needed <= mCapacity) {
|
||||
@@ -318,7 +341,7 @@ public:
|
||||
}
|
||||
|
||||
|
||||
inline void swap(size_t i, size_t j) noexcept {
|
||||
void swap(size_t i, size_t j) noexcept {
|
||||
forEach([i, j](auto p) {
|
||||
using std::swap;
|
||||
swap(p[i], p[j]);
|
||||
@@ -326,7 +349,7 @@ public:
|
||||
}
|
||||
|
||||
// remove and destroy the last element of each array
|
||||
inline void pop_back() noexcept {
|
||||
void pop_back() noexcept {
|
||||
if (mSize) {
|
||||
destroy_each(mSize - 1, mSize);
|
||||
mSize--;
|
||||
@@ -483,80 +506,97 @@ public:
|
||||
using Type = typename SoA::template TypeAt<E>;
|
||||
|
||||
UTILS_ALWAYS_INLINE Field& operator = (Field&& rhs) noexcept {
|
||||
soa.elementAt<E>(i) = soa.elementAt<E>(rhs.i);
|
||||
soa.template elementAt<E>(i) = soa.template elementAt<E>(rhs.i);
|
||||
return *this;
|
||||
}
|
||||
|
||||
// auto-conversion to the field's type
|
||||
UTILS_ALWAYS_INLINE operator Type&() noexcept {
|
||||
return soa.elementAt<E>(i);
|
||||
return soa.template elementAt<E>(i);
|
||||
}
|
||||
UTILS_ALWAYS_INLINE operator Type const&() const noexcept {
|
||||
return soa.elementAt<E>(i);
|
||||
return soa.template elementAt<E>(i);
|
||||
}
|
||||
// dereferencing the selected field
|
||||
UTILS_ALWAYS_INLINE Type& operator ->() noexcept {
|
||||
return soa.elementAt<E>(i);
|
||||
return soa.template elementAt<E>(i);
|
||||
}
|
||||
UTILS_ALWAYS_INLINE Type const& operator ->() const noexcept {
|
||||
return soa.elementAt<E>(i);
|
||||
return soa.template elementAt<E>(i);
|
||||
}
|
||||
// address-of the selected field
|
||||
UTILS_ALWAYS_INLINE Type* operator &() noexcept {
|
||||
return &soa.elementAt<E>(i);
|
||||
return &soa.template elementAt<E>(i);
|
||||
}
|
||||
UTILS_ALWAYS_INLINE Type const* operator &() const noexcept {
|
||||
return &soa.elementAt<E>(i);
|
||||
return &soa.template elementAt<E>(i);
|
||||
}
|
||||
// assignment to the field
|
||||
UTILS_ALWAYS_INLINE Type const& operator = (Type const& other) noexcept {
|
||||
return (soa.elementAt<E>(i) = other);
|
||||
return (soa.template elementAt<E>(i) = other);
|
||||
}
|
||||
UTILS_ALWAYS_INLINE Type const& operator = (Type&& other) noexcept {
|
||||
return (soa.elementAt<E>(i) = std::forward<Type>(other));
|
||||
return (soa.template elementAt<E>(i) = std::forward<Type>(other));
|
||||
}
|
||||
// comparisons
|
||||
UTILS_ALWAYS_INLINE bool operator==(Type const& other) const {
|
||||
return (soa.elementAt<E>(i) == other);
|
||||
return (soa.template elementAt<E>(i) == other);
|
||||
}
|
||||
UTILS_ALWAYS_INLINE bool operator!=(Type const& other) const {
|
||||
return (soa.elementAt<E>(i) != other);
|
||||
return (soa.template elementAt<E>(i) != other);
|
||||
}
|
||||
// calling the field
|
||||
template <typename ... ARGS>
|
||||
UTILS_ALWAYS_INLINE decltype(auto) operator()(ARGS&& ... args) noexcept {
|
||||
return soa.elementAt<E>(i)(std::forward<ARGS>(args)...);
|
||||
return soa.template elementAt<E>(i)(std::forward<ARGS>(args)...);
|
||||
}
|
||||
template <typename ... ARGS>
|
||||
UTILS_ALWAYS_INLINE decltype(auto) operator()(ARGS&& ... args) const noexcept {
|
||||
return soa.elementAt<E>(i)(std::forward<ARGS>(args)...);
|
||||
return soa.template elementAt<E>(i)(std::forward<ARGS>(args)...);
|
||||
}
|
||||
};
|
||||
|
||||
private:
|
||||
template<typename OtherAllocator>
|
||||
struct Copier {
|
||||
StructureOfArraysBase* dest;
|
||||
const StructureOfArraysBase<OtherAllocator, Elements...>& src;
|
||||
size_t destOffset;
|
||||
size_t srcOffset;
|
||||
size_t count;
|
||||
|
||||
template<size_t I>
|
||||
void operator()(TypeAt<I>* destPtr) const {
|
||||
using ElementType = TypeAt<I>;
|
||||
ElementType const* const s = std::get<I>(src.mArrays) + srcOffset;
|
||||
ElementType* const d = destPtr + destOffset;
|
||||
std::copy_n(s, count, d);
|
||||
}
|
||||
};
|
||||
|
||||
template<std::size_t I = 0, typename FuncT, typename... Tp>
|
||||
inline std::enable_if_t<I == sizeof...(Tp), void>
|
||||
std::enable_if_t<I == sizeof...(Tp), void>
|
||||
for_each(std::tuple<Tp...>&, FuncT) {}
|
||||
|
||||
template<std::size_t I = 0, typename FuncT, typename... Tp>
|
||||
inline std::enable_if_t<I < sizeof...(Tp), void>
|
||||
std::enable_if_t<I < sizeof...(Tp), void>
|
||||
for_each(std::tuple<Tp...>& t, FuncT f) {
|
||||
f(I, std::get<I>(t));
|
||||
for_each<I + 1, FuncT, Tp...>(t, f);
|
||||
}
|
||||
|
||||
template<std::size_t I = 0, typename FuncT, typename... Tp>
|
||||
inline std::enable_if_t<I == sizeof...(Tp), void>
|
||||
std::enable_if_t<I == sizeof...(Tp), void>
|
||||
for_each_index(std::tuple<Tp...>&, FuncT) {}
|
||||
|
||||
template<std::size_t I = 0, typename FuncT, typename... Tp>
|
||||
inline std::enable_if_t<I < sizeof...(Tp), void>
|
||||
std::enable_if_t<I < sizeof...(Tp), void>
|
||||
for_each_index(std::tuple<Tp...>& t, FuncT f) {
|
||||
f.template operator()<I>(std::get<I>(t));
|
||||
for_each_index<I + 1, FuncT, Tp...>(t, f);
|
||||
}
|
||||
|
||||
inline void resizeNoCheck(size_t needed) noexcept {
|
||||
void resizeNoCheck(size_t const needed) noexcept {
|
||||
assert(mCapacity >= needed);
|
||||
if (needed < mSize) {
|
||||
// we shrink the arrays
|
||||
@@ -570,12 +610,12 @@ private:
|
||||
}
|
||||
|
||||
// this calculates the offset adjusted for all data alignment of a given array
|
||||
static inline size_t getOffset(size_t index, size_t capacity) noexcept {
|
||||
static size_t getOffset(size_t index, size_t const capacity) noexcept {
|
||||
auto offsets = getOffsets(capacity);
|
||||
return offsets[index];
|
||||
}
|
||||
|
||||
static inline std::array<size_t, kArrayCount> getOffsets(size_t capacity) noexcept {
|
||||
static std::array<size_t, kArrayCount> getOffsets(size_t capacity) noexcept {
|
||||
// compute the required size of each array
|
||||
const size_t sizes[] = { (sizeof(Elements) * capacity)... };
|
||||
|
||||
@@ -618,7 +658,7 @@ private:
|
||||
});
|
||||
}
|
||||
|
||||
void move_each(void* buffer, size_t capacity) noexcept {
|
||||
void move_each(void* buffer, size_t const capacity) noexcept {
|
||||
auto offsets = getOffsets(capacity);
|
||||
size_t index = 0;
|
||||
if (mSize) {
|
||||
@@ -653,7 +693,7 @@ private:
|
||||
// update the pointers
|
||||
for_each(mArrays, [buffer, &offsets](size_t i, auto&& p) {
|
||||
using Type = std::remove_reference_t<decltype(p)>;
|
||||
p = Type((char*)buffer + offsets[i]);
|
||||
p = Type(static_cast<char*>(buffer) + offsets[i]);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -668,7 +708,6 @@ private:
|
||||
|
||||
|
||||
template<typename Allocator, typename... Elements>
|
||||
inline
|
||||
typename StructureOfArraysBase<Allocator, Elements...>::IteratorValueRef&
|
||||
StructureOfArraysBase<Allocator, Elements...>::IteratorValueRef::operator=(
|
||||
IteratorValueRef const& rhs) {
|
||||
@@ -676,16 +715,28 @@ StructureOfArraysBase<Allocator, Elements...>::IteratorValueRef::operator=(
|
||||
}
|
||||
|
||||
template<typename Allocator, typename... Elements>
|
||||
inline
|
||||
typename StructureOfArraysBase<Allocator, Elements...>::IteratorValueRef&
|
||||
StructureOfArraysBase<Allocator, Elements...>::IteratorValueRef::operator=(
|
||||
IteratorValueRef&& rhs) noexcept {
|
||||
return operator=(IteratorValue(rhs));
|
||||
}
|
||||
|
||||
template<typename Allocator, typename... Elements>
|
||||
typename StructureOfArraysBase<Allocator, Elements...>::IteratorValueRef&
|
||||
StructureOfArraysBase<Allocator, Elements...>::IteratorValueRef::operator=(
|
||||
Structure const& rhs) {
|
||||
return assign(rhs, std::make_index_sequence<kArrayCount>());
|
||||
}
|
||||
|
||||
template<typename Allocator, typename... Elements>
|
||||
typename StructureOfArraysBase<Allocator, Elements...>::IteratorValueRef&
|
||||
StructureOfArraysBase<Allocator, Elements...>::IteratorValueRef::operator=(
|
||||
Structure&& rhs) noexcept {
|
||||
return assign(std::move(rhs), std::make_index_sequence<kArrayCount>());
|
||||
}
|
||||
|
||||
template<typename Allocator, typename... Elements>
|
||||
template<size_t... Is>
|
||||
inline
|
||||
typename StructureOfArraysBase<Allocator, Elements...>::IteratorValueRef&
|
||||
StructureOfArraysBase<Allocator, Elements...>::IteratorValueRef::assign(
|
||||
IteratorValue const& rhs, std::index_sequence<Is...>) {
|
||||
@@ -696,7 +747,24 @@ StructureOfArraysBase<Allocator, Elements...>::IteratorValueRef::assign(
|
||||
|
||||
template<typename Allocator, typename... Elements>
|
||||
template<size_t... Is>
|
||||
inline
|
||||
typename StructureOfArraysBase<Allocator, Elements...>::IteratorValueRef&
|
||||
StructureOfArraysBase<Allocator, Elements...>::IteratorValueRef::assign(
|
||||
Structure const& rhs, std::index_sequence<Is...>) {
|
||||
auto UTILS_UNUSED l = {(soa->template elementAt<Is>(index) = std::get<Is>(rhs), 0)...};
|
||||
return *this;
|
||||
}
|
||||
|
||||
template<typename Allocator, typename... Elements>
|
||||
template<size_t... Is>
|
||||
typename StructureOfArraysBase<Allocator, Elements...>::IteratorValueRef&
|
||||
StructureOfArraysBase<Allocator, Elements...>::IteratorValueRef::assign(
|
||||
Structure&& rhs, std::index_sequence<Is...>) noexcept {
|
||||
auto UTILS_UNUSED l = {(soa->template elementAt<Is>(index) = std::move(std::get<Is>(rhs)), 0)...};
|
||||
return *this;
|
||||
}
|
||||
|
||||
template<typename Allocator, typename... Elements>
|
||||
template<size_t... Is>
|
||||
typename StructureOfArraysBase<Allocator, Elements...>::IteratorValueRef&
|
||||
StructureOfArraysBase<Allocator, Elements...>::IteratorValueRef::assign(
|
||||
IteratorValue&& rhs, std::index_sequence<Is...>) noexcept {
|
||||
|
||||
@@ -19,6 +19,11 @@
|
||||
#include <utils/StructureOfArrays.h>
|
||||
#include <math/vec4.h>
|
||||
|
||||
#include <cstdint>
|
||||
#include <cstdlib>
|
||||
#include <memory>
|
||||
#include <utility>
|
||||
|
||||
using namespace filament::math;
|
||||
using namespace utils;
|
||||
|
||||
@@ -71,7 +76,7 @@ TEST(StructureOfArraysTest, Iterator) {
|
||||
EXPECT_EQ(soa.elementAt<0>(2), 3.0f);
|
||||
|
||||
for (size_t i = 0; i < 8; i++) {
|
||||
soa.elementAt<0>(i) = (float)std::rand();
|
||||
soa.elementAt<0>(i) = float(std::rand());
|
||||
soa.elementAt<1>(i) = soa.elementAt<0>(i) * 2;
|
||||
soa.elementAt<2>(i) = soa.elementAt<0>(i) * 4;
|
||||
}
|
||||
@@ -103,7 +108,7 @@ TEST(StructureOfArraysTest, Simple) {
|
||||
soa.elementAt<2>(i) = i * 4;
|
||||
}
|
||||
|
||||
size_t capacity = soa.capacity();
|
||||
size_t const capacity = soa.capacity();
|
||||
|
||||
// check that each array doesn't overlap the previous one
|
||||
EXPECT_TRUE((void*)soa.data<1>() >= (void*)(soa.data<0>() + capacity));
|
||||
@@ -183,3 +188,42 @@ TEST(StructureOfArraysTest, MoveOnly) {
|
||||
EXPECT_EQ(*soa.elementAt<1>(1).get(), 2);
|
||||
}
|
||||
|
||||
TEST(StructureOfArraysTest, CopyRange) {
|
||||
StructureOfArrays<float, double, TestFloat4> soa1;
|
||||
StructureOfArrays<float, double, TestFloat4> soa2;
|
||||
|
||||
soa1.setCapacity(10);
|
||||
soa1.resize(5);
|
||||
for (size_t i = 0; i < 5; i++) {
|
||||
soa1.elementAt<0>(i) = i;
|
||||
soa1.elementAt<1>(i) = i * 2;
|
||||
soa1.elementAt<2>(i) = i * 4;
|
||||
}
|
||||
|
||||
soa2.setCapacity(10);
|
||||
soa2.resize(5);
|
||||
|
||||
soa2.copyRange(1, soa1, 1, 3);
|
||||
|
||||
EXPECT_EQ(soa2.elementAt<0>(1), 1.0f);
|
||||
EXPECT_EQ(soa2.elementAt<1>(1), 2.0);
|
||||
EXPECT_EQ(soa2.elementAt<2>(1), TestFloat4{ 4.0f });
|
||||
|
||||
EXPECT_EQ(soa2.elementAt<0>(3), 3.0f);
|
||||
EXPECT_EQ(soa2.elementAt<1>(3), 6.0);
|
||||
EXPECT_EQ(soa2.elementAt<2>(3), TestFloat4{ 12.0f });
|
||||
}
|
||||
|
||||
TEST(StructureOfArraysTest, AssignTuple) {
|
||||
StructureOfArrays<float, double, TestFloat4> soa;
|
||||
soa.setCapacity(10);
|
||||
soa.resize(5);
|
||||
|
||||
auto tuple = std::make_tuple(1.0f, 2.0, TestFloat4{4.0f});
|
||||
soa[2] = tuple;
|
||||
|
||||
EXPECT_EQ(soa.elementAt<0>(2), 1.0f);
|
||||
EXPECT_EQ(soa.elementAt<1>(2), 2.0);
|
||||
EXPECT_EQ(soa.elementAt<2>(2), TestFloat4{ 4.0f });
|
||||
}
|
||||
|
||||
|
||||
@@ -57,7 +57,7 @@ install(DIRECTORY ${PUBLIC_HDR_DIR}/viewer DESTINATION include)
|
||||
# ==================================================================================================
|
||||
# Tests
|
||||
# ==================================================================================================
|
||||
if (FILAMENT_BUILD_TESTING AND NOT ANDROID AND NOT WEBGL AND NOT IOS)
|
||||
if (FILAMENT_BUILD_TESTING AND NOT ANDROID AND NOT WASM AND NOT IOS)
|
||||
add_executable(test_settings tests/test_settings.cpp)
|
||||
target_link_libraries(test_settings PRIVATE ${TARGET} gtest)
|
||||
set_target_properties(test_settings PROPERTIES FOLDER Tests)
|
||||
|
||||
+4
@@ -3,6 +3,10 @@ option(FILAMENT_USE_EXTERNAL_ABSL "Use find_package to locate an external Abseil
|
||||
if (FILAMENT_USE_EXTERNAL_ABSL)
|
||||
find_package(absl CONFIG QUIET)
|
||||
else()
|
||||
# This will skip checks that sometimes fail due to enviornment incompatibility on Linxu. Abseil can
|
||||
# still be built without this.
|
||||
set(ABSL_INTERNAL_AT_LEAST_CXX17 TRUE CACHE BOOL "Forced in wrapper")
|
||||
set(ABSL_INTERNAL_AT_LEAST_CXX20 TRUE CACHE BOOL "Forced in wrapper")
|
||||
add_subdirectory(../ "${CMAKE_CURRENT_BINARY_DIR}/abseil")
|
||||
endif()
|
||||
|
||||
|
||||
Vendored
+2
@@ -21,6 +21,8 @@ if(PLATFORM_NAME STREQUAL "iphonesimulator")
|
||||
add_definitions(-DFILAMENT_IOS_SIMULATOR)
|
||||
# The simulator only supports iOS >= 13.0
|
||||
set(IOS_MIN_TARGET "13.0")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -target ${IOS_ARCH}-apple-ios${IOS_MIN_TARGET}-simulator")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -target ${IOS_ARCH}-apple-ios${IOS_MIN_TARGET}-simulator")
|
||||
endif()
|
||||
|
||||
SET(CMAKE_SYSTEM_NAME Darwin)
|
||||
|
||||
Vendored
+1
-2
@@ -52,8 +52,6 @@ if (ANDROID AND FILAMENT_BUILD_FILAMAT)
|
||||
tint_lang_spirv_intrinsic
|
||||
tint_lang_spirv_ir
|
||||
tint_lang_spirv_reader
|
||||
tint_lang_spirv_reader_ast_lower
|
||||
tint_lang_spirv_reader_ast_parser
|
||||
tint_lang_spirv_reader_common
|
||||
tint_lang_spirv_reader_lower
|
||||
tint_lang_spirv_reader_parser
|
||||
@@ -77,6 +75,7 @@ if (ANDROID AND FILAMENT_BUILD_FILAMAT)
|
||||
tint_utils_rtti
|
||||
tint_utils_strconv
|
||||
tint_utils_symbol
|
||||
tint_utils_system
|
||||
tint_utils_text
|
||||
tint_utils_text_generator
|
||||
)
|
||||
|
||||
+2
-2
@@ -15,11 +15,11 @@ set(WEBP_BUILD_WEBPMUX OFF)
|
||||
set(WEBP_BUILD_EXTRAS OFF)
|
||||
set(WEBP_BUILD_FUZZTEST OFF)
|
||||
|
||||
if (WEBGL)
|
||||
if (WASM)
|
||||
set(WEBP_BUILD_WEBP_JS ON)
|
||||
set(WEBP_ENABLE_SIMD OFF)
|
||||
# ensure non-empty config var value
|
||||
if (WEBGL_PTHREADS)
|
||||
if (WASM_PTHREADS)
|
||||
set(WEBP_USE_THREAD ON)
|
||||
else()
|
||||
set(WEBP_USE_THREAD OFF)
|
||||
|
||||
+6
-6
@@ -5,7 +5,7 @@ This directory contains the web-based samples, tutorials, and the JavaScript wra
|
||||
## Structure
|
||||
|
||||
- `examples/`
|
||||
Contains the source for the WebGL tutorials, HTML samples, materials, and assets.
|
||||
Contains the source for the Web tutorials, HTML samples, materials, and assets.
|
||||
These examples use `filament.js` and `filament.wasm` to demonstrate various features of the engine.
|
||||
|
||||
- `filament-js/`
|
||||
@@ -13,7 +13,7 @@ This directory contains the web-based samples, tutorials, and the JavaScript wra
|
||||
|
||||
## Building the Web Examples
|
||||
|
||||
To build the WebGL targets and compile all required materials and assets, you will need the Emscripten SDK installed and activated.
|
||||
To build the Web targets and compile all required materials and assets, you will need the Emscripten SDK installed and activated.
|
||||
|
||||
1. **Activate Emscripten SDK:**
|
||||
Make sure you have `EMSDK` in your environment.
|
||||
@@ -24,15 +24,15 @@ To build the WebGL targets and compile all required materials and assets, you wi
|
||||
```
|
||||
|
||||
2. **Run the Build Script:**
|
||||
From the root directory of the repository, execute the build script targeting WebGL:
|
||||
From the root directory of the repository, execute the build script targeting Web:
|
||||
```bash
|
||||
./build.sh -p webgl release
|
||||
./build.sh -p wasm release
|
||||
```
|
||||
|
||||
This will:
|
||||
- Compile the C++ engine to `filament.wasm` and `filament.js`.
|
||||
- Build all materials (`.mat` to `.filamat`) and process textures required by the examples.
|
||||
- Output everything into `out/cmake-webgl-release/examples/`.
|
||||
- Output everything into `out/cmake-wasm-release/examples/`.
|
||||
|
||||
## Running the Examples
|
||||
|
||||
@@ -71,7 +71,7 @@ If you want your web sample or tutorial to appear on the official Filament docum
|
||||
Add your generated `.html` or `.md` file to the mapping in `docs_src/build/duplicates.json`. This
|
||||
tells the documentation build script to copy your sample into the `mdbook` structure.
|
||||
```json
|
||||
"out/cmake-webgl-release/web/examples/examples/your_sample/your_sample.html": {
|
||||
"out/cmake-wasm-release/web/examples/examples/your_sample/your_sample.html": {
|
||||
"dest": "samples/web/your_sample.md"
|
||||
}
|
||||
```
|
||||
|
||||
@@ -17,6 +17,9 @@ function(build_material MAT_FILE TARGET_DIR MAT_NAME OUT_LIST)
|
||||
if (NOT CMAKE_BUILD_TYPE MATCHES Release)
|
||||
set(MATC_FLAGS -g ${MATC_FLAGS})
|
||||
endif()
|
||||
if (FILAMENT_SUPPORTS_WEBGPU)
|
||||
set(MATC_FLAGS -a webgpu ${MATC_FLAGS})
|
||||
endif()
|
||||
set(mat_src "${CMAKE_CURRENT_SOURCE_DIR}/${MAT_FILE}")
|
||||
set(output_path "${SERVER_DIR}/${TARGET_DIR}/${MAT_NAME}.filamat")
|
||||
add_custom_command(
|
||||
@@ -87,7 +90,7 @@ function(add_envmap SOURCE TARGET TARGET_DIR OUT_LIST)
|
||||
WORKING_DIRECTORY "${SERVER_DIR}/${TARGET_DIR}"
|
||||
MAIN_DEPENDENCY ${source_envmap}
|
||||
DEPENDS cmgen)
|
||||
|
||||
|
||||
set(${OUT_LIST} ${${OUT_LIST}} ${target_skybox} ${target_skybox_tiny} ${target_envmap} PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
|
||||
@@ -4,7 +4,8 @@ material {
|
||||
color
|
||||
],
|
||||
shadingModel : unlit,
|
||||
culling : none
|
||||
culling : none,
|
||||
featureLevel: 0
|
||||
}
|
||||
|
||||
fragment {
|
||||
|
||||
@@ -42,7 +42,7 @@ def find_examples_dir():
|
||||
examples_dir = find_examples_dir()
|
||||
|
||||
if not examples_dir:
|
||||
print("Could not find the built examples directory in out/. Please build the webgl target first.", file=sys.stderr)
|
||||
print("Could not find the built examples directory in out/. Please build the wasm target first.", file=sys.stderr)
|
||||
# fallback to web/examples for testing, though it won't have the built assets
|
||||
examples_dir = str(SCRIPT_DIR)
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ set(CPP_SRC
|
||||
# The emcc options are not documented well, the best place to find them is the source:
|
||||
# https://github.com/kripken/emscripten/blob/main/src/settings.js
|
||||
|
||||
if (WEBGL_PTHREADS)
|
||||
if (WASM_PTHREADS)
|
||||
set(COPTS "${COPTS} -pthread")
|
||||
set(LOPTS "${LOPTS} -pthread")
|
||||
endif()
|
||||
@@ -31,6 +31,7 @@ set(COPTS "${COPTS} -DEMSCRIPTEN_HAS_UNBOUND_TYPE_NAMES=0")
|
||||
set(LOPTS "${LOPTS} --bind")
|
||||
set(LOPTS "${LOPTS} -s ALLOW_MEMORY_GROWTH=1")
|
||||
set(LOPTS "${LOPTS} -s EXPORTED_FUNCTIONS=['_malloc','_free']")
|
||||
set(LOPTS "${LOPTS} -s EXPORTED_RUNTIME_METHODS=['HEAP8','HEAP16','HEAP32','HEAPU8','HEAPU16','HEAPU32','HEAPF32','HEAPF64']")
|
||||
set(LOPTS "${LOPTS} -s MODULARIZE=1")
|
||||
set(LOPTS "${LOPTS} -s EXPORT_NAME=Filament")
|
||||
set(LOPTS "${LOPTS} -s USE_WEBGL2=1")
|
||||
@@ -38,6 +39,10 @@ set(LOPTS "${LOPTS} -s FULL_ES3")
|
||||
set(LOPTS "${LOPTS} -s MIN_WEBGL_VERSION=2")
|
||||
set(LOPTS "${LOPTS} -s MAX_WEBGL_VERSION=2")
|
||||
|
||||
if (FILAMENT_SUPPORTS_WEBGPU)
|
||||
set(LOPTS "${LOPTS} --use-port=emdawnwebgpu")
|
||||
endif()
|
||||
|
||||
foreach (JS_FILENAME ${EXTERN_POSTJS_SRC})
|
||||
set(LOPTS "${LOPTS} --extern-post-js ${JS_FILENAME}")
|
||||
endforeach()
|
||||
|
||||
@@ -22,7 +22,7 @@ To publish a new package to npm, do the following.
|
||||
3. Edit the version number in `package.json`. You cannot publish the same version more than once.
|
||||
4. From the root folder in your Filament repo, do:
|
||||
```
|
||||
./build.sh -ap webgl release
|
||||
./build.sh -ap wasm release
|
||||
./build.sh -ap all release
|
||||
```
|
||||
5. Make a commit and a tag whose label is the 3-tiered version number prefixed with a `v`:
|
||||
@@ -36,7 +36,7 @@ git commit && git tag -a v{XX}.{YY}.{ZZ}
|
||||
:---: | :---
|
||||
|
||||
```
|
||||
cd out/cmake-webgl-release/web/filament-js
|
||||
cd out/cmake-wasm-release/web/filament-js
|
||||
npm publish --dry-run
|
||||
```
|
||||
8. If the output of the dry run looks okay to you (double check the version number!), then finally
|
||||
|
||||
@@ -80,36 +80,49 @@ Filament.loadClassExtensions = function() {
|
||||
/// options ::argument:: optional WebGL 2.0 context configuration
|
||||
/// ::retval:: an instance of [Engine]
|
||||
Filament.Engine.create = function (canvas, options, config) {
|
||||
const defaults = {
|
||||
majorVersion: 2,
|
||||
minorVersion: 0,
|
||||
antialias: false,
|
||||
depth: true,
|
||||
alpha: false
|
||||
};
|
||||
options = Object.assign(defaults, options);
|
||||
if (!canvas.id) {
|
||||
canvas.id = 'filament-canvas-' + Math.random().toString(36).substr(2, 9);
|
||||
}
|
||||
const canvasId = '#' + canvas.id;
|
||||
|
||||
// Create the WebGL 2.0 context.
|
||||
const ctx = canvas.getContext("webgl2", options);
|
||||
const backend = (options && options.backend !== undefined) ?
|
||||
options.backend : Filament.Backend.DEFAULT;
|
||||
|
||||
// Enable all desired extensions by calling getExtension on each one.
|
||||
ctx.getExtension('WEBGL_compressed_texture_s3tc');
|
||||
ctx.getExtension('WEBGL_compressed_texture_s3tc_srgb');
|
||||
ctx.getExtension('WEBGL_compressed_texture_astc');
|
||||
ctx.getExtension('WEBGL_compressed_texture_etc');
|
||||
if (backend !== Filament.Backend.WEBGPU) {
|
||||
const defaults = {
|
||||
majorVersion: 2,
|
||||
minorVersion: 0,
|
||||
antialias: false,
|
||||
depth: true,
|
||||
alpha: false
|
||||
};
|
||||
const glOptions = Object.assign(defaults, options);
|
||||
|
||||
// These transient globals are used temporarily during Engine construction.
|
||||
window.filament_glOptions = options;
|
||||
window.filament_glContext = ctx;
|
||||
// Create the WebGL 2.0 context.
|
||||
const ctx = canvas.getContext("webgl2", glOptions);
|
||||
|
||||
// Enable all desired extensions by calling getExtension on each one.
|
||||
ctx.getExtension('WEBGL_compressed_texture_s3tc');
|
||||
ctx.getExtension('WEBGL_compressed_texture_s3tc_srgb');
|
||||
ctx.getExtension('WEBGL_compressed_texture_astc');
|
||||
ctx.getExtension('WEBGL_compressed_texture_etc');
|
||||
|
||||
// These transient globals are used temporarily during Engine construction.
|
||||
window.filament_glOptions = glOptions;
|
||||
window.filament_glContext = ctx;
|
||||
}
|
||||
|
||||
// Register the GL context with emscripten and create the Engine.
|
||||
const defaultConfig = Filament.Engine.createDefaultConfig();
|
||||
const finalConfig = Object.assign(defaultConfig, config);
|
||||
const engine = Filament.Engine._create(finalConfig);
|
||||
const engine = Filament.Engine._create(backend, finalConfig);
|
||||
|
||||
// Annotate the engine with the GL context to support multiple canvases.
|
||||
engine.context = window.filament_glContext;
|
||||
engine.handle = window.filament_contextHandle;
|
||||
if (backend !== Filament.Backend.WEBGPU) {
|
||||
engine.context = window.filament_glContext;
|
||||
engine.handle = window.filament_contextHandle;
|
||||
}
|
||||
engine.canvasId = canvasId;
|
||||
|
||||
// Ensure that we do not pollute the global namespace.
|
||||
delete window.filament_glOptions;
|
||||
@@ -119,6 +132,13 @@ Filament.loadClassExtensions = function() {
|
||||
return engine;
|
||||
};
|
||||
|
||||
Filament.Engine.prototype.createSwapChain = function() {
|
||||
if (this.canvasId) {
|
||||
return this._createSwapChainForCanvas(this.canvasId);
|
||||
}
|
||||
return this._createSwapChain();
|
||||
};
|
||||
|
||||
Filament.Engine.prototype.execute = function() {
|
||||
window.filament_contextHandle = this.handle;
|
||||
this._execute();
|
||||
|
||||
Vendored
+17
-1
@@ -26,6 +26,22 @@ import * as glm from "gl-matrix";
|
||||
export as namespace Filament;
|
||||
|
||||
export function getSupportedFormatSuffix(desired: string): void;
|
||||
|
||||
/**
|
||||
* Asynchronously initializes the WebGPU adapter and device.
|
||||
* This must be awaited before initializing the Filament Engine with the WebGPU backend.
|
||||
*/
|
||||
export function initWebGPU(): Promise<void>;
|
||||
|
||||
export enum Backend {
|
||||
DEFAULT,
|
||||
OPENGL,
|
||||
VULKAN,
|
||||
METAL,
|
||||
WEBGPU,
|
||||
NOOP,
|
||||
}
|
||||
|
||||
export function init(assets: string[], onready?: (() => void) | null): void;
|
||||
export function fetch(assets: string[], onDone?: (() => void) | null, onFetched?: ((name: string) => void) | null): void;
|
||||
export function clearAssetCache(): void;
|
||||
@@ -542,7 +558,7 @@ interface Filamesh {
|
||||
}
|
||||
|
||||
export class Engine {
|
||||
public static create(canvas: HTMLCanvasElement, contextOptions?: object): Engine;
|
||||
public static create(canvas: HTMLCanvasElement, options?: { backend?: Backend }): Engine;
|
||||
public static destroy(engine: Engine): void;
|
||||
public execute(): void;
|
||||
public createCamera(entity: Entity): Camera;
|
||||
|
||||
@@ -422,15 +422,17 @@ enum_<Engine::Config::ShaderLanguage>("ShaderLanguage")
|
||||
|
||||
/// Engine ::core class:: Central manager and resource owner.
|
||||
class_<Engine>("Engine")
|
||||
.class_function("_create", (Engine* (*)(Engine::Config)) [] (Engine::Config config) {
|
||||
EM_ASM_INT({
|
||||
const options = window.filament_glOptions;
|
||||
const context = window.filament_glContext;
|
||||
const handle = GL.registerContext(context, options);
|
||||
window.filament_contextHandle = handle;
|
||||
GL.makeContextCurrent(handle);
|
||||
});
|
||||
return Engine::create(Engine::Backend::DEFAULT, nullptr, nullptr, &config);
|
||||
.class_function("_create", (Engine* (*)(backend::Backend, Engine::Config)) [] (backend::Backend backend, Engine::Config config) {
|
||||
if (backend == backend::Backend::DEFAULT || backend == backend::Backend::OPENGL) {
|
||||
EM_ASM_INT({
|
||||
const options = window.filament_glOptions;
|
||||
const context = window.filament_glContext;
|
||||
const handle = GL.registerContext(context, options);
|
||||
window.filament_contextHandle = handle;
|
||||
GL.makeContextCurrent(handle);
|
||||
});
|
||||
}
|
||||
return Engine::create(backend, nullptr, nullptr, &config);
|
||||
}, allow_raw_pointers())
|
||||
|
||||
// Create a default Engine configuration. This is for internal use to ensure that engine
|
||||
@@ -503,9 +505,17 @@ class_<Engine>("Engine")
|
||||
|
||||
/// createSwapChain ::method::
|
||||
/// ::retval:: an instance of [SwapChain]
|
||||
.function("createSwapChain", (SwapChain* (*)(Engine*)) []
|
||||
.function("_createSwapChain", (SwapChain* (*)(Engine*)) []
|
||||
(Engine* engine) { return engine->createSwapChain(nullptr); },
|
||||
allow_raw_pointers())
|
||||
.function("_createSwapChainForCanvas", (SwapChain* (*)(Engine*, std::string)) []
|
||||
(Engine* engine, std::string canvasId) {
|
||||
// Allocate on the heap because nativeWindow is passed asynchronously through the
|
||||
// driver command buffer to the backend thread.
|
||||
std::string* persistentCanvasId = new std::string(canvasId);
|
||||
return engine->createSwapChain((void*)persistentCanvasId->c_str());
|
||||
},
|
||||
allow_raw_pointers())
|
||||
/// destroySwapChain ::method::
|
||||
/// swapChain ::argument:: an instance of [SwapChain]
|
||||
.function("destroySwapChain", (void (*)(Engine*, SwapChain*)) []
|
||||
@@ -2147,7 +2157,7 @@ class_<Ktx2Provider>("gltfio$Ktx2Provider")
|
||||
class_<WebpProvider>("gltfio$WebpProvider")
|
||||
.constructor(EMBIND_LAMBDA(WebpProvider, (Engine* engine), {
|
||||
return WebpProvider { createWebpProvider(engine) };
|
||||
}))
|
||||
}))
|
||||
.class_function("isWebpSupported", &isWebpSupported);
|
||||
|
||||
class_<AssetLoader>("gltfio$AssetLoader")
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user