Compare commits

..

1 Commits

Author SHA1 Message Date
Sungun Park
2a0f4b943d Bump version to 1.71.3 2026-04-28 21:07:30 -07:00
82 changed files with 1195 additions and 1813 deletions

View File

@@ -26,7 +26,7 @@ jobs:
cd build/web && printf "y" | ./build.sh release
- name: Deploy to npm
run: |
cd out/cmake-wasm-release/web/filament-js
cd out/cmake-webgl-release/web/filament-js
npm publish
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}

View File

@@ -31,8 +31,6 @@ 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

View File

@@ -184,8 +184,6 @@ 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

View File

@@ -286,8 +286,6 @@ 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 }}

View File

@@ -177,7 +177,7 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
# ==================================================================================================
# OS specific
# ==================================================================================================
if (UNIX AND NOT APPLE AND NOT ANDROID AND NOT WASM)
if (UNIX AND NOT APPLE AND NOT ANDROID AND NOT WEBGL)
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 WASM OR IOS OR FILAMENT_LINUX_IS_MOBILE)
if (ANDROID OR WEBGL 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 WASM AND NOT IOS AND NOT FILAMENT_LINUX_IS_MOBILE)
if (NOT ANDROID AND NOT WEBGL AND NOT IOS AND NOT FILAMENT_LINUX_IS_MOBILE)
set(IS_HOST_PLATFORM TRUE)
endif()
@@ -473,7 +473,7 @@ if (NOT MSVC)
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -ffunction-sections -fdata-sections")
endif()
if (ANDROID OR WASM)
if (ANDROID OR WEBGL)
# On Android and WebGL 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")
@@ -482,11 +482,11 @@ endif()
# With WebGL, 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 (WASM)
if (WEBGL)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-rtti")
endif()
if (WASM_PTHREADS)
if (WEBGL_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 WASM)
if (NOT MSVC AND NOT WEBGL)
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 WASM)
if (NOT WEBGL)
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 (WASM_PTHREADS)
if (WEBGL_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 WASM OR IOS)
if (WIN32 OR WEBGL OR IOS)
option(FILAMENT_SUPPORTS_VULKAN "Include the Vulkan backend" OFF)
else()
option(FILAMENT_SUPPORTS_VULKAN "Include the Vulkan backend" ON)
@@ -604,7 +604,7 @@ if (FILAMENT_SUPPORTS_WEBP_TEXTURES)
endif()
# Build with Metal support on non-WebGL Apple platforms.
if (APPLE AND NOT WASM)
if (APPLE AND NOT WEBGL)
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 WASM)
if (NOT WEBGL)
option(FILAMENT_BUILD_FILAMAT "Build filamat and JNI buildings" ON)
else()
option(FILAMENT_BUILD_FILAMAT "Build filamat and JNI buildings" OFF)
@@ -691,6 +691,11 @@ 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)
@@ -727,9 +732,6 @@ 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()
# ==================================================================================================
@@ -838,7 +840,7 @@ if (FILAMENT_IMPORT_PREBUILT_EXECUTABLES_DIR)
set(IMPORT_EXECUTABLES_DIR ${FILAMENT_IMPORT_PREBUILT_EXECUTABLES_DIR})
endif()
if (WASM)
if (WEBGL)
set(IMPORT_EXECUTABLES ${FILAMENT}/${IMPORT_EXECUTABLES_DIR}/ImportExecutables-Release.cmake)
else()
if (FILAMENT_EXPORT_PREBUILT_EXECUTABLES OR FILAMENT_IMPORT_PREBUILT_EXECUTABLES)
@@ -873,7 +875,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 (WASM OR WIN32 OR ANDROID_ON_WINDOWS)
if (WEBGL 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)
@@ -978,7 +980,7 @@ add_subdirectory(${FILAMENT}/filament)
set(FILAMENT_SAMPLES_BINARY_DIR ${PROJECT_BINARY_DIR}/samples)
if (WASM)
if (WEBGL)
add_subdirectory(web/filament-js)
add_subdirectory(web/examples)
endif()

View File

@@ -6,6 +6,3 @@
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

View File

@@ -8,7 +8,7 @@
[![Web Build Status](https://github.com/google/filament/actions/workflows/status-web.yml/badge.svg)](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 WASM. It is designed to be as small as possible and as efficient as possible on Android.
and WebGL. 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.2'
implementation 'com.google.android.filament:filament-android:1.71.3'
}
```
@@ -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.2'
pod 'Filament', '~> 1.71.3'
```
## Documentation

View File

@@ -1,5 +1,5 @@
GROUP=com.google.android.filament
VERSION_NAME=1.71.2
VERSION_NAME=1.71.3
POM_DESCRIPTION=Real-time physically based rendering engine for Android.

123
build.sh
View File

@@ -1,7 +1,7 @@
#!/bin/bash
set -e
# Host tools required by Android, WASM, and iOS builds
# Host tools required by Android, WebGL, 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|wasm|all]."
echo " Where platformN is [desktop|android|ios|webgl|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 universal libraries/frameworks."
echo " For iOS, this builds XCFrameworks for devices and the simulator (implies -s)."
echo " Build arm64/x86_64 universal libraries."
echo " For iOS, this builds universal binaries 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_WASM_BUILD=false
ISSUE_WEBGL_BUILD=false
# Default: all
ABI_ARMEABI_V7A=true
@@ -356,12 +356,12 @@ function build_desktop {
fi
}
function build_wasm_with_target {
function build_webgl_with_target {
local lc_target=$(echo "$1" | tr '[:upper:]' '[:lower:]')
echo "Building WASM ${lc_target}..."
mkdir -p "out/cmake-wasm-${lc_target}"
pushd "out/cmake-wasm-${lc_target}" > /dev/null
echo "Building WebGL ${lc_target}..."
mkdir -p "out/cmake-webgl-${lc_target}"
pushd "out/cmake-webgl-${lc_target}" > /dev/null
if [[ ! "${BUILD_TARGETS}" ]]; then
BUILD_TARGETS=${BUILD_CUSTOM_TARGETS}
@@ -378,13 +378,13 @@ function build_wasm_with_target {
${IMPORT_EXECUTABLES_DIR_OPTION} \
-DCMAKE_TOOLCHAIN_FILE="${EMSDK}/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake" \
-DCMAKE_BUILD_TYPE="$1" \
-DCMAKE_INSTALL_PREFIX="../wasm-${lc_target}/filament" \
-DWASM=1 \
-DCMAKE_INSTALL_PREFIX="../webgl-${lc_target}/filament" \
-DWEBGL=1 \
${WEBGPU_OPTION} \
${BACKEND_DEBUG_FLAG_OPTION} \
${EXCEPTIONS_OPTION} \
../..
ln -sf "out/cmake-wasm-${lc_target}/compile_commands.json" \
ln -sf "out/cmake-webgl-${lc_target}/compile_commands.json" \
../../compile_commands.json
${BUILD_COMMAND} ${BUILD_TARGETS}
)
@@ -416,7 +416,7 @@ function build_wasm_with_target {
popd > /dev/null
}
function build_wasm {
function build_webgl {
# 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 +429,11 @@ function build_wasm {
ISSUE_RELEASE_BUILD=${old_issue_release_build}
if [[ "${ISSUE_DEBUG_BUILD}" == "true" ]]; then
build_wasm_with_target "Debug"
build_webgl_with_target "Debug"
fi
if [[ "${ISSUE_RELEASE_BUILD}" == "true" ]]; then
build_wasm_with_target "Release"
build_webgl_with_target "Release"
fi
}
@@ -685,9 +685,9 @@ function build_ios_target {
local platform=$3
echo "Building iOS ${lc_target} (${arch}) for ${platform}..."
mkdir -p "out/cmake-ios-${lc_target}-${arch}-${platform}"
mkdir -p "out/cmake-ios-${lc_target}-${arch}"
pushd "out/cmake-ios-${lc_target}-${arch}-${platform}" > /dev/null
pushd "out/cmake-ios-${lc_target}-${arch}" > /dev/null
if [[ ! -d "CMakeFiles" ]] || [[ "${ISSUE_CMAKE_ALWAYS}" == "true" ]]; then
cmake \
@@ -746,79 +746,38 @@ 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
fi
if [[ "${BUILD_UNIVERSAL_LIBRARIES}" == "true" ]]; then
build/ios/create-universal-libs.sh \
-o "${lib_dir}/universal" \
"${lib_dir}/arm64-iphonesimulator" \
"${lib_dir}/x86_64-iphonesimulator"
-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
fi
# 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
fi
if [[ "${BUILD_UNIVERSAL_LIBRARIES}" == "true" ]]; then
build/ios/create-universal-libs.sh \
-o "${lib_dir}/universal" \
"${lib_dir}/arm64-iphonesimulator" \
"${lib_dir}/x86_64-iphonesimulator"
-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
fi
# 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
}
@@ -850,7 +809,7 @@ function validate_build_command {
fi
fi
# If building a WebAssembly module, ensure we know where Emscripten lives.
if [[ "${EMSDK}" == "" ]] && [[ "${ISSUE_WASM_BUILD}" == "true" ]]; then
if [[ "${EMSDK}" == "" ]] && [[ "${ISSUE_WEBGL_BUILD}" == "true" ]]; then
echo "Error: EMSDK is not set, exiting"
exit 1
fi
@@ -876,7 +835,7 @@ function run_test {
}
function run_tests {
if [[ "${ISSUE_WASM_BUILD}" == "true" ]]; then
if [[ "${ISSUE_WEBGL_BUILD}" == "true" ]]; then
if ! echo "TypeScript $(tsc --version)" ; then
tsc --noEmit \
third_party/gl-matrix/gl-matrix.d.ts \
@@ -961,18 +920,18 @@ while getopts ":hacCfgimp:q:uvWslwedtk:bVx:S:X:Py:E" opt; do
ios)
ISSUE_IOS_BUILD=true
;;
wasm)
ISSUE_WASM_BUILD=true
webgl)
ISSUE_WEBGL_BUILD=true
;;
all)
ISSUE_ANDROID_BUILD=true
ISSUE_IOS_BUILD=true
ISSUE_DESKTOP_BUILD=true
ISSUE_WASM_BUILD=false
ISSUE_WEBGL_BUILD=false
;;
*)
echo "Unknown platform ${platform}"
echo "Platform must be one of [desktop|android|ios|wasm|all]"
echo "Platform must be one of [desktop|android|ios|webgl|all]"
echo ""
exit 1
;;
@@ -1153,8 +1112,8 @@ if [[ "${ISSUE_IOS_BUILD}" == "true" ]]; then
check_debug_release_build build_ios
fi
if [[ "${ISSUE_WASM_BUILD}" == "true" ]]; then
check_debug_release_build build_wasm
if [[ "${ISSUE_WEBGL_BUILD}" == "true" ]]; then
check_debug_release_build build_webgl
fi
if [[ "${RUN_TESTS}" == "true" ]]; then

View File

@@ -21,7 +21,7 @@ fi
OS_NAME=$(uname -s)
LLVM_VERSION=${GITHUB_LLVM_VERSION-17}
MESA_VERSION=${GITHUB_MESA_VERSION-25.0.6}
MESA_VERSION=${GITHUB_MESA_VERSION-24.2.1}
ORIG_DIR=$(pwd)
MESA_DIR=${MESA_DIR-${ORIG_DIR}/mesa}
@@ -87,8 +87,7 @@ 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 \
glslang
llvm@${LLVM_VERSION} ninja meson pkg-config libxshmfence
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"

View File

@@ -13,20 +13,12 @@
}
},
"node_modules/@actions/core": {
"version": "1.11.1",
"resolved": "https://registry.npmjs.org/@actions/core/-/core-1.11.1.tgz",
"integrity": "sha512-hXJCSrkwfA46Vd9Z3q4cpEpHB1rL5NG04+/rbqW9d3+CSvtB1tYe8UTpAlixa1vj0m/ULglfEK2UKxMGxCxv5A==",
"version": "1.10.0",
"resolved": "https://registry.npmjs.org/@actions/core/-/core-1.10.0.tgz",
"integrity": "sha512-2aZDDa3zrrZbP5ZYg159sNoLRb61nQ7awl5pSvIq5Qpj81vwDzdMRKzkWJGJuwVvWpvZKx7vspJALyvaaIQyug==",
"dependencies": {
"@actions/exec": "^1.1.1",
"@actions/http-client": "^2.0.1"
}
},
"node_modules/@actions/exec": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/@actions/exec/-/exec-1.1.1.tgz",
"integrity": "sha512-+sCcHHbVdk93a0XT19ECtO/gIXoxvdsgQLzb2fE2/5sIZmWQuluYyjPQtrtTHdU1YzTZ7bAPN4sITq2xi1679w==",
"dependencies": {
"@actions/io": "^1.0.1"
"@actions/http-client": "^2.0.1",
"uuid": "^8.3.2"
}
},
"node_modules/@actions/glob": {
@@ -46,11 +38,6 @@
"tunnel": "^0.0.6"
}
},
"node_modules/@actions/io": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/@actions/io/-/io-1.1.3.tgz",
"integrity": "sha512-wi9JjgKLYS7U/z8PPbco+PvTb/nRWjeoFlJ1Qer83k/3C5PHQi28hiVdeE2kHXmIL99mQFawx8qt/JPjZilJ8Q=="
},
"node_modules/@octokit/auth-token": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-5.1.2.tgz",
@@ -270,24 +257,24 @@
"resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-7.0.2.tgz",
"integrity": "sha512-0JCqzSKnStlRRQfCdowvqy3cy0Dvtlb8xecj/H8JFZuCze4rwjPZQOgvFvn0Ws/usCHQFGpyr+pB9adaGwXn4Q==",
"license": "ISC"
},
"node_modules/uuid": {
"version": "8.3.2",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
"integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
"bin": {
"uuid": "dist/bin/uuid"
}
}
},
"dependencies": {
"@actions/core": {
"version": "1.11.1",
"resolved": "https://registry.npmjs.org/@actions/core/-/core-1.11.1.tgz",
"integrity": "sha512-hXJCSrkwfA46Vd9Z3q4cpEpHB1rL5NG04+/rbqW9d3+CSvtB1tYe8UTpAlixa1vj0m/ULglfEK2UKxMGxCxv5A==",
"version": "1.10.0",
"resolved": "https://registry.npmjs.org/@actions/core/-/core-1.10.0.tgz",
"integrity": "sha512-2aZDDa3zrrZbP5ZYg159sNoLRb61nQ7awl5pSvIq5Qpj81vwDzdMRKzkWJGJuwVvWpvZKx7vspJALyvaaIQyug==",
"requires": {
"@actions/exec": "^1.1.1",
"@actions/http-client": "^2.0.1"
}
},
"@actions/exec": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/@actions/exec/-/exec-1.1.1.tgz",
"integrity": "sha512-+sCcHHbVdk93a0XT19ECtO/gIXoxvdsgQLzb2fE2/5sIZmWQuluYyjPQtrtTHdU1YzTZ7bAPN4sITq2xi1679w==",
"requires": {
"@actions/io": "^1.0.1"
"@actions/http-client": "^2.0.1",
"uuid": "^8.3.2"
}
},
"@actions/glob": {
@@ -307,11 +294,6 @@
"tunnel": "^0.0.6"
}
},
"@actions/io": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/@actions/io/-/io-1.1.3.tgz",
"integrity": "sha512-wi9JjgKLYS7U/z8PPbco+PvTb/nRWjeoFlJ1Qer83k/3C5PHQi28hiVdeE2kHXmIL99mQFawx8qt/JPjZilJ8Q=="
},
"@octokit/auth-token": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-5.1.2.tgz",
@@ -462,6 +444,11 @@
"version": "7.0.2",
"resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-7.0.2.tgz",
"integrity": "sha512-0JCqzSKnStlRRQfCdowvqy3cy0Dvtlb8xecj/H8JFZuCze4rwjPZQOgvFvn0Ws/usCHQFGpyr+pB9adaGwXn4Q=="
},
"uuid": {
"version": "8.3.2",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
"integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg=="
}
}
}

View File

@@ -1,7 +1,7 @@
GITHUB_CLANG_VERSION=17
GITHUB_CMAKE_VERSION=3.22.1
GITHUB_NINJA_VERSION=1.10.2
GITHUB_MESA_VERSION=25.0.6
GITHUB_MESA_VERSION=24.2.1
GITHUB_LLVM_VERSION=17
GITHUB_NDK_VERSION=29.0.14206865
GITHUB_EMSDK_VERSION=5.0.4

View File

@@ -1,87 +0,0 @@
#!/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

View File

@@ -8,4 +8,4 @@ set -x
source `dirname $0`/../common/build-common.sh
pushd `dirname $0`/../.. > /dev/null
./build.sh -p wasm -c $RUN_TESTS $GENERATE_ARCHIVES $BUILD_DEBUG $BUILD_RELEASE
./build.sh -p webgl -c $RUN_TESTS $GENERATE_ARCHIVES $BUILD_DEBUG $BUILD_RELEASE

View File

@@ -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 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
<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
<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> web outputs from the <code>out/cmake-wasm-release/...</code>
<li><code>run.py</code> maps the <code>.html</code> and <code>.md</code> WebGL outputs from the <code>out/cmake-webgl-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>&lt;!DOCTYPE html&gt;</code>, <code>&lt;head&gt;</code>, and
<code>&lt;html&gt;</code> tags. By retaining only the <code>&lt;style&gt;</code> and <code>&lt;body&gt;</code> elements, the HTML samples can be

View File

@@ -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 WASM. It is designed to be as small as possible and as efficient as possible on Android.</p>
and WebGL. 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.2'
implementation 'com.google.android.filament:filament-android:1.71.1'
}
</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', '~&gt; 1.71.2'
<pre><code class="language-shell">pod 'Filament', '~&gt; 1.71.1'
</code></pre>
<h2 id="documentation"><a class="header" href="#documentation">Documentation</a></h2>
<ul>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

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.

View File

@@ -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 web tutorials and examples in the `web/` directory. These are
compiled during the web CMake build and are integrated into the documentation via
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
`duplicates.json`. The process is entirely automated:
1. `run.py` maps the `.html` and `.md` web outputs from the `out/cmake-wasm-release/...`
1. `run.py` maps the `.html` and `.md` WebGL outputs from the `out/cmake-webgl-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

View File

@@ -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-wasm-release/web/examples/examples")
OUT_DIR = os.path.join(CUR_DIR, "../../out/cmake-webgl-release/web/examples/examples")
BOOK_DIR = os.path.join(CUR_DIR, "../src_mdbook/book")
def setup_dirs():

View File

@@ -106,43 +106,43 @@
"filament/backend/test/README.md": {
"dest": "dup/backend_test.md"
},
"out/cmake-wasm-release/web/examples/examples/triangle/triangle.md": {
"out/cmake-webgl-release/web/examples/examples/triangle/triangle.md": {
"dest": "samples/web/triangle.md"
},
"out/cmake-wasm-release/web/examples/examples/redball/redball.md": {
"out/cmake-webgl-release/web/examples/examples/redball/redball.md": {
"dest": "samples/web/redball.md"
},
"out/cmake-wasm-release/web/examples/examples/suzanne/suzanne.md": {
"out/cmake-webgl-release/web/examples/examples/suzanne/suzanne.md": {
"dest": "samples/web/suzanne.md"
},
"out/cmake-wasm-release/web/examples/examples/animation/animation.html": {
"out/cmake-webgl-release/web/examples/examples/animation/animation.html": {
"dest": "samples/web/animation.md"
},
"out/cmake-wasm-release/web/examples/examples/cube_fl0/cube_fl0.html": {
"out/cmake-webgl-release/web/examples/examples/cube_fl0/cube_fl0.html": {
"dest": "samples/web/cube_fl0.md"
},
"out/cmake-wasm-release/web/examples/examples/helmet/helmet.html": {
"out/cmake-webgl-release/web/examples/examples/helmet/helmet.html": {
"dest": "samples/web/helmet.md"
},
"out/cmake-wasm-release/web/examples/examples/morphing/morphing.html": {
"out/cmake-webgl-release/web/examples/examples/morphing/morphing.html": {
"dest": "samples/web/morphing.md"
},
"out/cmake-wasm-release/web/examples/examples/parquet/parquet.html": {
"out/cmake-webgl-release/web/examples/examples/parquet/parquet.html": {
"dest": "samples/web/parquet.md"
},
"out/cmake-wasm-release/web/examples/examples/skinning/skinning.html": {
"out/cmake-webgl-release/web/examples/examples/skinning/skinning.html": {
"dest": "samples/web/skinning.md"
},
"out/cmake-wasm-release/web/examples/examples/sky/sky.html": {
"out/cmake-webgl-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-wasm-release/web/examples/examples/sky/sky.html": {
"./out/cmake-webgl-release/web/examples/examples/sky/sky.html": {
"dest": "web/sky.html"
},
"out/cmake-wasm-release/web/examples/examples/remote/remote.html": {
"out/cmake-webgl-release/web/examples/examples/remote/remote.html": {
"dest": "remote/index.html"
}
}

View File

@@ -19,7 +19,7 @@ FILAMENT_BOT_TOKEN=$2
set -ex
function update_to_main() {
./build.sh -p wasm release
./build.sh -p webgl release
python3 docs_src/build/run.py
mkdir -p tmp
pushd .

View File

@@ -744,10 +744,10 @@ if (MSVC)
set(OPTIMIZATION_FLAGS
/fp:fast
)
elseif (WASM)
elseif(WEBGL)
# 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

View File

@@ -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 (WASM)
elseif (WEBGL)
list(APPEND SRCS src/opengl/platforms/PlatformWebGL.cpp)
elseif (LINUX)
if (FILAMENT_SUPPORTS_X11)
@@ -432,7 +432,7 @@ if (FILAMENT_USE_ABSEIL_LOGGING)
endif()
# Android, iOS, and WebGL do not use bluegl.
if(FILAMENT_SUPPORTS_OPENGL AND NOT IOS AND NOT ANDROID AND NOT WASM)
if(FILAMENT_SUPPORTS_OPENGL AND NOT IOS AND NOT ANDROID AND NOT WEBGL)
target_link_libraries(${TARGET} PRIVATE bluegl)
endif()
@@ -463,7 +463,7 @@ if (MSVC)
set(OPTIMIZATION_FLAGS
/fp:fast
)
elseif(WASM)
elseif(WEBGL)
# Avoid strict-vtable-pointers here, it is broken in WebAssembly.
set(OPTIMIZATION_FLAGS -fvisibility-inlines-hidden)
elseif(FILAMENT_USING_GCC)
@@ -699,7 +699,7 @@ if (FILAMENT_BUILD_TESTING)
# ==================================================================================================
# Compute tests
#
#if (NOT IOS AND NOT WASM)
#if (NOT IOS AND NOT WEBGL)
#
#add_executable(compute_test
# test/ComputeTest.cpp

View File

@@ -14,7 +14,6 @@
* limitations under the License.
*/
#include <TargetConditionals.h>
#include "backend/PresentCallable.h"
#include "private/backend/CommandStream.h"
#include "CommandStreamDispatcher.h"
@@ -161,11 +160,9 @@ 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.

View File

@@ -43,6 +43,101 @@ 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.
@@ -50,12 +145,14 @@ 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) {
Program const& program, const ShaderStage stage,
utils::FixedCapacityVector<Program::SpecializationConstant> const& specConstants) {
const char* const programName = program.getName().c_str_safe();
std::array<utils::FixedCapacityVector<uint8_t>, Program::SHADER_TYPE_COUNT> const&
shaderSource = program.getShadersSource();
@@ -67,9 +164,13 @@ 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(reinterpret_cast<const char*>(sourceBytes.data()));
wgslDescriptor.code = wgpu::StringView(processedShaderSource);
const wgpu::ShaderModuleDescriptor descriptor{
.nextInChain = &wgslDescriptor,
.label = label.data()
@@ -150,11 +251,14 @@ namespace {
}// namespace
WebGPUProgram::WebGPUProgram(wgpu::Device const& device, Program const& program)
: HwProgram{ program.getName() } {
: HwProgram{ program.getName() } {
utils::FixedCapacityVector<Program::SpecializationConstant> const& specConstants =
program.getSpecializationConstants();
// TODO: Consider creating/compiling these shaders in parallel.
vertexShaderModule = createShaderModule(device, program, ShaderStage::VERTEX);
fragmentShaderModule = createShaderModule(device, program, ShaderStage::FRAGMENT);
computeShaderModule = createShaderModule(device, program, ShaderStage::COMPUTE);
vertexShaderModule = createShaderModule(device, program, ShaderStage::VERTEX, specConstants);
fragmentShaderModule =
createShaderModule(device, program, ShaderStage::FRAGMENT, specConstants);
computeShaderModule = createShaderModule(device, program, ShaderStage::COMPUTE, specConstants);
}
}// namespace filament::backend

View File

@@ -225,73 +225,42 @@ struct AttributeInfo final {
* associated with a vertex buffer, and the slot each one belongs
*/
void createBufferLayoutsBindingSlotsAndAttributeInfos(AttributeArray const& attributes,
const uint32_t deviceMaxVertexBuffers,
const uint8_t attributeCount, const uint32_t deviceMaxVertexBuffers,
std::vector<WebGPUVertexBufferInfo::WebGPUSlotBindingInfo>& outWebGPUSlotBindingInfos,
std::vector<wgpu::VertexBufferLayout>& outVertexBufferLayouts,
std::array<AttributeInfo, MAX_VERTEX_ATTRIBUTE_COUNT>& outAttributeInfos,
uint8_t& outActualAttributeCount) {
std::array<AttributeInfo, MAX_VERTEX_ATTRIBUTE_COUNT>& outAttributeInfos) {
uint8_t currentWebGPUSlotIndex = 0;
uint8_t currentAttributeIndex = 0;
outVertexBufferLayouts.reserve(MAX_VERTEX_BUFFER_COUNT);
outWebGPUSlotBindingInfos.reserve(outVertexBufferLayouts.capacity());
// 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;
}
}
/*
* 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;
const auto& attribute = attributes[attributeIndex];
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);
// 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;
}
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);
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)) {
@@ -300,18 +269,26 @@ 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 });
outVertexBufferLayouts.push_back(
{ .stepMode = wgpu::VertexStepMode::Vertex, .arrayStride = 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.
});
}
// we don't use a designated initializer here because certain compilers can't handle it
outAttributeInfos[currentAttributeIndex++] = AttributeInfo(
existingSlot,
{
@@ -320,8 +297,9 @@ void createBufferLayoutsBindingSlotsAndAttributeInfos(AttributeArray const& attr
attribute.offset - outWebGPUSlotBindingInfos[existingSlot].bufferOffset,
.shaderLocation = attributeIndex });
}
outActualAttributeCount = currentAttributeIndex;
FILAMENT_CHECK_POSTCONDITION(currentAttributeIndex == attributeCount)
<< "Using " << currentAttributeIndex << " attributes, but " << attributeCount
<< " where indicated.";
outVertexBufferLayouts.shrink_to_fit();
outWebGPUSlotBindingInfos.shrink_to_fit();
}
@@ -338,21 +316,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(MAX_VERTEX_ATTRIBUTE_COUNT); // Reserve max as we might add dummies
mVertexAttributes.reserve(attributeCount);
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{};
uint8_t actualAttributeCount = 0;
createBufferLayoutsBindingSlotsAndAttributeInfos(attributes, deviceLimits.maxVertexBuffers,
mWebGPUSlotBindingInfos, mVertexBufferLayouts, attributeInfos, actualAttributeCount);
createBufferLayoutsBindingSlotsAndAttributeInfos(attributes, attributeCount,
deviceLimits.maxVertexBuffers, mWebGPUSlotBindingInfos, mVertexBufferLayouts,
attributeInfos);
// 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() + actualAttributeCount,
std::sort(attributeInfos.data(), attributeInfos.data() + attributeCount,
[](AttributeInfo const& first, AttributeInfo const& second) {
if (first.slot < second.slot) {
return true;
@@ -366,7 +344,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 < actualAttributeCount; ++attributeIndex) {
for (uint32_t attributeIndex = 0; attributeIndex < attributeCount; ++attributeIndex) {
AttributeInfo const& info = attributeInfos[attributeIndex];
mVertexAttributes.push_back(info.attribute);
if (mVertexBufferLayouts[info.slot].attributeCount == 0) {

View File

@@ -1,7 +1,7 @@
cmake_minimum_required(VERSION 3.19)
project(filament-tests)
if(IOS OR WASM)
if(IOS OR WEBGL)
return()
endif()

View File

@@ -1,15 +1,21 @@
Pod::Spec.new do |spec|
spec.name = "Filament"
spec.version = "1.71.2"
spec.version = "1.71.3"
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.2/filament-v1.71.2-ios.tgz" }
spec.source = { :http => "https://github.com/google/filament/releases/download/v1.71.3/filament-v1.71.3-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",
@@ -19,13 +25,13 @@ Pod::Spec.new do |spec|
"include/ibl/*.h",
"include/geometry/*.h"
ss.header_mappings_dir = "include"
ss.vendored_frameworks =
"lib/libfilament.xcframework",
"lib/libbackend.xcframework",
"lib/libfilabridge.xcframework",
"lib/libfilaflat.xcframework",
"lib/libibl.xcframework",
"lib/libgeometry.xcframework"
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.dependency "Filament/utils"
ss.dependency "Filament/math"
end
@@ -36,10 +42,11 @@ Pod::Spec.new do |spec|
"include/filament/MaterialChunkType.h",
"include/filament/MaterialEnums.h"
ss.header_mappings_dir = "include"
ss.vendored_frameworks =
"lib/libfilamat.xcframework",
"lib/libshaders.xcframework",
"lib/libsmol-v.xcframework"
ss.vendored_libraries =
"lib/universal/libfilamat.a",
"lib/universal/libshaders.a",
"lib/universal/libsmol-v.a",
"lib/universal/libfilabridge.a"
ss.dependency "Filament/utils"
ss.dependency "Filament/math"
end
@@ -47,11 +54,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_frameworks =
"lib/libgltfio_core.xcframework",
"lib/libdracodec.xcframework",
"lib/libuberarchive.xcframework",
"lib/libstb.xcframework"
ss.vendored_libraries =
"lib/universal/libgltfio_core.a",
"lib/universal/libdracodec.a",
"lib/universal/libuberarchive.a",
"lib/universal/libstb.a"
ss.dependency "Filament/filament"
ss.dependency "Filament/ktxreader"
ss.dependency "Filament/uberz"
@@ -59,23 +66,23 @@ Pod::Spec.new do |spec|
spec.subspec "camutils" do |ss|
ss.source_files = "include/camutils/*.h"
ss.vendored_frameworks = "lib/libcamutils.xcframework"
ss.vendored_libraries = "lib/universal/libcamutils.a"
ss.header_dir = "camutils"
ss.dependency "Filament/math"
end
spec.subspec "filameshio" do |ss|
ss.source_files = "include/filameshio/*.h"
ss.vendored_frameworks =
"lib/libfilameshio.xcframework",
"lib/libmeshoptimizer.xcframework"
ss.vendored_libraries =
"lib/universal/libfilameshio.a",
"lib/universal/libmeshoptimizer.a"
ss.header_dir = "filameshio"
ss.dependency "Filament/filament"
end
spec.subspec "image" do |ss|
ss.source_files = "include/image/*.h"
ss.vendored_frameworks = "lib/libimage.xcframework"
ss.vendored_libraries = "lib/universal/libimage.a"
ss.header_dir = "image"
ss.dependency "Filament/filament"
end
@@ -83,7 +90,7 @@ Pod::Spec.new do |spec|
spec.subspec "utils" do |ss|
ss.source_files = "include/utils/**/*.h"
ss.header_mappings_dir = "include"
ss.vendored_frameworks = "lib/libutils.xcframework"
ss.vendored_libraries = "lib/universal/libutils.a"
ss.dependency "Filament/tsl"
end
@@ -100,9 +107,9 @@ Pod::Spec.new do |spec|
spec.subspec "ktxreader" do |ss|
ss.source_files = "include/ktxreader/*.h"
ss.header_mappings_dir = "include"
ss.vendored_frameworks =
"lib/libktxreader.xcframework",
"lib/libbasis_transcoder.xcframework"
ss.vendored_libraries =
"lib/universal/libktxreader.a",
"lib/universal/libbasis_transcoder.a"
ss.dependency "Filament/image"
ss.dependency "Filament/filament"
end
@@ -110,9 +117,9 @@ Pod::Spec.new do |spec|
spec.subspec "viewer" do |ss|
ss.source_files = "include/viewer/*.h"
ss.header_mappings_dir = "include"
ss.vendored_frameworks =
"lib/libviewer.xcframework",
"lib/libcivetweb.xcframework"
ss.vendored_libraries =
"lib/universal/libviewer.a",
"lib/universal/libcivetweb.a"
ss.dependency "Filament/filament"
ss.dependency "Filament/gltfio_core"
end
@@ -120,9 +127,9 @@ Pod::Spec.new do |spec|
spec.subspec "uberz" do |ss|
ss.source_files = "include/uberz/*.h"
ss.header_mappings_dir = "include"
ss.vendored_frameworks =
"lib/libuberzlib.xcframework",
"lib/libzstd.xcframework"
ss.vendored_libraries =
"lib/universal/libuberzlib.a",
"lib/universal/libzstd.a"
ss.header_dir = "uberz"
ss.dependency "Filament/filamat"
ss.dependency "Filament/tsl"

View File

@@ -47,16 +47,14 @@ 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
(both Apple silicon `arm64` and Intel `x86_64`) in Debug mode:
(x86_64) in Debug mode:
```
$ ./build.sh -s -p ios -i debug
```
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.
When building for the simulator, the sample will then link against the libraries present in
`out/ios-debug/filament/lib/x86_64`.
## Xcode
@@ -90,20 +88,17 @@ from scratch.
## XcodeGen
[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](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
```
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.
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.
## Building iOS Samples with ASan / UBSan

View File

@@ -13,35 +13,30 @@ 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:
FILAMENT_OUT_NAME: ios-debug
HEADER_SEARCH_PATHS: ["$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include", "generated"]
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"
release:
FILAMENT_OUT_NAME: ios-release
HEADER_SEARCH_PATHS: ["$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include", "generated"]
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"
metal:
GCC_PREPROCESSOR_DEFINITIONS: ["FILAMENT_APP_USE_METAL=1", "$(inherited)"]
opengl:

View File

@@ -3,117 +3,34 @@
archiveVersion = 1;
classes = {
};
objectVersion = 77;
objectVersion = 54;
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;
@@ -127,30 +44,10 @@
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 = (
@@ -160,11 +57,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>";
@@ -178,8 +75,6 @@
buildPhases = (
445863ED54C294354A388281 /* Sources */,
BD71575ED7ED3237FEFD94C7 /* Resources */,
5E31B50ED1338E6ADE1FA49A /* Frameworks */,
0ABB76F2D4011A4AF5186FCA /* Embed Frameworks */,
);
buildRules = (
);
@@ -200,10 +95,9 @@
attributes = {
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1430;
TargetAttributes = {
};
};
buildConfigurationList = E89E1EEA671E49DBAC9D5A9C /* Build configuration list for PBXProject "backend-test" */;
compatibilityVersion = "Xcode 14.0";
developmentRegion = en;
hasScannedForEncodings = 0;
knownRegions = (
@@ -212,8 +106,7 @@
);
mainGroup = 3D2B936C924E0DB70941EE6D;
minimizedProjectReferenceProxies = 1;
preferredProjectObjectVersion = 77;
productRefGroup = 05CA69F10D830E40A8FB561D /* Products */;
preferredProjectObjectVersion = 54;
projectDirPath = "";
projectRoot = "";
targets = (
@@ -275,7 +168,7 @@
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
@@ -331,17 +224,12 @@
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 = (
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
"../../../out/ios-debug/filament/include",
generated,
);
INFOPLIST_FILE = "backend-test/Info.plist";
@@ -350,8 +238,24 @@
"$(inherited)",
"@executable_path/Frameworks",
);
LIBRARY_SEARCH_PATHS = (
"../../../out/ios-debug/filament/lib/$(CURRENT_ARCH)",
"../../../out/ios-debug/filament/lib/universal",
);
OTHER_LDFLAGS = (
"-force_load $(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/lib/$(CURRENT_ARCH)-$(PLATFORM_NAME)/libbackend_test.a",
"-lfilament",
"-lbackend",
"-lfilaflat",
"-lktxreader",
"-lfilabridge",
"-lutils",
"-lsmol-v",
"-lgeometry",
"-libl",
"-labseil",
"-lzstd",
"-lfilamat",
"-force_load ../../../out/ios-debug/filament/lib/arm64/libbackend_test.a",
);
PRODUCT_BUNDLE_IDENTIFIER = "${SAMPLE_CODE_DISAMBIGUATOR}.google.filament.backend-test";
SAMPLE_CODE_DISAMBIGUATOR = "${DEVELOPMENT_TEAM}";
@@ -366,7 +270,7 @@
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
@@ -429,17 +333,12 @@
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 = (
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
"../../../out/ios-release/filament/include",
generated,
);
INFOPLIST_FILE = "backend-test/Info.plist";
@@ -448,8 +347,24 @@
"$(inherited)",
"@executable_path/Frameworks",
);
LIBRARY_SEARCH_PATHS = (
"../../../out/ios-release/filament/lib/$(CURRENT_ARCH)",
"../../../out/ios-release/filament/lib/universal",
);
OTHER_LDFLAGS = (
"-force_load $(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/lib/$(CURRENT_ARCH)-$(PLATFORM_NAME)/libbackend_test.a",
"-lfilament",
"-lbackend",
"-lfilaflat",
"-lktxreader",
"-lfilabridge",
"-lutils",
"-lsmol-v",
"-lgeometry",
"-libl",
"-labseil",
"-lzstd",
"-lfilamat",
"-force_load ../../../out/ios-debug/filament/lib/arm64/libbackend_test.a",
);
PRODUCT_BUNDLE_IDENTIFIER = "${SAMPLE_CODE_DISAMBIGUATOR}.google.filament.backend-test";
SAMPLE_CODE_DISAMBIGUATOR = "${DEVELOPMENT_TEAM}";
@@ -464,7 +379,7 @@
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
@@ -520,17 +435,12 @@
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 = (
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
"../../../out/ios-debug/filament/include",
generated,
);
INFOPLIST_FILE = "backend-test/Info.plist";
@@ -539,8 +449,24 @@
"$(inherited)",
"@executable_path/Frameworks",
);
LIBRARY_SEARCH_PATHS = (
"../../../out/ios-debug/filament/lib/$(CURRENT_ARCH)",
"../../../out/ios-debug/filament/lib/universal",
);
OTHER_LDFLAGS = (
"-force_load $(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/lib/$(CURRENT_ARCH)-$(PLATFORM_NAME)/libbackend_test.a",
"-lfilament",
"-lbackend",
"-lfilaflat",
"-lktxreader",
"-lfilabridge",
"-lutils",
"-lsmol-v",
"-lgeometry",
"-libl",
"-labseil",
"-lzstd",
"-lfilamat",
"-force_load ../../../out/ios-debug/filament/lib/arm64/libbackend_test.a",
);
PRODUCT_BUNDLE_IDENTIFIER = "${SAMPLE_CODE_DISAMBIGUATOR}.google.filament.backend-test";
SAMPLE_CODE_DISAMBIGUATOR = "${DEVELOPMENT_TEAM}";
@@ -556,17 +482,12 @@
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 = (
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
"../../../out/ios-release/filament/include",
generated,
);
INFOPLIST_FILE = "backend-test/Info.plist";
@@ -575,8 +496,24 @@
"$(inherited)",
"@executable_path/Frameworks",
);
LIBRARY_SEARCH_PATHS = (
"../../../out/ios-release/filament/lib/$(CURRENT_ARCH)",
"../../../out/ios-release/filament/lib/universal",
);
OTHER_LDFLAGS = (
"-force_load $(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/lib/$(CURRENT_ARCH)-$(PLATFORM_NAME)/libbackend_test.a",
"-lfilament",
"-lbackend",
"-lfilaflat",
"-lktxreader",
"-lfilabridge",
"-lutils",
"-lsmol-v",
"-lgeometry",
"-libl",
"-labseil",
"-lzstd",
"-lfilamat",
"-force_load ../../../out/ios-debug/filament/lib/arm64/libbackend_test.a",
);
PRODUCT_BUNDLE_IDENTIFIER = "${SAMPLE_CODE_DISAMBIGUATOR}.google.filament.backend-test";
SAMPLE_CODE_DISAMBIGUATOR = "${DEVELOPMENT_TEAM}";
@@ -591,7 +528,7 @@
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;

View File

@@ -6,10 +6,8 @@ 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: ["-force_load $(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/lib/$(CURRENT_ARCH)-$(PLATFORM_NAME)/libbackend_test.a"]
OTHER_LDFLAGS: ["-lfilamat", "-force_load ../../../out/ios-debug/filament/lib/arm64/libbackend_test.a"]

View File

@@ -10,7 +10,7 @@ set -e
HOST_TOOLS_PATH="${HOST_TOOLS_PATH:-../../../out/release/filament/bin}"
cmgen_path=`find -L ${HOST_TOOLS_PATH} -name cmgen -type f | head -n 1`
cmgen_path=`find ${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.

View File

@@ -3,178 +3,40 @@
archiveVersion = 1;
classes = {
};
objectVersion = 77;
objectVersion = 54;
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;
@@ -203,8 +65,8 @@
children = (
DF545E3F8FD553E334F5D6D6 /* Assets.xcassets */,
B9C391BBD90EB54D27F8E4FD /* Info.plist */,
1FF7EE9D5DD74F1A740C0D88 /* main.m */,
21CA7296309BBFADBB0B00C3 /* LaunchScreen.storyboard */,
1FF7EE9D5DD74F1A740C0D88 /* main.m */,
14BA4B8B6A697847DA9934D2 /* Main.storyboard */,
);
path = SupportFiles;
@@ -216,41 +78,10 @@
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 = (
@@ -271,8 +102,6 @@
0B375996CE4EBC4A5B258C27 /* Build Resources */,
C8F38C978C83CD5335A21F72 /* Sources */,
7D3B1B99EEAFB6F53ECBAA5A /* Resources */,
E646271806112A138895CBE3 /* Frameworks */,
26182010104312BFB0BA3CE4 /* Embed Frameworks */,
);
buildRules = (
);
@@ -293,10 +122,9 @@
attributes = {
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1430;
TargetAttributes = {
};
};
buildConfigurationList = 90327DE42AE5DF12C4BD2113 /* Build configuration list for PBXProject "gltf-viewer" */;
compatibilityVersion = "Xcode 14.0";
developmentRegion = en;
hasScannedForEncodings = 0;
knownRegions = (
@@ -305,8 +133,7 @@
);
mainGroup = 7DB4500696DB13904CDF40C4;
minimizedProjectReferenceProxies = 1;
preferredProjectObjectVersion = 77;
productRefGroup = 3BFD6EBD6D97D6F1C40F1C90 /* Products */;
preferredProjectObjectVersion = 56;
projectDirPath = "";
projectRoot = "";
targets = (
@@ -340,7 +167,7 @@
inputFileListPaths = (
);
inputPaths = (
../../../third_party/environments/lightroom_14b.hdr,
"$(SRCROOT)/../../../third_party/environments/lightroom_14b.hdr",
);
name = "Build Resources";
outputFileListPaths = (
@@ -351,7 +178,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 -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";
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";
};
/* End PBXShellScriptBuildPhase section */
@@ -395,7 +222,7 @@
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
@@ -457,7 +284,7 @@
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
@@ -512,7 +339,7 @@
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
@@ -568,17 +395,12 @@
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 = (
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
"../../../out/ios-release/filament/include",
generated,
);
INFOPLIST_FILE = "gltf-viewer/SupportFiles/Info.plist";
@@ -587,6 +409,36 @@
"$(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;
@@ -601,17 +453,12 @@
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 = (
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
"../../../out/ios-debug/filament/include",
generated,
);
INFOPLIST_FILE = "gltf-viewer/SupportFiles/Info.plist";
@@ -620,6 +467,36 @@
"$(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;
@@ -633,7 +510,7 @@
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
@@ -696,17 +573,12 @@
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 = (
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
"../../../out/ios-release/filament/include",
generated,
);
INFOPLIST_FILE = "gltf-viewer/SupportFiles/Info.plist";
@@ -715,6 +587,36 @@
"$(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;
@@ -729,17 +631,12 @@
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 = (
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
"../../../out/ios-debug/filament/include",
generated,
);
INFOPLIST_FILE = "gltf-viewer/SupportFiles/Info.plist";
@@ -748,6 +645,36 @@
"$(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;

View File

@@ -17,24 +17,16 @@ targets:
optional: true
templates:
- FilamentApp
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
settings:
base:
OTHER_LDFLAGS: ["-lgltfio_core", "-luberarchive", "-limage", "-lstb", "-lbasis_transcoder",
"-lzstd", "-lcamutils", "-ldracodec", "-lmeshoptimizer", "-lviewer", "-lcivetweb",
"-luberzlib", "-limageio-lite"]
preBuildScripts:
- path: build-resources.sh
name: Build Resources
inputFiles:
- ../../../third_party/environments/lightroom_14b.hdr
- $(SRCROOT)/../../../third_party/environments/lightroom_14b.hdr
outputFiles:
- $(SRCROOT)/generated/default_env/default_env_ibl.ktx
- $(SRCROOT)/generated/default_env/default_env_skybox.ktx

View File

@@ -14,10 +14,10 @@ set -e
HOST_TOOLS_PATH="${HOST_TOOLS_PATH:-../../../out/release/filament/bin}"
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`
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`
# 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.

View File

@@ -3,113 +3,44 @@
archiveVersion = 1;
classes = {
};
objectVersion = 77;
objectVersion = 54;
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 */
@@ -119,21 +50,7 @@
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;
};
@@ -175,20 +92,6 @@
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>";
@@ -198,10 +101,10 @@
children = (
AE684A73135705C4EDAA7C53 /* Assets.xcassets */,
FCF16FE1B4146DE87F2B76F3 /* Info.plist */,
B6B92BD0FA8E6F9CFEAE1707 /* main.m */,
DD0010D60097DEAA82DAA089 /* Resources.S */,
C88A8BDFC06D144D80EC052B /* LaunchScreen.storyboard */,
B6B92BD0FA8E6F9CFEAE1707 /* main.m */,
AFCB91D87494B7FC879A7A5E /* Main.storyboard */,
DD0010D60097DEAA82DAA089 /* Resources.S */,
);
path = SupportFiles;
sourceTree = "<group>";
@@ -241,7 +144,6 @@
A5598850636B6208AE64E95E /* Sources */,
77189A28CB88A4753728F549 /* Resources */,
FA9CC5F2D3E84FB632557A2E /* Frameworks */,
AA70CE1AA47836D72F588764 /* Embed Frameworks */,
);
buildRules = (
);
@@ -262,10 +164,9 @@
attributes = {
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1430;
TargetAttributes = {
};
};
buildConfigurationList = 281E763643B2F1F3B903864B /* Build configuration list for PBXProject "hello-ar" */;
compatibilityVersion = "Xcode 14.0";
developmentRegion = en;
hasScannedForEncodings = 0;
knownRegions = (
@@ -274,8 +175,7 @@
);
mainGroup = 316A56C698744769908E6F88;
minimizedProjectReferenceProxies = 1;
preferredProjectObjectVersion = 77;
productRefGroup = E2EC9706948EC07E74121EF1 /* Products */;
preferredProjectObjectVersion = 54;
projectDirPath = "";
projectRoot = "";
targets = (
@@ -314,7 +214,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 -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";
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";
};
/* End PBXShellScriptBuildPhase section */
@@ -362,17 +262,12 @@
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 = (
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
"../../../out/ios-debug/filament/include",
generated,
);
INFOPLIST_FILE = "hello-ar/SupportFiles/Info.plist";
@@ -381,6 +276,26 @@
"$(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;
@@ -395,17 +310,12 @@
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 = (
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
"../../../out/ios-release/filament/include",
generated,
);
INFOPLIST_FILE = "hello-ar/SupportFiles/Info.plist";
@@ -414,6 +324,26 @@
"$(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;
@@ -427,7 +357,7 @@
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
@@ -490,17 +420,12 @@
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 = (
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
"../../../out/ios-release/filament/include",
generated,
);
INFOPLIST_FILE = "hello-ar/SupportFiles/Info.plist";
@@ -509,6 +434,26 @@
"$(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;
@@ -522,7 +467,7 @@
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
@@ -584,7 +529,7 @@
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
@@ -640,17 +585,12 @@
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 = (
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
"../../../out/ios-debug/filament/include",
generated,
);
INFOPLIST_FILE = "hello-ar/SupportFiles/Info.plist";
@@ -659,6 +599,26 @@
"$(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;
@@ -672,7 +632,7 @@
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;

View File

@@ -8,9 +8,9 @@ targets:
- FilamentApp
dependencies:
- sdk: ARKit.framework
- 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
settings:
base:
OTHER_LDFLAGS: ["-lfilameshio", "-lmeshoptimizer", "-limage"]
preBuildScripts:
- path: build-resources.sh
name: Build Resources

View File

@@ -11,8 +11,8 @@ set -e
HOST_TOOLS_PATH="${HOST_TOOLS_PATH:-../../../out/release/filament/bin}"
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`
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`
# 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.

View File

@@ -3,162 +3,44 @@
archiveVersion = 1;
classes = {
};
objectVersion = 77;
objectVersion = 54;
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;
@@ -174,7 +56,6 @@
children = (
213197BBE06FB8316C6A730F /* DamagedHelmet */,
A57096EADC8A05A97A275513 /* hello-gltf */,
F6A35BB32F71E5F5DC464FCC /* Frameworks */,
E24AFBD404D0689AD84371D6 /* Products */,
);
sourceTree = "<group>";
@@ -197,10 +78,10 @@
children = (
3F8FDA2F8F0B257A1364E302 /* Assets.xcassets */,
A52D063A6C24A885D52E2F79 /* Info.plist */,
47B161015D23D464253ABAF1 /* main.m */,
B1B470F3CDEE0D4A60B11C72 /* Resources.S */,
FEA341C442B210CFD35E4663 /* LaunchScreen.storyboard */,
47B161015D23D464253ABAF1 /* main.m */,
59032D070D1641AA60F6CC2D /* Main.storyboard */,
B1B470F3CDEE0D4A60B11C72 /* Resources.S */,
);
path = SupportFiles;
sourceTree = "<group>";
@@ -226,32 +107,6 @@
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 */
@@ -262,8 +117,6 @@
434C630C7F01B07ABD7545B4 /* Build Resources */,
30FFFB72D409D092136A7E09 /* Sources */,
143100B2FF97ACD9B03A078A /* Resources */,
0F4486CC8242411EE5C50136 /* Frameworks */,
D5C4D57398FACAA29F2C2549 /* Embed Frameworks */,
);
buildRules = (
);
@@ -284,10 +137,9 @@
attributes = {
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1430;
TargetAttributes = {
};
};
buildConfigurationList = C7514DDCFDA3C5F803E239F9 /* Build configuration list for PBXProject "hello-gltf" */;
compatibilityVersion = "Xcode 14.0";
developmentRegion = en;
hasScannedForEncodings = 0;
knownRegions = (
@@ -296,8 +148,7 @@
);
mainGroup = 74FBC1573C79190CC198A030;
minimizedProjectReferenceProxies = 1;
preferredProjectObjectVersion = 77;
productRefGroup = E24AFBD404D0689AD84371D6 /* Products */;
preferredProjectObjectVersion = 54;
projectDirPath = "";
projectRoot = "";
targets = (
@@ -337,7 +188,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 -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";
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";
};
/* End PBXShellScriptBuildPhase section */
@@ -384,7 +235,7 @@
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
@@ -447,17 +298,12 @@
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 = (
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
"../../../out/ios-release/filament/include",
generated,
);
INFOPLIST_FILE = "hello-gltf/SupportFiles/Info.plist";
@@ -466,6 +312,32 @@
"$(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;
@@ -480,17 +352,12 @@
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 = (
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
"../../../out/ios-debug/filament/include",
generated,
);
INFOPLIST_FILE = "hello-gltf/SupportFiles/Info.plist";
@@ -499,6 +366,32 @@
"$(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;
@@ -512,7 +405,7 @@
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
@@ -574,7 +467,7 @@
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
@@ -629,7 +522,7 @@
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
@@ -685,17 +578,12 @@
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 = (
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
"../../../out/ios-release/filament/include",
generated,
);
INFOPLIST_FILE = "hello-gltf/SupportFiles/Info.plist";
@@ -704,6 +592,32 @@
"$(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;
@@ -718,17 +632,12 @@
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 = (
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
"../../../out/ios-debug/filament/include",
generated,
);
INFOPLIST_FILE = "hello-gltf/SupportFiles/Info.plist";
@@ -737,6 +646,32 @@
"$(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;

View File

@@ -10,15 +10,10 @@ targets:
buildPhase: resources
templates:
- FilamentApp
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
settings:
base:
OTHER_LDFLAGS: ["-lgltfio_core", "-luberarchive", "-limage", "-ldracodec", "-lmeshoptimizer",
"-lbasis_transcoder", "-lstb", "-lzstd", "-luberzlib"]
preBuildScripts:
- path: build-resources.sh
name: Build Resources

View File

@@ -13,10 +13,10 @@ set -e
HOST_TOOLS_PATH="${HOST_TOOLS_PATH:-../../../out/release/filament/bin}"
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`
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`
# 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.

View File

@@ -3,136 +3,43 @@
archiveVersion = 1;
classes = {
};
objectVersion = 77;
objectVersion = 54;
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;
@@ -147,43 +54,21 @@
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>";
@@ -214,8 +99,6 @@
18BC4E25ED5FC66EC7B77F97 /* Build Resources */,
4EAE126B59B0A66AD866406A /* Sources */,
4C132EE193B59194A5C7572B /* Resources */,
464CABCAA933FAA2A5568882 /* Frameworks */,
8E3DFDFC69EBD646F294582B /* Embed Frameworks */,
);
buildRules = (
);
@@ -236,10 +119,9 @@
attributes = {
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1430;
TargetAttributes = {
};
};
buildConfigurationList = 0479354FB8D9A411347D91A6 /* Build configuration list for PBXProject "hello-pbr" */;
compatibilityVersion = "Xcode 14.0";
developmentRegion = en;
hasScannedForEncodings = 0;
knownRegions = (
@@ -248,8 +130,7 @@
);
mainGroup = 8B171658B4A1227B9CA44459;
minimizedProjectReferenceProxies = 1;
preferredProjectObjectVersion = 77;
productRefGroup = A90A4582D4144797492F5C08 /* Products */;
preferredProjectObjectVersion = 54;
projectDirPath = "";
projectRoot = "";
targets = (
@@ -288,7 +169,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 -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";
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";
};
/* End PBXShellScriptBuildPhase section */
@@ -335,7 +216,7 @@
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
@@ -398,17 +279,12 @@
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 = (
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
"../../../out/ios-debug/filament/include",
generated,
);
INFOPLIST_FILE = "hello-pbr/Info.plist";
@@ -417,6 +293,26 @@
"$(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;
@@ -431,17 +327,12 @@
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 = (
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
"../../../out/ios-release/filament/include",
generated,
);
INFOPLIST_FILE = "hello-pbr/Info.plist";
@@ -450,6 +341,26 @@
"$(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;
@@ -464,17 +375,12 @@
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 = (
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
"../../../out/ios-debug/filament/include",
generated,
);
INFOPLIST_FILE = "hello-pbr/Info.plist";
@@ -483,6 +389,26 @@
"$(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;
@@ -496,7 +422,7 @@
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
@@ -551,7 +477,7 @@
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
@@ -607,17 +533,12 @@
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 = (
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
"../../../out/ios-release/filament/include",
generated,
);
INFOPLIST_FILE = "hello-pbr/Info.plist";
@@ -626,6 +547,26 @@
"$(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;
@@ -639,7 +580,7 @@
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;

View File

@@ -6,10 +6,9 @@ targets:
hello-pbr:
templates:
- FilamentApp
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
settings:
base:
OTHER_LDFLAGS: ["-lfilameshio", "-lmeshoptimizer", "-limage"]
preBuildScripts:
- path: build-resources.sh
name: Build Resources

View File

@@ -1,7 +1,7 @@
# Compile bakedColor material.
HOST_TOOLS_PATH="${HOST_TOOLS_PATH:-../../../out/release/filament/bin}"
matc_path=`find -L ${HOST_TOOLS_PATH} -name matc -type f | head -n 1`
matc_path=`find ${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}."

View File

@@ -3,113 +3,35 @@
archiveVersion = 1;
classes = {
};
objectVersion = 77;
objectVersion = 54;
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;
@@ -119,30 +41,11 @@
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>";
@@ -164,11 +67,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>";
@@ -183,8 +86,6 @@
668105208CE7DFC4DC55F8EC /* Build Materials */,
7B94E1FEEC48280815A91021 /* Sources */,
471869BF4E82B6ADC791072D /* Resources */,
3691C25600B8D42B8E9BC308 /* Frameworks */,
C514B8F3AF16FEA064256123 /* Embed Frameworks */,
);
buildRules = (
);
@@ -205,10 +106,9 @@
attributes = {
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1430;
TargetAttributes = {
};
};
buildConfigurationList = 69A012BABE82CB5D1986B1BB /* Build configuration list for PBXProject "hello-triangle" */;
compatibilityVersion = "Xcode 14.0";
developmentRegion = en;
hasScannedForEncodings = 0;
knownRegions = (
@@ -217,8 +117,7 @@
);
mainGroup = 5B3E3AAF5C75644908492410;
minimizedProjectReferenceProxies = 1;
preferredProjectObjectVersion = 77;
productRefGroup = 39FD47E0213E1FFE59609A06 /* Products */;
preferredProjectObjectVersion = 54;
projectDirPath = "";
projectRoot = "";
targets = (
@@ -257,7 +156,7 @@
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
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";
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";
};
/* End PBXShellScriptBuildPhase section */
@@ -302,17 +201,12 @@
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 = (
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
"../../../out/ios-debug/filament/include",
generated,
);
INFOPLIST_FILE = "hello-triangle/Info.plist";
@@ -321,6 +215,23 @@
"$(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;
@@ -334,7 +245,7 @@
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
@@ -397,17 +308,12 @@
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 = (
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
"../../../out/ios-release/filament/include",
generated,
);
INFOPLIST_FILE = "hello-triangle/Info.plist";
@@ -416,6 +322,23 @@
"$(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;
@@ -430,17 +353,12 @@
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 = (
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
"../../../out/ios-release/filament/include",
generated,
);
INFOPLIST_FILE = "hello-triangle/Info.plist";
@@ -449,6 +367,23 @@
"$(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;
@@ -462,7 +397,7 @@
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
@@ -517,7 +452,7 @@
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
@@ -573,17 +508,12 @@
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 = (
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
"../../../out/ios-debug/filament/include",
generated,
);
INFOPLIST_FILE = "hello-triangle/Info.plist";
@@ -592,6 +522,23 @@
"$(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;
@@ -605,7 +552,7 @@
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;

View File

@@ -1,7 +1,7 @@
# Compile bakedColor material.
HOST_TOOLS_PATH="${HOST_TOOLS_PATH:-../../../out/release/filament/bin}"
matc_path=`find -L ${HOST_TOOLS_PATH} -name matc -type f | head -n 1`
matc_path=`find ${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}."

View File

@@ -3,112 +3,34 @@
archiveVersion = 1;
classes = {
};
objectVersion = 77;
objectVersion = 54;
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;
@@ -122,7 +44,6 @@
isa = PBXGroup;
children = (
6E33B6C4EE9FFF8BBCE5DD20 /* transparent-rendering */,
C5AF8AD86B58EF5D0BD7B0B2 /* Frameworks */,
0B098038EF2CFAC88AFE0F18 /* Products */,
);
sourceTree = "<group>";
@@ -136,33 +57,15 @@
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 */
@@ -173,8 +76,6 @@
31596072423F6FB0A84C97A0 /* Build Materials */,
EE3B63E6A11EDDBC48502B27 /* Sources */,
A676D3A853739CDAB454587E /* Resources */,
9267558086B89E5F350ADDC4 /* Frameworks */,
89F6975F74EBC72BCCA1074F /* Embed Frameworks */,
);
buildRules = (
);
@@ -195,10 +96,9 @@
attributes = {
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1430;
TargetAttributes = {
};
};
buildConfigurationList = 8A22BD23DB15965551506480 /* Build configuration list for PBXProject "transparent-rendering" */;
compatibilityVersion = "Xcode 14.0";
developmentRegion = en;
hasScannedForEncodings = 0;
knownRegions = (
@@ -207,8 +107,7 @@
);
mainGroup = 4C27390036DEB15C67D5A664;
minimizedProjectReferenceProxies = 1;
preferredProjectObjectVersion = 77;
productRefGroup = 0B098038EF2CFAC88AFE0F18 /* Products */;
preferredProjectObjectVersion = 54;
projectDirPath = "";
projectRoot = "";
targets = (
@@ -247,7 +146,7 @@
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
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";
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";
};
/* End PBXShellScriptBuildPhase section */
@@ -291,7 +190,7 @@
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
@@ -346,7 +245,7 @@
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
@@ -408,7 +307,7 @@
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
@@ -464,17 +363,12 @@
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 = (
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
"../../../out/ios-release/filament/include",
generated,
);
INFOPLIST_FILE = "transparent-rendering/Info.plist";
@@ -483,6 +377,23 @@
"$(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;
@@ -497,17 +408,12 @@
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 = (
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
"../../../out/ios-debug/filament/include",
generated,
);
INFOPLIST_FILE = "transparent-rendering/Info.plist";
@@ -516,6 +422,23 @@
"$(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;
@@ -530,17 +453,12 @@
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 = (
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
"../../../out/ios-debug/filament/include",
generated,
);
INFOPLIST_FILE = "transparent-rendering/Info.plist";
@@ -549,6 +467,23 @@
"$(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;
@@ -563,17 +498,12 @@
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 = (
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
"../../../out/ios-release/filament/include",
generated,
);
INFOPLIST_FILE = "transparent-rendering/Info.plist";
@@ -582,6 +512,23 @@
"$(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;
@@ -595,7 +542,7 @@
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;

View File

@@ -50,7 +50,7 @@ install(DIRECTORY ${PUBLIC_HDR_DIR}/camutils DESTINATION include)
# ==================================================================================================
# Tests
# ==================================================================================================
if (FILAMENT_BUILD_TESTING AND NOT ANDROID AND NOT WASM AND NOT IOS)
if (FILAMENT_BUILD_TESTING AND NOT ANDROID AND NOT WEBGL 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)

View File

@@ -881,6 +881,14 @@ 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";

View File

@@ -37,7 +37,7 @@ install(FILES ${DIST_HDRS} DESTINATION include/${TARGET})
# ==================================================================================================
# Tests
# ==================================================================================================
if (FILAMENT_BUILD_TESTING AND NOT IOS AND NOT WASM AND NOT ANDROID)
if (FILAMENT_BUILD_TESTING AND NOT IOS AND NOT WEBGL 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)

View File

@@ -46,7 +46,7 @@ if (MSVC)
set(OPTIMIZATION_FLAGS
/fp:fast
)
elseif (WASM)
elseif(WEBGL)
# Avoid strict-vtable-pointers here, it is broken in WebAssembly.
set(OPTIMIZATION_FLAGS -fvisibility-inlines-hidden)
else()

View File

@@ -73,7 +73,7 @@ install(FILES "${GEOMETRY_COMBINED_OUTPUT}" DESTINATION lib/${DIST_DIR} RENAME $
# ==================================================================================================
# Tests
# ==================================================================================================
if (FILAMENT_BUILD_TESTING AND NOT ANDROID AND NOT WASM AND NOT IOS)
if (FILAMENT_BUILD_TESTING AND NOT ANDROID AND NOT WEBGL AND NOT IOS)
set(TARGET test_transcoder)
add_executable(${TARGET} tests/test_transcoder.cpp)
target_link_libraries(${TARGET} PRIVATE geometry gtest)

View File

@@ -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 (WASM_PTHREADS)
if (WEBGL_PTHREADS)
target_compile_definitions(gltfio_core PUBLIC -DFILAMENT_WASM_THREADS)
endif()
target_compile_options(gltfio_core PRIVATE ${FILAMENT_WARNINGS})
if (NOT WASM AND NOT ANDROID AND NOT IOS)
if (NOT WEBGL 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 WASM AND NOT ANDROID AND NOT IOS)
if (TNT_DEV AND NOT WEBGL AND NOT ANDROID AND NOT IOS)
set(TEST_TARGET test_gltfio)
add_executable(${TEST_TARGET} test/gltfio_test.cpp)

View File

@@ -99,7 +99,7 @@ if (MSVC)
set(OPTIMIZATION_FLAGS
/fp:fast
)
elseif (WASM)
elseif(WEBGL)
# Avoid strict-vtable-pointers here, it is broken in WebAssembly.
set(OPTIMIZATION_FLAGS -fvisibility-inlines-hidden)
else()

View File

@@ -53,7 +53,7 @@ install(DIRECTORY ${PUBLIC_HDR_DIR}/image DESTINATION include)
# ==================================================================================================
# Tests
# ==================================================================================================
if (FILAMENT_BUILD_TESTING AND NOT ANDROID AND NOT WASM AND NOT IOS AND NOT FILAMENT_SKIP_SDL2)
if (FILAMENT_BUILD_TESTING AND NOT ANDROID AND NOT WEBGL 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)

View File

@@ -17,9 +17,9 @@ target_link_libraries(imagediff PRIVATE
)
if (NOT ANDROID AND NOT WASM AND NOT IOS)
if (NOT ANDROID AND NOT WEBGL 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_DIR} LIBRARY DESTINATION lib/${DIST_DIR})
install(TARGETS imagediff ARCHIVE DESTINATION lib/${DIST_ARCH} LIBRARY DESTINATION lib/${DIST_ARCH})

View File

@@ -45,7 +45,7 @@ install(DIRECTORY ${PUBLIC_HDR_DIR}/imageio-lite DESTINATION include)
# ==================================================================================================
# Tests
# ==================================================================================================
if (NOT ANDROID AND NOT WASM AND NOT IOS)
if (NOT ANDROID AND NOT WEBGL 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)

View File

@@ -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 WASM AND NOT IOS)
if (FILAMENT_BUILD_TESTING AND NOT ANDROID AND NOT WEBGL 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)

View File

@@ -115,7 +115,7 @@ if (APPLE)
list(APPEND SRCS src/darwin/Systrace.cpp)
list(APPEND SRCS src/darwin/Tracing.cpp)
endif()
if (WASM)
if (WEBGL)
list(APPEND SRCS src/web/Path.cpp)
endif()
@@ -208,12 +208,12 @@ if (FILAMENT_BUILD_TESTING)
test/test_Status.cpp
)
if (WASM_PTHREADS)
if (WEBGL_PTHREADS)
target_compile_definitions(${TARGET} PUBLIC -DFILAMENT_WASM_THREADS)
endif()
# The Path tests are platform-specific
if (NOT WASM)
if (NOT WEBGL)
if (WIN32)
list(APPEND TEST_SRCS test/test_WinPath.cpp)
else()
@@ -231,7 +231,7 @@ endif()
# Benchmarks
# ==================================================================================================
if (FILAMENT_BUILD_TESTING AND NOT WASM)
if (FILAMENT_BUILD_TESTING AND NOT WEBGL)
add_library(benchmark_${TARGET}_callee SHARED benchmark/benchmark_callee.cpp)
set_target_properties(benchmark_${TARGET}_callee PROPERTIES FOLDER Benchmarks)

View File

@@ -51,7 +51,7 @@ public:
virtual ~Listener() noexcept;
};
using ChangeCallback = std::function<void(Slice<const Entity>)>;
using ChangeCallback = std::function<void(utils::Slice<const Entity>)>;
/**
* Registers a callback to be triggered when entities are destroyed.
@@ -105,7 +105,10 @@ public:
// Return whether the given Entity has been destroyed (false) or not (true).
// Thread safe.
bool isAlive(Entity e) const noexcept;
bool isAlive(Entity const e) const noexcept {
assert(getIndex(e) < RAW_INDEX_COUNT);
return (!e.isNull()) && (getGeneration(e) == mGens[getIndex(e)]);
}
// Registers a listener to be called when an entity is destroyed. Thread safe.
// If the listener is already registered, this method has no effect.
@@ -115,9 +118,13 @@ public:
void unregisterListener(Listener* l) noexcept;
/* no user serviceable parts below */
// current generation of the given index. Use for debugging and testing.
uint8_t getGenerationForIndex(size_t const index) const noexcept {
return mGens[index];
}
// singleton, can't be copied
EntityManager(const EntityManager& rhs) = delete;
EntityManager& operator=(const EntityManager& rhs) = delete;
@@ -150,6 +157,9 @@ private:
static Entity::Type makeIdentity(Entity::Type const g, Entity::Type const i) noexcept {
return (g << GENERATION_SHIFT) | (i & INDEX_MASK);
}
// stores the generation of each index.
uint8_t* const mGens;
};
} // namespace utils

View File

@@ -55,19 +55,10 @@ public:
static constexpr size_t getArrayCount() noexcept { return kArrayCount; }
// Size needed to store "size" array elements
static size_t getNeededSize(size_t const size) noexcept {
static size_t getNeededSize(size_t 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;
@@ -86,28 +77,21 @@ 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 const index) : soa(soa), index(index) { }
IteratorValueRef(StructureOfArraysBase* soa, size_t 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 const lhs, IteratorValueRef const rhs) {
friend void swap(IteratorValueRef lhs, IteratorValueRef rhs) {
lhs.soa->swap(lhs.index, rhs.index);
}
@@ -115,9 +99,6 @@ 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);
@@ -139,10 +120,6 @@ 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.
@@ -198,7 +175,7 @@ public:
CVQualifiedSOAPointer soa; // don't use restrict, can have aliases if multiple iterators are created
size_t index;
Iterator(CVQualifiedSOAPointer soa, size_t const index) : soa(soa), index(index) {}
Iterator(CVQualifiedSOAPointer soa, size_t index) : soa(soa), index(index) {}
public:
using value_type = IteratorValue;
@@ -219,10 +196,10 @@ public:
Iterator& operator++() { ++index; return *this; }
Iterator& operator--() { --index; return *this; }
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 }; }
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 }; }
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); }
@@ -245,7 +222,7 @@ public:
StructureOfArraysBase() = default;
explicit StructureOfArraysBase(size_t const capacity) {
explicit StructureOfArraysBase(size_t capacity) {
setCapacity(capacity);
}
@@ -293,7 +270,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 const capacity) {
void setCapacity(size_t capacity) {
// allocate enough space for "capacity" elements of each array
// capacity cannot change when optional storage is specified
if (capacity >= mSize) {
@@ -315,7 +292,7 @@ public:
}
}
void ensureCapacity(size_t const needed) {
void ensureCapacity(size_t 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;
@@ -328,7 +305,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 const needed) {
void resize(size_t needed) {
ensureCapacity(needed);
resizeNoCheck(needed);
if (needed <= mCapacity) {
@@ -341,7 +318,7 @@ public:
}
void swap(size_t i, size_t j) noexcept {
inline void swap(size_t i, size_t j) noexcept {
forEach([i, j](auto p) {
using std::swap;
swap(p[i], p[j]);
@@ -349,7 +326,7 @@ public:
}
// remove and destroy the last element of each array
void pop_back() noexcept {
inline void pop_back() noexcept {
if (mSize) {
destroy_each(mSize - 1, mSize);
mSize--;
@@ -506,97 +483,80 @@ public:
using Type = typename SoA::template TypeAt<E>;
UTILS_ALWAYS_INLINE Field& operator = (Field&& rhs) noexcept {
soa.template elementAt<E>(i) = soa.template elementAt<E>(rhs.i);
soa.elementAt<E>(i) = soa.elementAt<E>(rhs.i);
return *this;
}
// auto-conversion to the field's type
UTILS_ALWAYS_INLINE operator Type&() noexcept {
return soa.template elementAt<E>(i);
return soa.elementAt<E>(i);
}
UTILS_ALWAYS_INLINE operator Type const&() const noexcept {
return soa.template elementAt<E>(i);
return soa.elementAt<E>(i);
}
// dereferencing the selected field
UTILS_ALWAYS_INLINE Type& operator ->() noexcept {
return soa.template elementAt<E>(i);
return soa.elementAt<E>(i);
}
UTILS_ALWAYS_INLINE Type const& operator ->() const noexcept {
return soa.template elementAt<E>(i);
return soa.elementAt<E>(i);
}
// address-of the selected field
UTILS_ALWAYS_INLINE Type* operator &() noexcept {
return &soa.template elementAt<E>(i);
return &soa.elementAt<E>(i);
}
UTILS_ALWAYS_INLINE Type const* operator &() const noexcept {
return &soa.template elementAt<E>(i);
return &soa.elementAt<E>(i);
}
// assignment to the field
UTILS_ALWAYS_INLINE Type const& operator = (Type const& other) noexcept {
return (soa.template elementAt<E>(i) = other);
return (soa.elementAt<E>(i) = other);
}
UTILS_ALWAYS_INLINE Type const& operator = (Type&& other) noexcept {
return (soa.template elementAt<E>(i) = std::forward<Type>(other));
return (soa.elementAt<E>(i) = std::forward<Type>(other));
}
// comparisons
UTILS_ALWAYS_INLINE bool operator==(Type const& other) const {
return (soa.template elementAt<E>(i) == other);
return (soa.elementAt<E>(i) == other);
}
UTILS_ALWAYS_INLINE bool operator!=(Type const& other) const {
return (soa.template elementAt<E>(i) != other);
return (soa.elementAt<E>(i) != other);
}
// calling the field
template <typename ... ARGS>
UTILS_ALWAYS_INLINE decltype(auto) operator()(ARGS&& ... args) noexcept {
return soa.template elementAt<E>(i)(std::forward<ARGS>(args)...);
return soa.elementAt<E>(i)(std::forward<ARGS>(args)...);
}
template <typename ... ARGS>
UTILS_ALWAYS_INLINE decltype(auto) operator()(ARGS&& ... args) const noexcept {
return soa.template elementAt<E>(i)(std::forward<ARGS>(args)...);
return soa.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>
std::enable_if_t<I == sizeof...(Tp), void>
inline std::enable_if_t<I == sizeof...(Tp), void>
for_each(std::tuple<Tp...>&, FuncT) {}
template<std::size_t I = 0, typename FuncT, typename... Tp>
std::enable_if_t<I < sizeof...(Tp), void>
inline 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>
std::enable_if_t<I == sizeof...(Tp), void>
inline 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>
std::enable_if_t<I < sizeof...(Tp), void>
inline 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);
}
void resizeNoCheck(size_t const needed) noexcept {
inline void resizeNoCheck(size_t needed) noexcept {
assert(mCapacity >= needed);
if (needed < mSize) {
// we shrink the arrays
@@ -610,12 +570,12 @@ private:
}
// this calculates the offset adjusted for all data alignment of a given array
static size_t getOffset(size_t index, size_t const capacity) noexcept {
static inline size_t getOffset(size_t index, size_t capacity) noexcept {
auto offsets = getOffsets(capacity);
return offsets[index];
}
static std::array<size_t, kArrayCount> getOffsets(size_t capacity) noexcept {
static inline std::array<size_t, kArrayCount> getOffsets(size_t capacity) noexcept {
// compute the required size of each array
const size_t sizes[] = { (sizeof(Elements) * capacity)... };
@@ -658,7 +618,7 @@ private:
});
}
void move_each(void* buffer, size_t const capacity) noexcept {
void move_each(void* buffer, size_t capacity) noexcept {
auto offsets = getOffsets(capacity);
size_t index = 0;
if (mSize) {
@@ -693,7 +653,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(static_cast<char*>(buffer) + offsets[i]);
p = Type((char*)buffer + offsets[i]);
});
}
@@ -708,6 +668,7 @@ private:
template<typename Allocator, typename... Elements>
inline
typename StructureOfArraysBase<Allocator, Elements...>::IteratorValueRef&
StructureOfArraysBase<Allocator, Elements...>::IteratorValueRef::operator=(
IteratorValueRef const& rhs) {
@@ -715,28 +676,16 @@ 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...>) {
@@ -747,24 +696,7 @@ StructureOfArraysBase<Allocator, Elements...>::IteratorValueRef::assign(
template<typename Allocator, typename... Elements>
template<size_t... Is>
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>
inline
typename StructureOfArraysBase<Allocator, Elements...>::IteratorValueRef&
StructureOfArraysBase<Allocator, Elements...>::IteratorValueRef::assign(
IteratorValue&& rhs, std::index_sequence<Is...>) noexcept {

View File

@@ -18,21 +18,21 @@
#include "EntityManagerImpl.h"
#include <utils/Entity.h>
#include <cassert>
#include <cstddef>
#include <mutex>
#include <new>
#include <utility>
namespace utils {
EntityManager::Listener::~Listener() noexcept = default;
EntityManager::EntityManager() = default;
EntityManager::EntityManager()
: mGens(new uint8_t[RAW_INDEX_COUNT]) {
// initialize all the generations to 0
std::fill_n(mGens, RAW_INDEX_COUNT, 0);
}
EntityManager::~EntityManager() = default;
EntityManager::~EntityManager() {
delete [] mGens;
}
EntityManager& EntityManager::get() noexcept {
// note: we leak the EntityManager because it's more important that it survives everything else
@@ -41,11 +41,11 @@ EntityManager& EntityManager::get() noexcept {
return *instance;
}
void EntityManager::create(size_t const n, Entity* entities) {
void EntityManager::create(size_t n, Entity* entities) {
static_cast<EntityManagerImpl *>(this)->create(n, entities);
}
void EntityManager::destroy(size_t const n, Entity* entities) noexcept {
void EntityManager::destroy(size_t n, Entity* entities) noexcept {
static_cast<EntityManagerImpl *>(this)->destroy(n, entities);
}
@@ -84,8 +84,4 @@ void EntityManager::dumpActiveEntities(utils::io::ostream& out) const {
#endif
bool EntityManager::isAlive(Entity const e) const noexcept {
return static_cast<EntityManagerImpl const *>(this)->isAlive(e);
}
} // namespace utils

View File

@@ -40,7 +40,6 @@
#include <deque>
#include <memory>
#include <mutex> // for std::lock_guard
#include <new>
#include <utility>
#include <vector>
@@ -50,38 +49,15 @@ static constexpr size_t MIN_FREE_INDICES = 1024;
class UTILS_PRIVATE EntityManagerImpl : public EntityManager {
public:
friend class EntityManager;
using EntityManager::getGeneration;
using EntityManager::getIndex;
using EntityManager::makeIdentity;
using EntityManager::create;
using EntityManager::destroy;
EntityManagerImpl() noexcept
: mGens(new(std::nothrow) uint8_t[RAW_INDEX_COUNT]) {
// initialize all the generations to 0
std::fill_n(mGens, RAW_INDEX_COUNT, 0);
}
~EntityManagerImpl() noexcept {
delete [] mGens;
}
bool isAlive(Entity const e) const noexcept {
assert(getIndex(e) < RAW_INDEX_COUNT);
if (e.isNull()) {
return false;
}
std::lock_guard const lock(mFreeListLock);
bool const alive = (getGeneration(e) == mGens[getIndex(e)]);
return alive;
}
UTILS_NOINLINE
size_t getEntityCount() const noexcept {
std::lock_guard const lock(mFreeListLock);
std::lock_guard<Mutex> const lock(mFreeListLock);
if (mCurrentIndex < RAW_INDEX_COUNT) {
return (mCurrentIndex - 1) - mFreeList.size();
} else {
@@ -90,13 +66,13 @@ public:
}
UTILS_NOINLINE
void create(size_t const n, Entity* entities) {
void create(size_t n, Entity* entities) {
Entity::Type index{};
auto& freeList = mFreeList;
uint8_t const* const gens = mGens;
// this must be thread-safe, acquire the free-list mutex
std::lock_guard const lock(mFreeListLock);
std::lock_guard<Mutex> const lock(mFreeListLock);
Entity::Type currentIndex = mCurrentIndex;
for (size_t i = 0; i < n; i++) {
if (UTILS_UNLIKELY(currentIndex >= RAW_INDEX_COUNT || freeList.size() >= MIN_FREE_INDICES)) {
@@ -122,11 +98,11 @@ public:
}
UTILS_NOINLINE
void destroy(size_t const n, Entity* entities) noexcept {
void destroy(size_t n, Entity* entities) noexcept {
auto& freeList = mFreeList;
uint8_t* const gens = mGens;
std::unique_lock lock(mFreeListLock);
std::unique_lock<Mutex> lock(mFreeListLock);
for (size_t i = 0; i < n; i++) {
if (!entities[i]) {
// behave like free(), ok to free null Entity.
@@ -134,15 +110,19 @@ public:
}
// it's an error to delete an Entity twice...
bool const isAlive = getGeneration(entities[i]) == mGens[getIndex(entities[i])];
assert(isAlive);
assert(isAlive(entities[i]));
// ... deleting a dead Entity will corrupt the internal state, so we protect ourselves
// against it. We don't guarantee anything about external state -- e.g. the listeners
// will be called.
if (UTILS_LIKELY(isAlive)) {
if (isAlive(entities[i])) {
Entity::Type const index = getIndex(entities[i]);
freeList.push_back(index);
// The generation update doesn't require the lock because it's only used for isAlive()
// and entities work as weak references -- it just means that isAlive() could return
// true a little longer than expected in some other threads.
// We do need a memory fence though, it is provided by the mFreeListLock.unlock() below.
gens[index]++;
#if FILAMENT_UTILS_TRACK_ENTITIES
@@ -171,22 +151,22 @@ public:
}
void registerListener(Listener* l) noexcept {
std::lock_guard const lock(mListenerLock);
std::lock_guard<Mutex> const lock(mListenerLock);
mListeners.insert(l);
}
void unregisterListener(Listener* l) noexcept {
std::lock_guard const lock(mListenerLock);
std::lock_guard<Mutex> const lock(mListenerLock);
mListeners.erase(l);
}
void registerChangeCallback(void const* token, ChangeCallback callback) noexcept {
std::lock_guard const lock(mListenerLock);
std::lock_guard<Mutex> const lock(mListenerLock);
mChangeCallbacks.push_back({token, std::move(callback)});
}
void unregisterChangeCallback(void const* token) noexcept {
std::lock_guard const lock(mListenerLock);
std::lock_guard<Mutex> const lock(mListenerLock);
mChangeCallbacks.erase(
std::remove_if(mChangeCallbacks.begin(), mChangeCallbacks.end(),
[token](auto const& info) { return info.token == token; }),
@@ -194,7 +174,7 @@ public:
}
void flushNotifications() noexcept {
std::unique_lock lock(mFreeListLock);
std::unique_lock<Mutex> lock(mFreeListLock);
if (mDirtyCount > 0) {
Entity localBuffer[MAX_DIRTY_COUNT];
assert_invariant(mDirtyCount <= MAX_DIRTY_COUNT);
@@ -228,7 +208,7 @@ public:
private:
std::vector<ChangeCallback> getChangeCallbacks() const noexcept {
std::lock_guard const lock(mListenerLock);
std::lock_guard<Mutex> const lock(mListenerLock);
std::vector<ChangeCallback> result;
result.reserve(mChangeCallbacks.size());
for (auto const& info : mChangeCallbacks) {
@@ -237,7 +217,7 @@ private:
return result;
}
void triggerChangeCallbacks(Entity const* entities, size_t const n) const noexcept {
void triggerChangeCallbacks(Entity const* entities, size_t n) const noexcept {
auto const callbacks = getChangeCallbacks();
Slice const slice(entities, n);
for (auto const& callback : callbacks) {
@@ -246,7 +226,7 @@ private:
}
FixedCapacityVector<Listener*> getListeners() const noexcept {
std::lock_guard const lock(mListenerLock);
std::lock_guard<Mutex> const lock(mListenerLock);
tsl::robin_set<Listener*> const& listeners = mListeners;
FixedCapacityVector<Listener*> result(listeners.size());
result.resize(result.capacity()); // unfortunately this memset()
@@ -254,20 +234,22 @@ private:
return result; // the c++ standard guarantees a move
}
static constexpr size_t MAX_DIRTY_COUNT = 16;
uint32_t mCurrentIndex = 1;
// stores indices that got freed
mutable Mutex mFreeListLock;
std::deque<Entity::Type> mFreeList;
mutable Mutex mListenerLock;
tsl::robin_set<Listener*> mListeners;
struct CallbackInfo {
void const* token;
ChangeCallback callback;
};
mutable Mutex mFreeListLock;
uint32_t mCurrentIndex = 1;
std::deque<Entity::Type> mFreeList; // stores indices that got freed
uint8_t* const mGens; // stores the generation of each index.
mutable Mutex mListenerLock;
tsl::robin_set<Listener*> mListeners;
std::vector<CallbackInfo> mChangeCallbacks;
static constexpr size_t MAX_DIRTY_COUNT = 16;
Entity mDirtyEntities[MAX_DIRTY_COUNT];
size_t mDirtyCount = 0;

View File

@@ -19,11 +19,6 @@
#include <utils/StructureOfArrays.h>
#include <math/vec4.h>
#include <cstdint>
#include <cstdlib>
#include <memory>
#include <utility>
using namespace filament::math;
using namespace utils;
@@ -76,7 +71,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;
}
@@ -108,7 +103,7 @@ TEST(StructureOfArraysTest, Simple) {
soa.elementAt<2>(i) = i * 4;
}
size_t const capacity = soa.capacity();
size_t capacity = soa.capacity();
// check that each array doesn't overlap the previous one
EXPECT_TRUE((void*)soa.data<1>() >= (void*)(soa.data<0>() + capacity));
@@ -188,42 +183,3 @@ 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 });
}

View File

@@ -57,7 +57,7 @@ install(DIRECTORY ${PUBLIC_HDR_DIR}/viewer DESTINATION include)
# ==================================================================================================
# Tests
# ==================================================================================================
if (FILAMENT_BUILD_TESTING AND NOT ANDROID AND NOT WASM AND NOT IOS)
if (FILAMENT_BUILD_TESTING AND NOT ANDROID AND NOT WEBGL 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)

View File

@@ -3,10 +3,6 @@ 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()

View File

@@ -21,8 +21,6 @@ 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)

View File

@@ -52,6 +52,8 @@ 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
@@ -75,7 +77,6 @@ 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
)

View File

@@ -15,11 +15,11 @@ set(WEBP_BUILD_WEBPMUX OFF)
set(WEBP_BUILD_EXTRAS OFF)
set(WEBP_BUILD_FUZZTEST OFF)
if (WASM)
if (WEBGL)
set(WEBP_BUILD_WEBP_JS ON)
set(WEBP_ENABLE_SIMD OFF)
# ensure non-empty config var value
if (WASM_PTHREADS)
if (WEBGL_PTHREADS)
set(WEBP_USE_THREAD ON)
else()
set(WEBP_USE_THREAD OFF)

View File

@@ -5,7 +5,7 @@ This directory contains the web-based samples, tutorials, and the JavaScript wra
## Structure
- `examples/`
Contains the source for the Web tutorials, HTML samples, materials, and assets.
Contains the source for the WebGL 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 Web targets and compile all required materials and assets, you will need the Emscripten SDK installed and activated.
To build the WebGL 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 Web targets and compile all required materials and assets, you will
```
2. **Run the Build Script:**
From the root directory of the repository, execute the build script targeting Web:
From the root directory of the repository, execute the build script targeting WebGL:
```bash
./build.sh -p wasm release
./build.sh -p webgl 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-wasm-release/examples/`.
- Output everything into `out/cmake-webgl-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-wasm-release/web/examples/examples/your_sample/your_sample.html": {
"out/cmake-webgl-release/web/examples/examples/your_sample/your_sample.html": {
"dest": "samples/web/your_sample.md"
}
```

View File

@@ -4,8 +4,7 @@ material {
color
],
shadingModel : unlit,
culling : none,
featureLevel: 0
culling : none
}
fragment {

View File

@@ -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 wasm target first.", file=sys.stderr)
print("Could not find the built examples directory in out/. Please build the webgl target first.", file=sys.stderr)
# fallback to web/examples for testing, though it won't have the built assets
examples_dir = str(SCRIPT_DIR)

View File

@@ -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 (WASM_PTHREADS)
if (WEBGL_PTHREADS)
set(COPTS "${COPTS} -pthread")
set(LOPTS "${LOPTS} -pthread")
endif()
@@ -31,7 +31,6 @@ 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")

View File

@@ -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 wasm release
./build.sh -ap webgl 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-wasm-release/web/filament-js
cd out/cmake-webgl-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

View File

@@ -1,6 +1,6 @@
{
"name": "filament",
"version": "1.71.2",
"version": "1.71.3",
"description": "Real-time physically based rendering engine",
"main": "filament.js",
"module": "filament.js",

View File

@@ -16,7 +16,7 @@
/*
* This file exists only to test the buildability of our TypeScript annotations, To run the test,
* invoke Filament's easy build script with "./build.sh -up wasm release", or do:
* invoke Filament's easy build script with "./build.sh -up webgl release", or do:
*
* npx tsc --noEmit \
* ../../third_party/gl-matrix/gl-matrix.d.ts \