Compare commits
11 Commits
zm/update-
...
exv/mi-sc
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5a903f58d9 | ||
|
|
7309a05ac3 | ||
|
|
2132e5cda5 | ||
|
|
96b8015fb4 | ||
|
|
8b5af6f515 | ||
|
|
bd07193814 | ||
|
|
842967a410 | ||
|
|
a4e6ec2450 | ||
|
|
b6c551ac3c | ||
|
|
038062ec77 | ||
|
|
5d6b62de3e |
2
.github/workflows/npm-deploy.yml
vendored
2
.github/workflows/npm-deploy.yml
vendored
@@ -26,7 +26,7 @@ jobs:
|
||||
cd build/web && printf "y" | ./build.sh release
|
||||
- name: Deploy to npm
|
||||
run: |
|
||||
cd out/cmake-webgl-release/web/filament-js
|
||||
cd out/cmake-wasm-release/web/filament-js
|
||||
npm publish
|
||||
env:
|
||||
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
||||
|
||||
2
.github/workflows/postsubmit.yml
vendored
2
.github/workflows/postsubmit.yml
vendored
@@ -31,6 +31,8 @@ jobs:
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- uses: ./.github/actions/mac-prereq
|
||||
- name: Select Xcode 16.2
|
||||
run: sudo xcode-select -s /Applications/Xcode_16.2.app/Contents/Developer
|
||||
- name: Run build script
|
||||
run: |
|
||||
cd build/ios && printf "y" | ./build.sh continuous
|
||||
|
||||
2
.github/workflows/presubmit.yml
vendored
2
.github/workflows/presubmit.yml
vendored
@@ -184,6 +184,8 @@ jobs:
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- uses: ./.github/actions/mac-prereq
|
||||
- name: Select Xcode 16.2
|
||||
run: sudo xcode-select -s /Applications/Xcode_16.2.app/Contents/Developer
|
||||
- name: Run build script
|
||||
run: |
|
||||
cd build/ios && printf "y" | ./build.sh presubmit
|
||||
|
||||
2
.github/workflows/release.yml
vendored
2
.github/workflows/release.yml
vendored
@@ -286,6 +286,8 @@ jobs:
|
||||
with:
|
||||
ref: ${{ steps.git_ref.outputs.ref }}
|
||||
- uses: ./.github/actions/mac-prereq
|
||||
- name: Select Xcode 16.2
|
||||
run: sudo xcode-select -s /Applications/Xcode_16.2.app/Contents/Developer
|
||||
- name: Run build script
|
||||
env:
|
||||
TAG: ${{ steps.git_ref.outputs.tag }}
|
||||
|
||||
@@ -177,7 +177,7 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
||||
# ==================================================================================================
|
||||
# OS specific
|
||||
# ==================================================================================================
|
||||
if (UNIX AND NOT APPLE AND NOT ANDROID AND NOT WEBGL)
|
||||
if (UNIX AND NOT APPLE AND NOT ANDROID AND NOT WASM)
|
||||
set(LINUX TRUE)
|
||||
else()
|
||||
# since cmake 3.25 LINUX is automatically set based on CMAKE_SYSTEM_NAME, which the android
|
||||
@@ -218,7 +218,7 @@ if (LINUX)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if (ANDROID OR WEBGL OR IOS OR FILAMENT_LINUX_IS_MOBILE)
|
||||
if (ANDROID OR WASM OR IOS OR FILAMENT_LINUX_IS_MOBILE)
|
||||
set(IS_MOBILE_TARGET TRUE)
|
||||
endif()
|
||||
|
||||
@@ -226,7 +226,7 @@ if (ANDROID)
|
||||
add_definitions(-D__ANDROID_UNAVAILABLE_SYMBOLS_ARE_WEAK__)
|
||||
endif()
|
||||
|
||||
if (NOT ANDROID AND NOT WEBGL AND NOT IOS AND NOT FILAMENT_LINUX_IS_MOBILE)
|
||||
if (NOT ANDROID AND NOT WASM AND NOT IOS AND NOT FILAMENT_LINUX_IS_MOBILE)
|
||||
set(IS_HOST_PLATFORM TRUE)
|
||||
endif()
|
||||
|
||||
@@ -473,7 +473,7 @@ if (NOT MSVC)
|
||||
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -ffunction-sections -fdata-sections")
|
||||
endif()
|
||||
|
||||
if (ANDROID OR WEBGL)
|
||||
if (ANDROID OR WASM)
|
||||
# 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 (WEBGL)
|
||||
if (WASM)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-rtti")
|
||||
endif()
|
||||
|
||||
if (WEBGL_PTHREADS)
|
||||
if (WASM_PTHREADS)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread")
|
||||
endif()
|
||||
|
||||
@@ -503,7 +503,7 @@ if (ANDROID)
|
||||
# keep STL debug infos (mimics what the NDK does)
|
||||
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fno-limit-debug-info")
|
||||
endif()
|
||||
if (NOT MSVC AND NOT WEBGL)
|
||||
if (NOT MSVC AND NOT WASM)
|
||||
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fstack-protector")
|
||||
endif()
|
||||
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${EXTRA_SANITIZE_OPTIONS}")
|
||||
@@ -522,7 +522,7 @@ endif()
|
||||
# Linker flags
|
||||
# ==================================================================================================
|
||||
# Strip unused sections
|
||||
if (NOT WEBGL)
|
||||
if (NOT WASM)
|
||||
set(GC_SECTIONS "-Wl,--gc-sections")
|
||||
endif()
|
||||
|
||||
@@ -556,7 +556,7 @@ endif()
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${GC_SECTIONS} ${NO_EXEC_STACK}")
|
||||
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${GC_SECTIONS} ${B_SYMBOLIC_FUNCTIONS} ${BINARY_ALIGNMENT}")
|
||||
|
||||
if (WEBGL_PTHREADS)
|
||||
if (WASM_PTHREADS)
|
||||
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -pthread")
|
||||
endif()
|
||||
|
||||
@@ -586,7 +586,7 @@ endif()
|
||||
|
||||
# By default, build with Vulkan support on desktop platforms, although clients must request to use
|
||||
# it at run time.
|
||||
if (WIN32 OR WEBGL OR IOS)
|
||||
if (WIN32 OR WASM OR IOS)
|
||||
option(FILAMENT_SUPPORTS_VULKAN "Include the Vulkan backend" OFF)
|
||||
else()
|
||||
option(FILAMENT_SUPPORTS_VULKAN "Include the Vulkan backend" ON)
|
||||
@@ -604,7 +604,7 @@ if (FILAMENT_SUPPORTS_WEBP_TEXTURES)
|
||||
endif()
|
||||
|
||||
# Build with Metal support on non-WebGL Apple platforms.
|
||||
if (APPLE AND NOT WEBGL)
|
||||
if (APPLE AND NOT WASM)
|
||||
option(FILAMENT_SUPPORTS_METAL "Include the Metal backend" ON)
|
||||
else()
|
||||
option(FILAMENT_SUPPORTS_METAL "Include the Metal backend" OFF)
|
||||
@@ -614,7 +614,7 @@ if (FILAMENT_SUPPORTS_METAL)
|
||||
endif()
|
||||
|
||||
# Building filamat increases build times and isn't required for web, so turn it off by default.
|
||||
if (NOT WEBGL)
|
||||
if (NOT WASM)
|
||||
option(FILAMENT_BUILD_FILAMAT "Build filamat and JNI buildings" ON)
|
||||
else()
|
||||
option(FILAMENT_BUILD_FILAMAT "Build filamat and JNI buildings" OFF)
|
||||
@@ -732,6 +732,9 @@ string(TOLOWER "${DIST_ARCH}" DIST_ARCH)
|
||||
string(REPLACE "amd64" "x86_64" DIST_ARCH "${DIST_ARCH}")
|
||||
if (NOT DIST_DIR)
|
||||
set(DIST_DIR "${DIST_ARCH}")
|
||||
if (PLATFORM_NAME)
|
||||
set(DIST_DIR "${DIST_DIR}-${PLATFORM_NAME}")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# ==================================================================================================
|
||||
@@ -840,7 +843,7 @@ if (FILAMENT_IMPORT_PREBUILT_EXECUTABLES_DIR)
|
||||
set(IMPORT_EXECUTABLES_DIR ${FILAMENT_IMPORT_PREBUILT_EXECUTABLES_DIR})
|
||||
endif()
|
||||
|
||||
if (WEBGL)
|
||||
if (WASM)
|
||||
set(IMPORT_EXECUTABLES ${FILAMENT}/${IMPORT_EXECUTABLES_DIR}/ImportExecutables-Release.cmake)
|
||||
else()
|
||||
if (FILAMENT_EXPORT_PREBUILT_EXECUTABLES OR FILAMENT_IMPORT_PREBUILT_EXECUTABLES)
|
||||
@@ -875,7 +878,7 @@ function(get_resgen_vars ARCHIVE_DIR ARCHIVE_NAME)
|
||||
set(RESGEN_HEADER "${ARCHIVE_DIR}/${ARCHIVE_NAME}.h" PARENT_SCOPE)
|
||||
# Visual Studio makes it difficult to use assembly without using MASM. MASM doesn't support
|
||||
# the equivalent of .incbin, so on Windows we'll just tell resgen to output a C file.
|
||||
if (WEBGL OR WIN32 OR ANDROID_ON_WINDOWS)
|
||||
if (WASM OR WIN32 OR ANDROID_ON_WINDOWS)
|
||||
set(RESGEN_OUTPUTS "${OUTPUTS};${ARCHIVE_DIR}/${ARCHIVE_NAME}.c" PARENT_SCOPE)
|
||||
set(RESGEN_FLAGS -qcx ${ARCHIVE_DIR} -p ${ARCHIVE_NAME} PARENT_SCOPE)
|
||||
set(RESGEN_SOURCE "${ARCHIVE_DIR}/${ARCHIVE_NAME}.c" PARENT_SCOPE)
|
||||
@@ -980,7 +983,7 @@ add_subdirectory(${FILAMENT}/filament)
|
||||
|
||||
set(FILAMENT_SAMPLES_BINARY_DIR ${PROJECT_BINARY_DIR}/samples)
|
||||
|
||||
if (WEBGL)
|
||||
if (WASM)
|
||||
add_subdirectory(web/filament-js)
|
||||
add_subdirectory(web/examples)
|
||||
endif()
|
||||
|
||||
@@ -6,3 +6,6 @@
|
||||
appropriate header in [RELEASE_NOTES.md](./RELEASE_NOTES.md).
|
||||
|
||||
## Release notes for next branch cut
|
||||
|
||||
- iOS: add Apple silicon (`arm64`) iOS Simulator support. The sample Xcode projects now require Xcode 16+ (CI is pinned to Xcode 16.2).
|
||||
- WEBGL_PTHREADS renamed to WASM_PTHREADS in CMakeLists.txt
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
[](https://github.com/google/filament/actions/workflows/status-web.yml)
|
||||
|
||||
Filament is a real-time physically based rendering engine for Android, iOS, Linux, macOS, Windows,
|
||||
and WebGL. It is designed to be as small as possible and as efficient as possible on Android.
|
||||
and WASM. It is designed to be as small as possible and as efficient as possible on Android.
|
||||
|
||||
## Download
|
||||
|
||||
|
||||
@@ -20,6 +20,8 @@
|
||||
#include <filament/Texture.h>
|
||||
#include <filament/TextureSampler.h>
|
||||
|
||||
#include "common/CallbackUtils.h"
|
||||
|
||||
#include <math/mat3.h>
|
||||
#include <math/mat4.h>
|
||||
#include <math/vec2.h>
|
||||
@@ -256,6 +258,69 @@ Java_com_google_android_filament_MaterialInstance_nSetFloatParameterArray(JNIEnv
|
||||
env->ReleaseStringUTFChars(name_, name);
|
||||
}
|
||||
|
||||
extern "C"
|
||||
JNIEXPORT jboolean JNICALL
|
||||
Java_com_google_android_filament_MaterialInstance_nGetConstantBool(JNIEnv *env, jclass,
|
||||
jlong nativeMaterialInstance, jstring name_) {
|
||||
MaterialInstance* instance = (MaterialInstance*) nativeMaterialInstance;
|
||||
const char *name = env->GetStringUTFChars(name_, 0);
|
||||
jboolean result = instance->getConstant<bool>(name);
|
||||
env->ReleaseStringUTFChars(name_, name);
|
||||
return result;
|
||||
}
|
||||
|
||||
extern "C"
|
||||
JNIEXPORT jfloat JNICALL
|
||||
Java_com_google_android_filament_MaterialInstance_nGetConstantFloat(JNIEnv *env, jclass,
|
||||
jlong nativeMaterialInstance, jstring name_) {
|
||||
MaterialInstance* instance = (MaterialInstance*) nativeMaterialInstance;
|
||||
const char *name = env->GetStringUTFChars(name_, 0);
|
||||
jfloat result = instance->getConstant<float>(name);
|
||||
env->ReleaseStringUTFChars(name_, name);
|
||||
return result;
|
||||
}
|
||||
|
||||
extern "C"
|
||||
JNIEXPORT jint JNICALL
|
||||
Java_com_google_android_filament_MaterialInstance_nGetConstantInt(JNIEnv *env, jclass,
|
||||
jlong nativeMaterialInstance, jstring name_) {
|
||||
MaterialInstance* instance = (MaterialInstance*) nativeMaterialInstance;
|
||||
const char *name = env->GetStringUTFChars(name_, 0);
|
||||
jint result = instance->getConstant<int32_t>(name);
|
||||
env->ReleaseStringUTFChars(name_, name);
|
||||
return result;
|
||||
}
|
||||
|
||||
extern "C"
|
||||
JNIEXPORT void JNICALL
|
||||
Java_com_google_android_filament_MaterialInstance_nSetConstantBool(JNIEnv *env, jclass,
|
||||
jlong nativeMaterialInstance, jstring name_, jboolean x) {
|
||||
MaterialInstance* instance = (MaterialInstance*) nativeMaterialInstance;
|
||||
const char *name = env->GetStringUTFChars(name_, 0);
|
||||
instance->setConstant<bool>(name, x);
|
||||
env->ReleaseStringUTFChars(name_, name);
|
||||
}
|
||||
|
||||
extern "C"
|
||||
JNIEXPORT void JNICALL
|
||||
Java_com_google_android_filament_MaterialInstance_nSetConstantFloat(JNIEnv *env, jclass,
|
||||
jlong nativeMaterialInstance, jstring name_, jfloat x) {
|
||||
MaterialInstance* instance = (MaterialInstance*) nativeMaterialInstance;
|
||||
const char *name = env->GetStringUTFChars(name_, 0);
|
||||
instance->setConstant<float>(name, x);
|
||||
env->ReleaseStringUTFChars(name_, name);
|
||||
}
|
||||
|
||||
extern "C"
|
||||
JNIEXPORT void JNICALL
|
||||
Java_com_google_android_filament_MaterialInstance_nSetConstantInt(JNIEnv *env, jclass,
|
||||
jlong nativeMaterialInstance, jstring name_, jint x) {
|
||||
MaterialInstance* instance = (MaterialInstance*) nativeMaterialInstance;
|
||||
const char *name = env->GetStringUTFChars(name_, 0);
|
||||
instance->setConstant<int32_t>(name, x);
|
||||
env->ReleaseStringUTFChars(name_, name);
|
||||
}
|
||||
|
||||
// defined in TextureSampler.cpp
|
||||
namespace filament::JniUtils {
|
||||
TextureSampler from_long(jlong params) noexcept;
|
||||
@@ -592,3 +657,17 @@ Java_com_google_android_filament_MaterialInstance_nGetTransparencyMode(JNIEnv*,
|
||||
MaterialInstance* instance = (MaterialInstance*) nativeMaterialInstance;
|
||||
return (jint) instance->getTransparencyMode();
|
||||
}
|
||||
|
||||
extern "C"
|
||||
JNIEXPORT void JNICALL
|
||||
Java_com_google_android_filament_MaterialInstance_nCompile(JNIEnv *env, jclass clazz,
|
||||
jlong nativeMaterialInstance, jint priority, jint variants, jobject handler, jobject runnable) {
|
||||
MaterialInstance* materialInstance = (MaterialInstance*) nativeMaterialInstance;
|
||||
JniCallback* jniCallback = JniCallback::make(env, handler, runnable);
|
||||
materialInstance->compile(
|
||||
(MaterialInstance::CompilerPriorityQueue) priority,
|
||||
(UserVariantFilterBit) variants,
|
||||
jniCallback->getHandler(), [jniCallback](MaterialInstance*){
|
||||
JniCallback::postToJavaAndDestroy(jniCallback);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -523,11 +523,19 @@ public class Material {
|
||||
* for stereoscopic rendering. If an application is not planning to render in stereo, this bit
|
||||
* should be turned off to avoid unnecessary material compilations.
|
||||
*</p>
|
||||
*<p>
|
||||
* Note that it is possible to override specialization constants on a per-MaterialInstance basis
|
||||
* (see {@link MaterialInstance#setConstant}). In that case, the programs compiled by a call to
|
||||
* Material::compile() may not be reusable by that MaterialInstance. It's better to call
|
||||
* MaterialInstance::compile() in cases where you intend to override specialization constants.
|
||||
*</p>
|
||||
* @param priority Which priority queue to use, LOW or HIGH.
|
||||
* @param variants Variants to include to the compile command.
|
||||
* @param handler An {@link java.util.concurrent.Executor Executor}. On Android this can also be a {@link android.os.Handler Handler}.
|
||||
* @param callback callback called on the main thread when the compilation is done on
|
||||
* by backend.
|
||||
*
|
||||
* @see MaterialInstance#compile
|
||||
*/
|
||||
public void compile(@NonNull CompilerPriorityQueue priority,
|
||||
int variants,
|
||||
|
||||
@@ -18,6 +18,7 @@ package com.google.android.filament;
|
||||
|
||||
import androidx.annotation.IntRange;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.annotation.Size;
|
||||
|
||||
import com.google.android.filament.proguard.UsedByNative;
|
||||
@@ -142,6 +143,28 @@ public class MaterialInstance {
|
||||
return mMaterial;
|
||||
}
|
||||
|
||||
/**
|
||||
* Asynchronously ensures that a subset of this MaterialInstance's variants are compiled.
|
||||
*
|
||||
* <p>This function behaves identically to {@link Material#compile}, but takes into account
|
||||
* the specific constants overridden by {@link #setConstant}.</p>
|
||||
*
|
||||
* @param priority Priority of the compile command.
|
||||
* @param variants Variants to include to the compile command.
|
||||
* @param handler An {@link java.util.concurrent.Executor Executor}. On Android this can also be a {@link android.os.Handler Handler}.
|
||||
* @param callback callback called on the main thread when the compilation is done on
|
||||
* by backend.
|
||||
*
|
||||
* @see Material#compile
|
||||
* @see #setConstant
|
||||
*/
|
||||
public void compile(@NonNull Material.CompilerPriorityQueue priority,
|
||||
int variants,
|
||||
@Nullable Object handler,
|
||||
@Nullable Runnable callback) {
|
||||
nCompile(getNativeObject(), priority.ordinal(), variants, handler, callback);
|
||||
}
|
||||
|
||||
/** @return the name associated with this instance */
|
||||
@NonNull
|
||||
public String getName() {
|
||||
@@ -420,6 +443,69 @@ public class MaterialInstance {
|
||||
nSetParameterFloat4(getNativeObject(), name, color[0], color[1], color[2], color[3]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Overrides a specialization constant of this material instance.
|
||||
*
|
||||
* @param name The name of the constant as defined in the material.
|
||||
* @param value The value of the constant.
|
||||
* @see Material.Builder#constant
|
||||
*/
|
||||
public void setConstant(@NonNull String name, boolean value) {
|
||||
nSetConstantBool(getNativeObject(), name, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Overrides a specialization constant of this material instance.
|
||||
*
|
||||
* @param name The name of the constant as defined in the material.
|
||||
* @param value The value of the constant.
|
||||
* @see Material.Builder#constant
|
||||
*/
|
||||
public void setConstant(@NonNull String name, float value) {
|
||||
nSetConstantFloat(getNativeObject(), name, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Overrides a specialization constant of this material instance.
|
||||
*
|
||||
* @param name The name of the constant as defined in the material.
|
||||
* @param value The value of the constant.
|
||||
* @see Material.Builder#constant
|
||||
*/
|
||||
public void setConstant(@NonNull String name, int value) {
|
||||
nSetConstantInt(getNativeObject(), name, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of a specialization constant by name.
|
||||
*
|
||||
* @param name The name of the constant as defined in the material.
|
||||
* @return The value of the constant.
|
||||
*/
|
||||
public boolean getConstantBoolean(@NonNull String name) {
|
||||
return nGetConstantBool(getNativeObject(), name);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of a specialization constant by name.
|
||||
*
|
||||
* @param name The name of the constant as defined in the material.
|
||||
* @return The value of the constant.
|
||||
*/
|
||||
public float getConstantFloat(@NonNull String name) {
|
||||
return nGetConstantFloat(getNativeObject(), name);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of a specialization constant by name.
|
||||
*
|
||||
* @param name The name of the constant as defined in the material.
|
||||
* @return The value of the constant.
|
||||
*/
|
||||
public int getConstantInt(@NonNull String name) {
|
||||
return nGetConstantInt(getNativeObject(), name);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set-up a custom scissor rectangle; by default it is disabled.
|
||||
*
|
||||
@@ -955,6 +1041,17 @@ public class MaterialInstance {
|
||||
@NonNull String name, int element, @NonNull @Size(min = 1) float[] v,
|
||||
@IntRange(from = 0) int offset, @IntRange(from = 1) int count);
|
||||
|
||||
private static native boolean nGetConstantBool(long nativeMaterialInstance, @NonNull String name);
|
||||
private static native float nGetConstantFloat(long nativeMaterialInstance, @NonNull String name);
|
||||
private static native int nGetConstantInt(long nativeMaterialInstance, @NonNull String name);
|
||||
|
||||
private static native void nSetConstantBool(long nativeMaterialInstance,
|
||||
@NonNull String name, boolean x);
|
||||
private static native void nSetConstantFloat(long nativeMaterialInstance,
|
||||
@NonNull String name, float x);
|
||||
private static native void nSetConstantInt(long nativeMaterialInstance,
|
||||
@NonNull String name, int x);
|
||||
|
||||
private static native void nSetParameterTexture(long nativeMaterialInstance,
|
||||
@NonNull String name, long nativeTexture, long sampler);
|
||||
|
||||
@@ -1018,4 +1115,5 @@ public class MaterialInstance {
|
||||
private static native int nGetDepthFunc(long nativeMaterialInstance);
|
||||
private static native void nSetTransparencyMode(long nativeMaterialInstance, int mode);
|
||||
private static native int nGetTransparencyMode(long nativeMaterialInstance);
|
||||
private static native void nCompile(long nativeMaterialInstance, int priority, int variants, Object handler, Runnable callback);
|
||||
}
|
||||
|
||||
119
build.sh
119
build.sh
@@ -1,7 +1,7 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
# Host tools required by Android, WebGL, and iOS builds
|
||||
# Host tools required by Android, WASM, and iOS builds
|
||||
MOBILE_HOST_TOOLS="matc resgen cmgen filamesh uberz"
|
||||
WEB_HOST_TOOLS="${MOBILE_HOST_TOOLS} mipgen filamesh"
|
||||
|
||||
@@ -34,7 +34,7 @@ function print_help {
|
||||
echo " -m"
|
||||
echo " Compile with make instead of ninja."
|
||||
echo " -p platform1,platform2,..."
|
||||
echo " Where platformN is [desktop|android|ios|webgl|all]."
|
||||
echo " Where platformN is [desktop|android|ios|wasm|all]."
|
||||
echo " Platform(s) to build, defaults to desktop."
|
||||
echo " Building for iOS will automatically perform a partial desktop build."
|
||||
echo " -q abi1,abi2,..."
|
||||
@@ -53,8 +53,8 @@ function print_help {
|
||||
echo " -e"
|
||||
echo " Enable EGL on Linux support for desktop builds."
|
||||
echo " -l"
|
||||
echo " Build arm64/x86_64 universal libraries."
|
||||
echo " For iOS, this builds universal binaries for devices and the simulator (implies -s)."
|
||||
echo " Build universal libraries/frameworks."
|
||||
echo " For iOS, this builds XCFrameworks for devices and the simulator (implies -s)."
|
||||
echo " For macOS, this builds universal binaries for both Apple silicon and Intel-based Macs."
|
||||
echo " -k sample1,sample2,..."
|
||||
echo " When building for Android, also build select sample APKs."
|
||||
@@ -173,7 +173,7 @@ ISSUE_RELEASE_BUILD=false
|
||||
ISSUE_ANDROID_BUILD=false
|
||||
ISSUE_IOS_BUILD=false
|
||||
ISSUE_DESKTOP_BUILD=true
|
||||
ISSUE_WEBGL_BUILD=false
|
||||
ISSUE_WASM_BUILD=false
|
||||
|
||||
# Default: all
|
||||
ABI_ARMEABI_V7A=true
|
||||
@@ -356,12 +356,12 @@ function build_desktop {
|
||||
fi
|
||||
}
|
||||
|
||||
function build_webgl_with_target {
|
||||
function build_wasm_with_target {
|
||||
local lc_target=$(echo "$1" | tr '[:upper:]' '[:lower:]')
|
||||
|
||||
echo "Building WebGL ${lc_target}..."
|
||||
mkdir -p "out/cmake-webgl-${lc_target}"
|
||||
pushd "out/cmake-webgl-${lc_target}" > /dev/null
|
||||
echo "Building WASM ${lc_target}..."
|
||||
mkdir -p "out/cmake-wasm-${lc_target}"
|
||||
pushd "out/cmake-wasm-${lc_target}" > /dev/null
|
||||
|
||||
if [[ ! "${BUILD_TARGETS}" ]]; then
|
||||
BUILD_TARGETS=${BUILD_CUSTOM_TARGETS}
|
||||
@@ -378,13 +378,13 @@ function build_webgl_with_target {
|
||||
${IMPORT_EXECUTABLES_DIR_OPTION} \
|
||||
-DCMAKE_TOOLCHAIN_FILE="${EMSDK}/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake" \
|
||||
-DCMAKE_BUILD_TYPE="$1" \
|
||||
-DCMAKE_INSTALL_PREFIX="../webgl-${lc_target}/filament" \
|
||||
-DWEBGL=1 \
|
||||
-DCMAKE_INSTALL_PREFIX="../wasm-${lc_target}/filament" \
|
||||
-DWASM=1 \
|
||||
${WEBGPU_OPTION} \
|
||||
${BACKEND_DEBUG_FLAG_OPTION} \
|
||||
${EXCEPTIONS_OPTION} \
|
||||
../..
|
||||
ln -sf "out/cmake-webgl-${lc_target}/compile_commands.json" \
|
||||
ln -sf "out/cmake-wasm-${lc_target}/compile_commands.json" \
|
||||
../../compile_commands.json
|
||||
${BUILD_COMMAND} ${BUILD_TARGETS}
|
||||
)
|
||||
@@ -416,7 +416,7 @@ function build_webgl_with_target {
|
||||
popd > /dev/null
|
||||
}
|
||||
|
||||
function build_webgl {
|
||||
function build_wasm {
|
||||
# For the host tools, suppress install and always use Release.
|
||||
local old_install_command=${INSTALL_COMMAND}; INSTALL_COMMAND=
|
||||
local old_issue_debug_build=${ISSUE_DEBUG_BUILD}; ISSUE_DEBUG_BUILD=false
|
||||
@@ -429,11 +429,11 @@ function build_webgl {
|
||||
ISSUE_RELEASE_BUILD=${old_issue_release_build}
|
||||
|
||||
if [[ "${ISSUE_DEBUG_BUILD}" == "true" ]]; then
|
||||
build_webgl_with_target "Debug"
|
||||
build_wasm_with_target "Debug"
|
||||
fi
|
||||
|
||||
if [[ "${ISSUE_RELEASE_BUILD}" == "true" ]]; then
|
||||
build_webgl_with_target "Release"
|
||||
build_wasm_with_target "Release"
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -685,9 +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}"
|
||||
mkdir -p "out/cmake-ios-${lc_target}-${arch}-${platform}"
|
||||
|
||||
pushd "out/cmake-ios-${lc_target}-${arch}" > /dev/null
|
||||
pushd "out/cmake-ios-${lc_target}-${arch}-${platform}" > /dev/null
|
||||
|
||||
if [[ ! -d "CMakeFiles" ]] || [[ "${ISSUE_CMAKE_ALWAYS}" == "true" ]]; then
|
||||
cmake \
|
||||
@@ -746,38 +746,79 @@ function build_ios {
|
||||
# only arm64 devices support OpenGL 3.0 / Metal
|
||||
|
||||
if [[ "${ISSUE_DEBUG_BUILD}" == "true" ]]; then
|
||||
local out_dir="out/ios-debug/filament"
|
||||
local lib_dir="${out_dir}/lib"
|
||||
|
||||
build_ios_target "Debug" "arm64" "iphoneos"
|
||||
|
||||
if [[ "${IOS_BUILD_SIMULATOR}" == "true" ]]; then
|
||||
build_ios_target "Debug" "arm64" "iphonesimulator"
|
||||
build_ios_target "Debug" "x86_64" "iphonesimulator"
|
||||
|
||||
# Create a universal library for the simulator
|
||||
build/ios/create-universal-libs.sh \
|
||||
-o "${lib_dir}/universal" \
|
||||
"${lib_dir}/arm64-iphonesimulator" \
|
||||
"${lib_dir}/x86_64-iphonesimulator"
|
||||
fi
|
||||
|
||||
if [[ "${BUILD_UNIVERSAL_LIBRARIES}" == "true" ]]; then
|
||||
build/ios/create-universal-libs.sh \
|
||||
-o out/ios-debug/filament/lib/universal \
|
||||
out/ios-debug/filament/lib/arm64 \
|
||||
out/ios-debug/filament/lib/x86_64
|
||||
rm -rf out/ios-debug/filament/lib/arm64
|
||||
rm -rf out/ios-debug/filament/lib/x86_64
|
||||
# Always create XCFrameworks
|
||||
local xcframework_paths=("${lib_dir}/arm64-iphoneos")
|
||||
if [[ -d "${lib_dir}/universal" ]]; then
|
||||
xcframework_paths+=("${lib_dir}/universal")
|
||||
elif [[ -d "${lib_dir}/arm64-iphonesimulator" ]]; then
|
||||
# If we built only one simulator arch but not both
|
||||
xcframework_paths+=("${lib_dir}/arm64-iphonesimulator")
|
||||
elif [[ -d "${lib_dir}/x86_64-iphonesimulator" ]]; then
|
||||
xcframework_paths+=("${lib_dir}/x86_64-iphonesimulator")
|
||||
fi
|
||||
|
||||
build/ios/create-xc-frameworks.sh -o "${lib_dir}" "${xcframework_paths[@]}"
|
||||
|
||||
rm -rf \
|
||||
"${lib_dir}/arm64-iphoneos" \
|
||||
"${lib_dir}/arm64-iphonesimulator" \
|
||||
"${lib_dir}/x86_64-iphonesimulator" \
|
||||
"${lib_dir}/universal"
|
||||
|
||||
archive_ios "Debug"
|
||||
fi
|
||||
|
||||
if [[ "${ISSUE_RELEASE_BUILD}" == "true" ]]; then
|
||||
local out_dir="out/ios-release/filament"
|
||||
local lib_dir="${out_dir}/lib"
|
||||
|
||||
build_ios_target "Release" "arm64" "iphoneos"
|
||||
|
||||
if [[ "${IOS_BUILD_SIMULATOR}" == "true" ]]; then
|
||||
build_ios_target "Release" "arm64" "iphonesimulator"
|
||||
build_ios_target "Release" "x86_64" "iphonesimulator"
|
||||
|
||||
# Create a universal library for the simulator
|
||||
build/ios/create-universal-libs.sh \
|
||||
-o "${lib_dir}/universal" \
|
||||
"${lib_dir}/arm64-iphonesimulator" \
|
||||
"${lib_dir}/x86_64-iphonesimulator"
|
||||
fi
|
||||
|
||||
if [[ "${BUILD_UNIVERSAL_LIBRARIES}" == "true" ]]; then
|
||||
build/ios/create-universal-libs.sh \
|
||||
-o out/ios-release/filament/lib/universal \
|
||||
out/ios-release/filament/lib/arm64 \
|
||||
out/ios-release/filament/lib/x86_64
|
||||
rm -rf out/ios-release/filament/lib/arm64
|
||||
rm -rf out/ios-release/filament/lib/x86_64
|
||||
# Always create XCFrameworks
|
||||
local xcframework_paths=("${lib_dir}/arm64-iphoneos")
|
||||
if [[ -d "${lib_dir}/universal" ]]; then
|
||||
xcframework_paths+=("${lib_dir}/universal")
|
||||
elif [[ -d "${lib_dir}/arm64-iphonesimulator" ]]; then
|
||||
xcframework_paths+=("${lib_dir}/arm64-iphonesimulator")
|
||||
elif [[ -d "${lib_dir}/x86_64-iphonesimulator" ]]; then
|
||||
xcframework_paths+=("${lib_dir}/x86_64-iphonesimulator")
|
||||
fi
|
||||
|
||||
build/ios/create-xc-frameworks.sh -o "${lib_dir}" "${xcframework_paths[@]}"
|
||||
|
||||
rm -rf \
|
||||
"${lib_dir}/arm64-iphoneos" \
|
||||
"${lib_dir}/arm64-iphonesimulator" \
|
||||
"${lib_dir}/x86_64-iphonesimulator" \
|
||||
"${lib_dir}/universal"
|
||||
|
||||
archive_ios "Release"
|
||||
fi
|
||||
}
|
||||
@@ -809,7 +850,7 @@ function validate_build_command {
|
||||
fi
|
||||
fi
|
||||
# If building a WebAssembly module, ensure we know where Emscripten lives.
|
||||
if [[ "${EMSDK}" == "" ]] && [[ "${ISSUE_WEBGL_BUILD}" == "true" ]]; then
|
||||
if [[ "${EMSDK}" == "" ]] && [[ "${ISSUE_WASM_BUILD}" == "true" ]]; then
|
||||
echo "Error: EMSDK is not set, exiting"
|
||||
exit 1
|
||||
fi
|
||||
@@ -835,7 +876,7 @@ function run_test {
|
||||
}
|
||||
|
||||
function run_tests {
|
||||
if [[ "${ISSUE_WEBGL_BUILD}" == "true" ]]; then
|
||||
if [[ "${ISSUE_WASM_BUILD}" == "true" ]]; then
|
||||
if ! echo "TypeScript $(tsc --version)" ; then
|
||||
tsc --noEmit \
|
||||
third_party/gl-matrix/gl-matrix.d.ts \
|
||||
@@ -920,18 +961,18 @@ while getopts ":hacCfgimp:q:uvWslwedtk:bVx:S:X:Py:E" opt; do
|
||||
ios)
|
||||
ISSUE_IOS_BUILD=true
|
||||
;;
|
||||
webgl)
|
||||
ISSUE_WEBGL_BUILD=true
|
||||
wasm)
|
||||
ISSUE_WASM_BUILD=true
|
||||
;;
|
||||
all)
|
||||
ISSUE_ANDROID_BUILD=true
|
||||
ISSUE_IOS_BUILD=true
|
||||
ISSUE_DESKTOP_BUILD=true
|
||||
ISSUE_WEBGL_BUILD=false
|
||||
ISSUE_WASM_BUILD=false
|
||||
;;
|
||||
*)
|
||||
echo "Unknown platform ${platform}"
|
||||
echo "Platform must be one of [desktop|android|ios|webgl|all]"
|
||||
echo "Platform must be one of [desktop|android|ios|wasm|all]"
|
||||
echo ""
|
||||
exit 1
|
||||
;;
|
||||
@@ -1112,8 +1153,8 @@ if [[ "${ISSUE_IOS_BUILD}" == "true" ]]; then
|
||||
check_debug_release_build build_ios
|
||||
fi
|
||||
|
||||
if [[ "${ISSUE_WEBGL_BUILD}" == "true" ]]; then
|
||||
check_debug_release_build build_webgl
|
||||
if [[ "${ISSUE_WASM_BUILD}" == "true" ]]; then
|
||||
check_debug_release_build build_wasm
|
||||
fi
|
||||
|
||||
if [[ "${RUN_TESTS}" == "true" ]]; then
|
||||
|
||||
87
build/ios/create-xc-frameworks.sh
Executable file
87
build/ios/create-xc-frameworks.sh
Executable file
@@ -0,0 +1,87 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
|
||||
function print_help {
|
||||
local SELF_NAME
|
||||
SELF_NAME=$(basename "$0")
|
||||
echo "$SELF_NAME. Combine multiple platform-specific libraries into XCFramework bundles."
|
||||
echo ""
|
||||
echo "Usage:"
|
||||
echo " $SELF_NAME [options] <path>..."
|
||||
echo ""
|
||||
echo "Options:"
|
||||
echo " -h"
|
||||
echo " Print this help message."
|
||||
echo " -o"
|
||||
echo " Output directory to store the XCFrameworks."
|
||||
echo ""
|
||||
echo "Example:"
|
||||
echo " $SELF_NAME -o xcframeworks/ iphoneos/ iphonesimulator/"
|
||||
echo ""
|
||||
}
|
||||
|
||||
OUTPUT_DIR=""
|
||||
while getopts "ho:" opt; do
|
||||
case ${opt} in
|
||||
h)
|
||||
print_help
|
||||
exit 1
|
||||
;;
|
||||
o)
|
||||
OUTPUT_DIR="${OPTARG}"
|
||||
;;
|
||||
*)
|
||||
print_help
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
shift $((OPTIND - 1))
|
||||
|
||||
PATHS=("$@")
|
||||
|
||||
if [[ ! "${PATHS[*]}" ]]; then
|
||||
echo "One or more paths required."
|
||||
print_help
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ ! "${OUTPUT_DIR}" ]]; then
|
||||
echo "Output directory required."
|
||||
print_help
|
||||
exit 1
|
||||
fi
|
||||
|
||||
mkdir -p "${OUTPUT_DIR}"
|
||||
|
||||
# Use the first path as the leader to find all .a files
|
||||
LEADER_PATH="${PATHS[0]}"
|
||||
|
||||
for FILE in "${LEADER_PATH}"/*.a; do
|
||||
[ -f "${FILE}" ] || continue
|
||||
|
||||
LIBRARY_NAME="${FILE##*/}"
|
||||
FRAMEWORK_NAME="${LIBRARY_NAME%.a}.xcframework"
|
||||
|
||||
echo "Creating XCFramework for: ${LIBRARY_NAME}"
|
||||
|
||||
CMD="xcodebuild -create-xcframework"
|
||||
|
||||
for PLATFORM_PATH in "${PATHS[@]}"; do
|
||||
LIB_PATH="${PLATFORM_PATH}/${LIBRARY_NAME}"
|
||||
if [[ -f "${LIB_PATH}" ]]; then
|
||||
CMD="${CMD} -library ${LIB_PATH}"
|
||||
else
|
||||
echo "Warning: ${LIB_PATH} does not exist, skipping this platform for ${LIBRARY_NAME}"
|
||||
fi
|
||||
done
|
||||
|
||||
CMD="${CMD} -output ${OUTPUT_DIR}/${FRAMEWORK_NAME}"
|
||||
|
||||
# Remove existing framework if it exists
|
||||
rm -rf "${OUTPUT_DIR}/${FRAMEWORK_NAME}"
|
||||
|
||||
eval "${CMD}"
|
||||
done
|
||||
@@ -8,4 +8,4 @@ set -x
|
||||
source `dirname $0`/../common/build-common.sh
|
||||
pushd `dirname $0`/../.. > /dev/null
|
||||
|
||||
./build.sh -p webgl -c $RUN_TESTS $GENERATE_ARCHIVES $BUILD_DEBUG $BUILD_RELEASE
|
||||
./build.sh -p wasm -c $RUN_TESTS $GENERATE_ARCHIVES $BUILD_DEBUG $BUILD_RELEASE
|
||||
|
||||
@@ -234,11 +234,11 @@ book.</p>
|
||||
<p>The process for copying and processing these READMEs is outlined in
|
||||
<a href="#introductory-doc">Introductory docs</a>.</p>
|
||||
<h3 id="web-examples-and-tutorials"><a class="header" href="#web-examples-and-tutorials">Web Examples and Tutorials</a></h3>
|
||||
<p>Filament provides a number of WebGL tutorials and examples in the <code>web/</code> directory. These are
|
||||
compiled during the WebGL CMake build and are integrated into the documentation via
|
||||
<p>Filament provides a number of web tutorials and examples in the <code>web/</code> directory. These are
|
||||
compiled during the web CMake build and are integrated into the documentation via
|
||||
<code>duplicates.json</code>. The process is entirely automated:</p>
|
||||
<ol>
|
||||
<li><code>run.py</code> maps the <code>.html</code> and <code>.md</code> WebGL outputs from the <code>out/cmake-webgl-release/...</code>
|
||||
<li><code>run.py</code> maps the <code>.html</code> and <code>.md</code> web outputs from the <code>out/cmake-wasm-release/...</code>
|
||||
directory into <code>docs_src/src_mdbook/src/samples/web/</code> using the instructions in <code>duplicates.json</code>.</li>
|
||||
<li>While transferring <code>.html</code> to <code>.md</code>, <code>run.py</code> strips away the <code><!DOCTYPE html></code>, <code><head></code>, and
|
||||
<code><html></code> tags. By retaining only the <code><style></code> and <code><body></code> elements, the HTML samples can be
|
||||
|
||||
@@ -166,7 +166,7 @@
|
||||
<a href="https://github.com/google/filament/actions/workflows/status-windows.yml"><img src="https://github.com/google/filament/actions/workflows/status-windows.yml/badge.svg" alt="Windows Build Status" /></a>
|
||||
<a href="https://github.com/google/filament/actions/workflows/status-web.yml"><img src="https://github.com/google/filament/actions/workflows/status-web.yml/badge.svg" alt="Web Build Status" /></a></p>
|
||||
<p>Filament is a real-time physically based rendering engine for Android, iOS, Linux, macOS, Windows,
|
||||
and WebGL. It is designed to be as small as possible and as efficient as possible on Android.</p>
|
||||
and WASM. It is designed to be as small as possible and as efficient as possible on Android.</p>
|
||||
<h2 id="download"><a class="header" href="#download">Download</a></h2>
|
||||
<p><a href="https://github.com/google/filament/releases">Download Filament releases</a> to access stable builds.
|
||||
Filament release archives contains host-side tools that are required to generate assets.</p>
|
||||
|
||||
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.
@@ -81,10 +81,10 @@ The process for copying and processing these READMEs is outlined in
|
||||
[Introductory docs](#introductory-doc).
|
||||
|
||||
### Web Examples and Tutorials
|
||||
Filament provides a number of WebGL tutorials and examples in the `web/` directory. These are
|
||||
compiled during the WebGL CMake build and are integrated into the documentation via
|
||||
Filament provides a number of web tutorials and examples in the `web/` directory. These are
|
||||
compiled during the web CMake build and are integrated into the documentation via
|
||||
`duplicates.json`. The process is entirely automated:
|
||||
1. `run.py` maps the `.html` and `.md` WebGL outputs from the `out/cmake-webgl-release/...`
|
||||
1. `run.py` maps the `.html` and `.md` web outputs from the `out/cmake-wasm-release/...`
|
||||
directory into `docs_src/src_mdbook/src/samples/web/` using the instructions in `duplicates.json`.
|
||||
2. While transferring `.html` to `.md`, `run.py` strips away the `<!DOCTYPE html>`, `<head>`, and
|
||||
`<html>` tags. By retaining only the `<style>` and `<body>` elements, the HTML samples can be
|
||||
|
||||
@@ -20,7 +20,7 @@ import glob
|
||||
import re
|
||||
|
||||
CUR_DIR = os.path.dirname(os.path.abspath(__file__))
|
||||
OUT_DIR = os.path.join(CUR_DIR, "../../out/cmake-webgl-release/web/examples/examples")
|
||||
OUT_DIR = os.path.join(CUR_DIR, "../../out/cmake-wasm-release/web/examples/examples")
|
||||
BOOK_DIR = os.path.join(CUR_DIR, "../src_mdbook/book")
|
||||
|
||||
def setup_dirs():
|
||||
|
||||
@@ -106,43 +106,43 @@
|
||||
"filament/backend/test/README.md": {
|
||||
"dest": "dup/backend_test.md"
|
||||
},
|
||||
"out/cmake-webgl-release/web/examples/examples/triangle/triangle.md": {
|
||||
"out/cmake-wasm-release/web/examples/examples/triangle/triangle.md": {
|
||||
"dest": "samples/web/triangle.md"
|
||||
},
|
||||
"out/cmake-webgl-release/web/examples/examples/redball/redball.md": {
|
||||
"out/cmake-wasm-release/web/examples/examples/redball/redball.md": {
|
||||
"dest": "samples/web/redball.md"
|
||||
},
|
||||
"out/cmake-webgl-release/web/examples/examples/suzanne/suzanne.md": {
|
||||
"out/cmake-wasm-release/web/examples/examples/suzanne/suzanne.md": {
|
||||
"dest": "samples/web/suzanne.md"
|
||||
},
|
||||
"out/cmake-webgl-release/web/examples/examples/animation/animation.html": {
|
||||
"out/cmake-wasm-release/web/examples/examples/animation/animation.html": {
|
||||
"dest": "samples/web/animation.md"
|
||||
},
|
||||
"out/cmake-webgl-release/web/examples/examples/cube_fl0/cube_fl0.html": {
|
||||
"out/cmake-wasm-release/web/examples/examples/cube_fl0/cube_fl0.html": {
|
||||
"dest": "samples/web/cube_fl0.md"
|
||||
},
|
||||
"out/cmake-webgl-release/web/examples/examples/helmet/helmet.html": {
|
||||
"out/cmake-wasm-release/web/examples/examples/helmet/helmet.html": {
|
||||
"dest": "samples/web/helmet.md"
|
||||
},
|
||||
"out/cmake-webgl-release/web/examples/examples/morphing/morphing.html": {
|
||||
"out/cmake-wasm-release/web/examples/examples/morphing/morphing.html": {
|
||||
"dest": "samples/web/morphing.md"
|
||||
},
|
||||
"out/cmake-webgl-release/web/examples/examples/parquet/parquet.html": {
|
||||
"out/cmake-wasm-release/web/examples/examples/parquet/parquet.html": {
|
||||
"dest": "samples/web/parquet.md"
|
||||
},
|
||||
"out/cmake-webgl-release/web/examples/examples/skinning/skinning.html": {
|
||||
"out/cmake-wasm-release/web/examples/examples/skinning/skinning.html": {
|
||||
"dest": "samples/web/skinning.md"
|
||||
},
|
||||
"out/cmake-webgl-release/web/examples/examples/sky/sky.html": {
|
||||
"out/cmake-wasm-release/web/examples/examples/sky/sky.html": {
|
||||
"dest": "samples/web/sky.md",
|
||||
"replacements": {
|
||||
"<!-- mdbook: add fullscreen mode -->": "<a href=\"../../web/sky.html\">Full screen</a>"
|
||||
}
|
||||
},
|
||||
"./out/cmake-webgl-release/web/examples/examples/sky/sky.html": {
|
||||
"./out/cmake-wasm-release/web/examples/examples/sky/sky.html": {
|
||||
"dest": "web/sky.html"
|
||||
},
|
||||
"out/cmake-webgl-release/web/examples/examples/remote/remote.html": {
|
||||
"out/cmake-wasm-release/web/examples/examples/remote/remote.html": {
|
||||
"dest": "remote/index.html"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@ FILAMENT_BOT_TOKEN=$2
|
||||
set -ex
|
||||
|
||||
function update_to_main() {
|
||||
./build.sh -p webgl release
|
||||
./build.sh -p wasm release
|
||||
python3 docs_src/build/run.py
|
||||
mkdir -p tmp
|
||||
pushd .
|
||||
|
||||
@@ -744,10 +744,10 @@ if (MSVC)
|
||||
set(OPTIMIZATION_FLAGS
|
||||
/fp:fast
|
||||
)
|
||||
elseif(WEBGL)
|
||||
elseif (WASM)
|
||||
# Avoid strict-vtable-pointers here, it is broken in WebAssembly.
|
||||
set(OPTIMIZATION_FLAGS -fvisibility-inlines-hidden)
|
||||
elseif(FILAMENT_USING_GCC)
|
||||
elseif (FILAMENT_USING_GCC)
|
||||
set(OPTIMIZATION_FLAGS
|
||||
-ffast-math
|
||||
-fno-finite-math-only
|
||||
|
||||
@@ -124,7 +124,7 @@ if (FILAMENT_SUPPORTS_OPENGL AND NOT FILAMENT_USE_EXTERNAL_GLES3)
|
||||
list(APPEND SRCS src/opengl/platforms/PlatformCocoaGL.mm)
|
||||
list(APPEND SRCS src/opengl/platforms/CocoaExternalImage.mm)
|
||||
endif()
|
||||
elseif (WEBGL)
|
||||
elseif (WASM)
|
||||
list(APPEND SRCS src/opengl/platforms/PlatformWebGL.cpp)
|
||||
elseif (LINUX)
|
||||
if (FILAMENT_SUPPORTS_X11)
|
||||
@@ -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 WEBGL)
|
||||
if(FILAMENT_SUPPORTS_OPENGL AND NOT IOS AND NOT ANDROID AND NOT WASM)
|
||||
target_link_libraries(${TARGET} PRIVATE bluegl)
|
||||
endif()
|
||||
|
||||
@@ -463,7 +463,7 @@ if (MSVC)
|
||||
set(OPTIMIZATION_FLAGS
|
||||
/fp:fast
|
||||
)
|
||||
elseif(WEBGL)
|
||||
elseif(WASM)
|
||||
# Avoid strict-vtable-pointers here, it is broken in WebAssembly.
|
||||
set(OPTIMIZATION_FLAGS -fvisibility-inlines-hidden)
|
||||
elseif(FILAMENT_USING_GCC)
|
||||
@@ -699,7 +699,7 @@ if (FILAMENT_BUILD_TESTING)
|
||||
# ==================================================================================================
|
||||
# Compute tests
|
||||
#
|
||||
#if (NOT IOS AND NOT WEBGL)
|
||||
#if (NOT IOS AND NOT WASM)
|
||||
#
|
||||
#add_executable(compute_test
|
||||
# test/ComputeTest.cpp
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include <TargetConditionals.h>
|
||||
#include "backend/PresentCallable.h"
|
||||
#include "private/backend/CommandStream.h"
|
||||
#include "CommandStreamDispatcher.h"
|
||||
@@ -160,9 +161,11 @@ MetalDriver::MetalDriver(
|
||||
}
|
||||
|
||||
mContext->supportsDepthClamp = false;
|
||||
#if !TARGET_OS_SIMULATOR
|
||||
if (@available(macOS 10.11, iOS 11.0, *)) {
|
||||
mContext->supportsDepthClamp = true;
|
||||
}
|
||||
#endif
|
||||
|
||||
// In order to support resolve store action on depth attachment, the GPU needs to support it.
|
||||
// Note that support for depth resolve implies support for stencil resolve using .sample0 resolve filter.
|
||||
|
||||
@@ -139,10 +139,8 @@ public:
|
||||
Builder& package(const void* UTILS_NONNULL payload, size_t size);
|
||||
|
||||
template<typename T>
|
||||
using is_supported_constant_parameter_t = std::enable_if_t<
|
||||
std::is_same_v<int32_t, T> ||
|
||||
std::is_same_v<float, T> ||
|
||||
std::is_same_v<bool, T>>;
|
||||
using is_supported_constant_parameter_t =
|
||||
MaterialInstance::is_supported_constant_parameter_t<T>;
|
||||
|
||||
/**
|
||||
* Specialize a constant parameter specified in the material definition with a concrete
|
||||
@@ -243,11 +241,18 @@ public:
|
||||
* for stereoscopic rendering. If an application is not planning to render in stereo, this bit
|
||||
* should be turned off to avoid unnecessary material compilations.
|
||||
*
|
||||
* Note that it is possible to override specialization constants on a per-MaterialInstance basis
|
||||
* (@see MaterialInstance::setConstant). In that case, the programs compiled by a call to
|
||||
* Material::compile() may not be reusable by that MaterialInstance. It's better to call
|
||||
* MaterialInstance::compile() in cases where you intend to override specialization constants.
|
||||
*
|
||||
* @param priority Which priority queue to use, LOW or HIGH.
|
||||
* @param variants Variants to include to the compile command.
|
||||
* @param handler Handler to dispatch the callback or nullptr for the default handler
|
||||
* @param callback callback called on the main thread when the compilation is done on
|
||||
* by backend.
|
||||
*
|
||||
* @see Material::compile
|
||||
*/
|
||||
void compile(CompilerPriorityQueue priority,
|
||||
UserVariantFilterMask variants,
|
||||
|
||||
@@ -94,6 +94,12 @@ public:
|
||||
std::is_same_v<math::mat3f, T>
|
||||
>;
|
||||
|
||||
template<typename T>
|
||||
using is_supported_constant_parameter_t = std::enable_if_t<
|
||||
std::is_same_v<int32_t, T> ||
|
||||
std::is_same_v<float, T> ||
|
||||
std::is_same_v<bool, T>>;
|
||||
|
||||
/**
|
||||
* Creates a new MaterialInstance using another MaterialInstance as a template for initialization.
|
||||
* The new MaterialInstance is an instance of the same Material of the template instance and
|
||||
@@ -276,6 +282,91 @@ public:
|
||||
return getParameter<T>(name, strlen(name));
|
||||
}
|
||||
|
||||
/**
|
||||
* Overrides a specialization constant of this material instance.
|
||||
*
|
||||
* @tparam T The type of the constant. Must be int32_t, float, or bool.
|
||||
* @param name The name of the constant as defined in the material. Cannot be nullptr.
|
||||
* @param nameLength Length in `char` of the name parameter.
|
||||
* @param value The value of the constant.
|
||||
*
|
||||
* @see Material::Builder::constant
|
||||
*/
|
||||
template<typename T, typename = is_supported_constant_parameter_t<T>>
|
||||
void setConstant(const char* UTILS_NONNULL name, size_t nameLength, T value);
|
||||
|
||||
/** inline helper to provide the name as a null-terminated string literal */
|
||||
template<typename T, typename = is_supported_constant_parameter_t<T>>
|
||||
void setConstant(StringLiteral const name, T value) {
|
||||
setConstant<T>(name.data, name.size, value);
|
||||
}
|
||||
|
||||
/** inline helper to provide the name as a null-terminated C string */
|
||||
template<typename T, typename = is_supported_constant_parameter_t<T>>
|
||||
void setConstant(const char* UTILS_NONNULL name, T value) {
|
||||
setConstant<T>(name, strlen(name), value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of a specialization constant by name.
|
||||
*
|
||||
* @tparam T The type of the constant. Must be int32_t, float, or bool.
|
||||
* @param name The name of the constant as defined in the material. Cannot be nullptr.
|
||||
* @param nameLength Length in `char` of the name parameter.
|
||||
* @return The value of the constant.
|
||||
*/
|
||||
template<typename T, typename = is_supported_constant_parameter_t<T>>
|
||||
T getConstant(const char* UTILS_NONNULL name, size_t nameLength) const;
|
||||
|
||||
/** inline helper to provide the name as a null-terminated C string */
|
||||
template<typename T, typename = is_supported_constant_parameter_t<T>>
|
||||
T getConstant(StringLiteral const name) const {
|
||||
return getConstant<T>(name.data, name.size);
|
||||
}
|
||||
|
||||
/** inline helper to provide the name as a null-terminated C string */
|
||||
template<typename T, typename = is_supported_constant_parameter_t<T>>
|
||||
T getConstant(const char* UTILS_NONNULL name) const {
|
||||
return getConstant<T>(name, strlen(name));
|
||||
}
|
||||
|
||||
using CompilerPriorityQueue = backend::CompilerPriorityQueue;
|
||||
|
||||
/**
|
||||
* Asynchronously ensures that a subset of this MaterialInstance's variants are compiled.
|
||||
*
|
||||
* This function behaves identically to Material::compile(), but takes into account the
|
||||
* specific constants overridden by setConstant().
|
||||
*
|
||||
* @param priority Which priority queue to use, LOW or HIGH.
|
||||
* @param variants Variants to include to the compile command.
|
||||
* @param handler Handler to dispatch the callback or nullptr for the default handler
|
||||
* @param callback callback called on the main thread when the compilation is done on
|
||||
* by backend.
|
||||
*
|
||||
* @see Material::compile
|
||||
* @see setConstant
|
||||
*/
|
||||
void compile(CompilerPriorityQueue priority,
|
||||
UserVariantFilterMask variants,
|
||||
backend::CallbackHandler* UTILS_NULLABLE handler = nullptr,
|
||||
utils::Invocable<void(MaterialInstance* UTILS_NONNULL)>&& callback = {}) noexcept;
|
||||
|
||||
inline void compile(CompilerPriorityQueue priority,
|
||||
UserVariantFilterBit variants,
|
||||
backend::CallbackHandler* UTILS_NULLABLE handler = nullptr,
|
||||
utils::Invocable<void(MaterialInstance* UTILS_NONNULL)>&& callback = {}) noexcept {
|
||||
compile(priority, UserVariantFilterMask(variants), handler,
|
||||
std::forward<utils::Invocable<void(MaterialInstance* UTILS_NONNULL)>>(callback));
|
||||
}
|
||||
|
||||
inline void compile(CompilerPriorityQueue priority,
|
||||
backend::CallbackHandler* UTILS_NULLABLE handler = nullptr,
|
||||
utils::Invocable<void(MaterialInstance* UTILS_NONNULL)>&& callback = {}) noexcept {
|
||||
compile(priority, UserVariantFilterBit::ALL, handler,
|
||||
std::forward<utils::Invocable<void(MaterialInstance* UTILS_NONNULL)>>(callback));
|
||||
}
|
||||
|
||||
/**
|
||||
* Set-up a custom scissor rectangle; by default it is disabled.
|
||||
*
|
||||
|
||||
@@ -182,15 +182,11 @@ Program::SpecializationConstant LocalProgramCache::getConstantImpl(
|
||||
std::string_view name) const noexcept {
|
||||
assert_invariant(mMaterial != nullptr);
|
||||
|
||||
MaterialDefinition const& definition = mMaterial->getDefinition();
|
||||
auto it = definition.specializationConstantsNameToIndex.find(name);
|
||||
if (it != definition.specializationConstantsNameToIndex.cend()) {
|
||||
return getConstantImpl(it->second + CONFIG_MAX_RESERVED_SPEC_CONSTANTS);
|
||||
}
|
||||
auto const& constants = mMaterial->getDefinition().specializationConstantsNameToIndex;
|
||||
auto it = constants.find(name);
|
||||
FILAMENT_CHECK_PRECONDITION(it != constants.end()) << "Constant " << name << " does not exist";
|
||||
|
||||
CString name_cstring(name);
|
||||
PANIC_PRECONDITION("No such constant exists: %s", name_cstring.c_str());
|
||||
return {};
|
||||
return getConstantImpl(it->second + CONFIG_MAX_RESERVED_SPEC_CONSTANTS);
|
||||
}
|
||||
|
||||
void LocalProgramCache::setConstants(
|
||||
@@ -240,6 +236,13 @@ void LocalProgramCache::setConstants(
|
||||
}
|
||||
}
|
||||
|
||||
void LocalProgramCache::setConstants(
|
||||
FixedCapacityVector<Program::SpecializationConstant> constants) noexcept {
|
||||
assert_invariant(mMaterial != nullptr);
|
||||
|
||||
setConstantsImpl(std::move(constants));
|
||||
}
|
||||
|
||||
void LocalProgramCache::setConstantsImpl(
|
||||
FixedCapacityVector<Program::SpecializationConstant> constants) noexcept {
|
||||
FEngine& engine = mMaterial->getEngine();
|
||||
|
||||
@@ -119,7 +119,14 @@ public:
|
||||
std::pair<std::string_view, backend::Program::SpecializationConstant>>
|
||||
constants) noexcept;
|
||||
|
||||
// Set constants list directly.
|
||||
void setConstants(utils::FixedCapacityVector<backend::Program::SpecializationConstant>
|
||||
constants) noexcept;
|
||||
|
||||
private:
|
||||
// Apply any pending specialization constants. Invalidates programs as necessary.
|
||||
void flushConstants() const;
|
||||
|
||||
backend::Handle<backend::HwProgram> prepareProgramSlow(backend::DriverApi& driver,
|
||||
Variant const variant,
|
||||
backend::CompilerPriorityQueue const priorityQueue) const noexcept;
|
||||
|
||||
@@ -233,6 +233,26 @@ template UTILS_PUBLIC mat3f MaterialInstance::getParameter<mat3f> (const ch
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
|
||||
template<typename T, typename>
|
||||
void MaterialInstance::setConstant(const char* name, size_t nameLength, T value) {
|
||||
downcast(this)->setConstantImpl(std::string_view{name, nameLength}, value);
|
||||
}
|
||||
|
||||
template UTILS_PUBLIC void MaterialInstance::setConstant<int32_t>(const char* name, size_t nameLength, int32_t value);
|
||||
template UTILS_PUBLIC void MaterialInstance::setConstant<float>(const char* name, size_t nameLength, float value);
|
||||
template UTILS_PUBLIC void MaterialInstance::setConstant<bool>(const char* name, size_t nameLength, bool value);
|
||||
|
||||
template<typename T, typename>
|
||||
T MaterialInstance::getConstant(const char* name, size_t nameLength) const {
|
||||
return downcast(this)->getConstantImpl<T>(std::string_view{name, nameLength});
|
||||
}
|
||||
|
||||
template UTILS_PUBLIC int32_t MaterialInstance::getConstant<int32_t>(const char* name, size_t nameLength) const;
|
||||
template UTILS_PUBLIC float MaterialInstance::getConstant<float>(const char* name, size_t nameLength) const;
|
||||
template UTILS_PUBLIC bool MaterialInstance::getConstant<bool>(const char* name, size_t nameLength) const;
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
|
||||
Material const* MaterialInstance::getMaterial() const noexcept {
|
||||
return downcast(this)->getMaterial();
|
||||
}
|
||||
@@ -403,4 +423,10 @@ void MaterialInstance::commit(Engine& engine) const {
|
||||
downcast(this)->commit(downcast(engine));
|
||||
}
|
||||
|
||||
void MaterialInstance::compile(CompilerPriorityQueue const priority,
|
||||
UserVariantFilterMask const variants, CallbackHandler* handler,
|
||||
utils::Invocable<void(MaterialInstance*)>&& callback) noexcept {
|
||||
downcast(this)->compile(priority, variants, handler, std::move(callback));
|
||||
}
|
||||
|
||||
} // namespace filament
|
||||
|
||||
@@ -186,12 +186,10 @@ void PostProcessManager::PostProcessMaterial::loadMaterial(FEngine& engine) cons
|
||||
}
|
||||
|
||||
UTILS_NOINLINE
|
||||
FMaterial* PostProcessManager::PostProcessMaterial::getMaterial(FEngine& engine,
|
||||
DriverApi& driver, Variant::type_t const variant) const noexcept {
|
||||
FMaterial* PostProcessManager::PostProcessMaterial::getMaterial(FEngine& engine) const noexcept {
|
||||
if (UTILS_UNLIKELY(mSize)) {
|
||||
loadMaterial(engine);
|
||||
}
|
||||
mMaterial->prepareProgram(driver, Variant{ variant }, CompilerPriorityQueue::CRITICAL);
|
||||
return mMaterial;
|
||||
}
|
||||
|
||||
@@ -249,6 +247,20 @@ void PostProcessManager::bindPerRenderableDescriptorSet(DriverApi& driver) const
|
||||
{ { 0, 0 }, driver });
|
||||
}
|
||||
|
||||
FMaterialInstance* PostProcessManager::getMaterialInstance(backend::DriverApi& driver,
|
||||
FMaterial const* ma, Variant::type_t variant) const {
|
||||
FMaterialInstance* mi = mMaterialInstanceManager.getMaterialInstance(ma);
|
||||
mi->prepareProgram(driver, Variant{ variant }, backend::CompilerPriorityQueue::CRITICAL);
|
||||
return mi;
|
||||
}
|
||||
|
||||
FMaterialInstance* PostProcessManager::getMaterialInstanceWithTag(backend::DriverApi& driver,
|
||||
FMaterial const* ma, uint32_t tag, Variant::type_t variant) const {
|
||||
FMaterialInstance* mi = mMaterialInstanceManager.getMaterialInstance(ma, tag);
|
||||
mi->prepareProgram(driver, Variant { variant }, backend::CompilerPriorityQueue::CRITICAL);
|
||||
return mi;
|
||||
}
|
||||
|
||||
UboManager* PostProcessManager::getUboManager() const noexcept {
|
||||
return mEngine.getUboManager();
|
||||
}
|
||||
@@ -468,9 +480,10 @@ void PostProcessManager::unbindAllDescriptorSets(DriverApi& driver) noexcept {
|
||||
|
||||
UTILS_NOINLINE
|
||||
PipelineState PostProcessManager::getPipelineState(
|
||||
FMaterial const* const ma, Variant::type_t const variant) const noexcept {
|
||||
FMaterialInstance const* const mi, Variant::type_t const variant) const noexcept {
|
||||
FMaterial const* const ma = mi->getMaterial();
|
||||
return {
|
||||
.program = ma->getProgram(Variant{ variant }),
|
||||
.program = mi->getProgram(Variant{ variant }),
|
||||
.vertexBufferInfo = mFullScreenQuadVbih,
|
||||
.pipelineLayout = {
|
||||
.setLayout = {
|
||||
@@ -478,7 +491,7 @@ PipelineState PostProcessManager::getPipelineState(
|
||||
mPerRenderableDslh,
|
||||
ma->getDescriptorSetLayout().getHandle()
|
||||
}},
|
||||
.rasterState = ma->getRasterState()
|
||||
.rasterState = mi->getRasterState()
|
||||
};
|
||||
}
|
||||
|
||||
@@ -518,8 +531,7 @@ void PostProcessManager::commitAndRenderFullScreenQuad(DriverApi& driver,
|
||||
PostProcessVariant const variant) const noexcept {
|
||||
mi->commit(driver, getUboManager());
|
||||
mi->use(driver);
|
||||
FMaterial const* const ma = mi->getMaterial();
|
||||
PipelineState const pipeline = getPipelineState(ma, variant);
|
||||
PipelineState const pipeline = getPipelineState(mi, variant);
|
||||
|
||||
assert_invariant(
|
||||
((out.params.readOnlyDepthStencil & RenderPassParams::READONLY_DEPTH)
|
||||
@@ -636,12 +648,12 @@ PostProcessManager::StructurePassOutput PostProcessManager::structure(FrameGraph
|
||||
|
||||
auto in = resources.getTexture(data.depth);
|
||||
auto& material = getPostProcessMaterial("mipmapDepth");
|
||||
FMaterial const* const ma = material.getMaterial(mEngine, driver);
|
||||
FMaterialInstance* const mi = getMaterialInstance(ma);
|
||||
FMaterial const* const ma = material.getMaterial(mEngine);
|
||||
FMaterialInstance* const mi = getMaterialInstance(driver, ma);
|
||||
// Only the depth texture is changing in the material instance (no UBO updates),
|
||||
// we do not move getMaterialInstance() inside the loop.
|
||||
|
||||
auto pipeline = getPipelineState(ma);
|
||||
auto pipeline = getPipelineState(mi);
|
||||
|
||||
// The first mip already exists, so we process n-1 lods
|
||||
for (size_t level = 0; level < levelCount - 1; level++) {
|
||||
@@ -1001,14 +1013,13 @@ FrameGraphId<FrameGraphTexture> PostProcessManager::screenSpaceAmbientOcclusion(
|
||||
#endif
|
||||
auto& material = getPostProcessMaterial(materialName);
|
||||
|
||||
FMaterial* ma = material.getMaterial(mEngine, driver);
|
||||
FMaterial* ma = material.getMaterial(mEngine);
|
||||
ma->getPrograms().setConstants({
|
||||
{ "useVisibilityBitmasks", options.gtao.useVisibilityBitmasks },
|
||||
{ "linearThickness", options.gtao.linearThickness },
|
||||
});
|
||||
|
||||
ma = material.getMaterial(mEngine, driver);
|
||||
FMaterialInstance* const mi = getMaterialInstance(ma);
|
||||
FMaterialInstance* const mi = getMaterialInstance(driver, ma);
|
||||
|
||||
// Set AO type specific material parameters
|
||||
switch (aoType) {
|
||||
@@ -1084,7 +1095,7 @@ FrameGraphId<FrameGraphTexture> PostProcessManager::screenSpaceAmbientOcclusion(
|
||||
mi->commit(driver, getUboManager());
|
||||
mi->use(driver);
|
||||
|
||||
auto pipeline = getPipelineState(ma);
|
||||
auto pipeline = getPipelineState(mi);
|
||||
pipeline.rasterState.depthFunc = RasterState::DepthFunc::L;
|
||||
assert_invariant(ssao.params.readOnlyDepthStencil & RenderPassParams::READONLY_DEPTH);
|
||||
renderFullScreenQuad(ssao, pipeline, driver);
|
||||
@@ -1194,8 +1205,8 @@ FrameGraphId<FrameGraphTexture> PostProcessManager::bilateralBlurPass(FrameGraph
|
||||
auto& material = config.bentNormals ?
|
||||
getPostProcessMaterial("bilateralBlurBentNormals") :
|
||||
getPostProcessMaterial("bilateralBlur");
|
||||
FMaterial const* const ma = material.getMaterial(mEngine, driver);
|
||||
FMaterialInstance* const mi = getMaterialInstance(ma);
|
||||
FMaterial const* const ma = material.getMaterial(mEngine);
|
||||
FMaterialInstance* const mi = getMaterialInstance(driver, ma);
|
||||
mi->setParameter("ssao", ssao, { /* only reads level 0 */ });
|
||||
mi->setParameter("axis", axis / float2{desc.width, desc.height});
|
||||
mi->setParameter("kernel", kGaussianSamples, kGaussianCount);
|
||||
@@ -1205,7 +1216,7 @@ FrameGraphId<FrameGraphTexture> PostProcessManager::bilateralBlurPass(FrameGraph
|
||||
mi->commit(driver, getUboManager());
|
||||
mi->use(driver);
|
||||
|
||||
auto pipeline = getPipelineState(ma);
|
||||
auto pipeline = getPipelineState(mi);
|
||||
pipeline.rasterState.depthFunc = RasterState::DepthFunc::L;
|
||||
renderFullScreenQuad(blurred, pipeline, driver);
|
||||
unbindAllDescriptorSets(driver);
|
||||
@@ -1364,7 +1375,7 @@ FrameGraphId<FrameGraphTexture> PostProcessManager::gaussianBlurPass(FrameGraph&
|
||||
"separableGaussianBlur4L"sv : "separableGaussianBlur4"sv; break;
|
||||
}
|
||||
auto const& separableGaussianBlur = getPostProcessMaterial(materialName);
|
||||
auto ma = separableGaussianBlur.getMaterial(mEngine, driver);
|
||||
auto ma = separableGaussianBlur.getMaterial(mEngine);
|
||||
|
||||
const size_t kernelStorageSize = ma->reflect("kernel")->size;
|
||||
float2 kernel[64];
|
||||
@@ -1887,9 +1898,10 @@ FrameGraphId<FrameGraphTexture> PostProcessManager::dof(FrameGraph& fg,
|
||||
auto inOutCoc = resources.getTexture(data.inOutCoc);
|
||||
|
||||
auto const& material = getPostProcessMaterial("dofMipmap");
|
||||
FMaterial const* const ma = material.getMaterial(mEngine, driver);
|
||||
FMaterial const* const ma = material.getMaterial(mEngine);
|
||||
FMaterialInstance* const mi = getMaterialInstance(driver, ma);
|
||||
|
||||
auto const pipeline = getPipelineState(ma, variant);
|
||||
auto const pipeline = getPipelineState(mi, variant);
|
||||
|
||||
for (size_t level = 0 ; level < mipmapCount - 1u ; level++) {
|
||||
const float w = FTexture::valueForLevel(level, desc.width);
|
||||
@@ -1897,7 +1909,8 @@ FrameGraphId<FrameGraphTexture> PostProcessManager::dof(FrameGraph& fg,
|
||||
auto const& out = resources.getRenderPassInfo(data.rp[level]);
|
||||
auto inColor = driver.createTextureView(inOutColor, level, 1);
|
||||
auto inCoc = driver.createTextureView(inOutCoc, level, 1);
|
||||
FMaterialInstance* const mi = getMaterialInstance(ma);
|
||||
// FIXME: is this necessary?
|
||||
FMaterialInstance* const mi = getMaterialInstance(driver, ma);
|
||||
|
||||
mi->setParameter("color", inColor, SamplerParams{
|
||||
.filterMin = SamplerMinFilter::NEAREST_MIPMAP_NEAREST });
|
||||
@@ -2426,9 +2439,9 @@ PostProcessManager::BloomPassOutput PostProcessManager::bloom(FrameGraph& fg,
|
||||
auto const& outDesc = resources.getDescriptor(data.out);
|
||||
|
||||
auto const& material = getPostProcessMaterial("bloomUpsample");
|
||||
FMaterial const* const ma = material.getMaterial(mEngine, driver);
|
||||
FMaterial const* const ma = material.getMaterial(mEngine);
|
||||
|
||||
auto pipeline = getPipelineState(ma);
|
||||
auto pipeline = getPipelineState(getMaterialInstance(driver, ma));
|
||||
pipeline.rasterState.blendFunctionSrcRGB = BlendFunction::ONE;
|
||||
pipeline.rasterState.blendFunctionDstRGB = BlendFunction::ONE;
|
||||
|
||||
@@ -2436,7 +2449,7 @@ PostProcessManager::BloomPassOutput PostProcessManager::bloom(FrameGraph& fg,
|
||||
// Note that we wouldn't want to use the same instance for each pass since that
|
||||
// would imply using the same UBOs, which implies synchronization across the
|
||||
// passes.
|
||||
FMaterialInstance* mi = getMaterialInstance(ma);
|
||||
FMaterialInstance* mi = getMaterialInstance(driver, ma);
|
||||
auto hwDstRT = resources.getRenderPassInfo(data.outRT[i - 1]);
|
||||
hwDstRT.params.flags.discardStart = TargetBufferFlags::NONE; // b/c we'll blend
|
||||
hwDstRT.params.flags.discardEnd = TargetBufferFlags::NONE;
|
||||
@@ -2569,11 +2582,12 @@ void PostProcessManager::colorGradingSubpass(DriverApi& driver,
|
||||
PostProcessVariant::TRANSLUCENT : PostProcessVariant::OPAQUE;
|
||||
|
||||
auto const& material = getPostProcessMaterial("colorGradingAsSubpass");
|
||||
FMaterial const* const ma = material.getMaterial(mEngine, driver, variant);
|
||||
FMaterial const* const ma = material.getMaterial(mEngine);
|
||||
// the UBO has been set and committed in colorGradingPrepareSubpass()
|
||||
FMaterialInstance const* mi = mMaterialInstanceManager.getMaterialInstance(ma, colorGradingConfig.translucent);
|
||||
FMaterialInstance const* mi =
|
||||
getMaterialInstanceWithTag(driver, ma, colorGradingConfig.translucent, variant);
|
||||
mi->use(driver);
|
||||
auto const pipeline = getPipelineState(ma, variant);
|
||||
auto const pipeline = getPipelineState(mi, variant);
|
||||
driver.nextSubpass();
|
||||
driver.scissor(mi->getScissor());
|
||||
driver.draw(pipeline, mFullScreenQuadRph, 0, 3, 1);
|
||||
@@ -2581,8 +2595,8 @@ void PostProcessManager::colorGradingSubpass(DriverApi& driver,
|
||||
|
||||
void PostProcessManager::customResolvePrepareSubpass(DriverApi& driver, CustomResolveOp const op) noexcept {
|
||||
auto const& material = getPostProcessMaterial("customResolveAsSubpass");
|
||||
auto const ma = material.getMaterial(mEngine, driver, PostProcessVariant::OPAQUE);
|
||||
auto* const mi = mMaterialInstanceManager.getMaterialInstance(ma, 0);
|
||||
auto const ma = material.getMaterial(mEngine);
|
||||
auto* const mi = getMaterialInstance(driver, ma, 0);
|
||||
mi->setParameter("direction", op == CustomResolveOp::COMPRESS ? 1.0f : -1.0f),
|
||||
mi->commit(driver, getUboManager());
|
||||
}
|
||||
@@ -2592,12 +2606,12 @@ void PostProcessManager::customResolveSubpass(DriverApi& driver) noexcept {
|
||||
bindPerRenderableDescriptorSet(driver);
|
||||
|
||||
auto const& material = getPostProcessMaterial("customResolveAsSubpass");
|
||||
FMaterial const* const ma = material.getMaterial(mEngine, driver);
|
||||
FMaterial const* const ma = material.getMaterial(mEngine);
|
||||
// the UBO has been set and committed in customResolvePrepareSubpass()
|
||||
FMaterialInstance const* mi = mMaterialInstanceManager.getMaterialInstance(ma, 0);
|
||||
FMaterialInstance const* mi = getMaterialInstance(driver, ma, 0);
|
||||
mi->use(driver);
|
||||
|
||||
auto const pipeline = getPipelineState(ma);
|
||||
auto const pipeline = getPipelineState(mi);
|
||||
driver.nextSubpass();
|
||||
driver.scissor(mi->getScissor());
|
||||
driver.draw(pipeline, mFullScreenQuadRph, 0, 3, 1);
|
||||
@@ -2633,8 +2647,8 @@ FrameGraphId<FrameGraphTexture> PostProcessManager::customResolveUncompressPass(
|
||||
void PostProcessManager::clearAncillaryBuffersPrepare(DriverApi& driver,
|
||||
Variant::type_t variant) noexcept {
|
||||
auto const& material = getPostProcessMaterial("clearDepth");
|
||||
auto const ma = material.getMaterial(mEngine, driver, variant);
|
||||
auto const mi = mMaterialInstanceManager.getMaterialInstance(ma, 0);
|
||||
auto const ma = material.getMaterial(mEngine);
|
||||
auto const mi = getMaterialInstanceWithTag(driver, ma, 0, variant);
|
||||
mi->commit(driver, getUboManager());
|
||||
}
|
||||
|
||||
@@ -2649,13 +2663,13 @@ void PostProcessManager::clearAncillaryBuffers(DriverApi& driver,
|
||||
bindPerRenderableDescriptorSet(driver);
|
||||
|
||||
auto const& material = getPostProcessMaterial("clearDepth");
|
||||
FMaterial const* const ma = material.getMaterial(mEngine, driver, variant);
|
||||
FMaterial const* const ma = material.getMaterial(mEngine);
|
||||
|
||||
// the UBO has been set and committed in clearAncillaryBuffersPrepare()
|
||||
FMaterialInstance const* const mi = mMaterialInstanceManager.getMaterialInstance(ma, 0);
|
||||
FMaterialInstance const* const mi = getMaterialInstanceWithTag(driver, ma, 0, variant);
|
||||
mi->use(driver);
|
||||
|
||||
auto pipeline = getPipelineState(ma, variant);
|
||||
auto pipeline = getPipelineState(mi, variant);
|
||||
pipeline.rasterState.depthFunc = RasterState::DepthFunc::A;
|
||||
|
||||
driver.scissor(mi->getScissor());
|
||||
@@ -2665,7 +2679,7 @@ void PostProcessManager::clearAncillaryBuffers(DriverApi& driver,
|
||||
void PostProcessManager::fogPrepare(DriverApi& driver) noexcept {
|
||||
// ensures the material is loaded and material instance created
|
||||
auto const& material = getPostProcessMaterial("fog");
|
||||
FMaterial const* const ma = material.getMaterial(mEngine, driver, PostProcessVariant::OPAQUE);
|
||||
FMaterial const* const ma = material.getMaterial(mEngine);
|
||||
FMaterialInstance const* mi = ma->getDefaultInstance();
|
||||
mi->commit(driver, getUboManager());
|
||||
}
|
||||
@@ -2676,11 +2690,11 @@ void PostProcessManager::fog(DriverApi& driver) noexcept {
|
||||
bindPerRenderableDescriptorSet(driver);
|
||||
|
||||
auto const& material = getPostProcessMaterial("fog");
|
||||
FMaterial const* const ma = material.getMaterial(mEngine, driver);
|
||||
FMaterial const* const ma = material.getMaterial(mEngine);
|
||||
FMaterialInstance const* mi = ma->getDefaultInstance();
|
||||
mi->use(driver);
|
||||
|
||||
auto pipeline = getPipelineState(ma, Variant::NO_VARIANT);
|
||||
auto pipeline = getPipelineState(mi, Variant::NO_VARIANT);
|
||||
driver.scissor(mi->getScissor());
|
||||
driver.draw(pipeline, mFullScreenQuadRph, 0, 3, 1);
|
||||
}
|
||||
@@ -2937,7 +2951,7 @@ void PostProcessManager::TaaJitterCamera(
|
||||
void PostProcessManager::configureTemporalAntiAliasingMaterial(backend::DriverApi& driver,
|
||||
TemporalAntiAliasingOptions const& taaOptions) noexcept {
|
||||
|
||||
FMaterial* const ma = getPostProcessMaterial("taa").getMaterial(mEngine, driver);
|
||||
FMaterial* const ma = getPostProcessMaterial("taa").getMaterial(mEngine);
|
||||
ma->getPrograms().setConstants({
|
||||
{ "upscaling", taaOptions.upscaling > 1.0f },
|
||||
{ "historyReprojection", taaOptions.historyReprojection },
|
||||
@@ -2956,7 +2970,7 @@ FMaterialInstance* PostProcessManager::configureColorGradingMaterial(backend::Dr
|
||||
PostProcessMaterial const& material, FColorGrading const* colorGrading,
|
||||
ColorGradingConfig const& colorGradingConfig, VignetteOptions const& vignetteOptions,
|
||||
uint32_t const width, uint32_t const height) noexcept {
|
||||
FMaterial* ma = material.getMaterial(mEngine, driver);
|
||||
FMaterial* ma = material.getMaterial(mEngine);
|
||||
ma->getPrograms().setConstants({
|
||||
{ "isOneDimensional", colorGrading->isOneDimensional() },
|
||||
{ "isLDR", colorGrading->isLDR() },
|
||||
@@ -2965,8 +2979,9 @@ FMaterialInstance* PostProcessManager::configureColorGradingMaterial(backend::Dr
|
||||
PostProcessVariant const variant = colorGradingConfig.translucent
|
||||
? PostProcessVariant::TRANSLUCENT
|
||||
: PostProcessVariant::OPAQUE;
|
||||
ma = material.getMaterial(mEngine, driver, variant);
|
||||
FMaterialInstance* mi = mMaterialInstanceManager.getMaterialInstance(ma, colorGradingConfig.translucent);
|
||||
ma = material.getMaterial(mEngine);
|
||||
FMaterialInstance* mi =
|
||||
getMaterialInstanceWithTag(driver, ma, colorGradingConfig.translucent, variant);
|
||||
|
||||
const SamplerParams params = SamplerParams{
|
||||
.filterMag = SamplerMagFilter::LINEAR,
|
||||
@@ -3078,9 +3093,9 @@ FrameGraphId<FrameGraphTexture> PostProcessManager::taa(FrameGraph& fg,
|
||||
PostProcessVariant const variant = colorGradingConfig.translucent ?
|
||||
PostProcessVariant::TRANSLUCENT : PostProcessVariant::OPAQUE;
|
||||
|
||||
FMaterial const* const ma = material.getMaterial(mEngine, driver, variant);
|
||||
FMaterial const* const ma = material.getMaterial(mEngine);
|
||||
|
||||
FMaterialInstance* mi = getMaterialInstance(ma);
|
||||
FMaterialInstance* mi = getMaterialInstance(driver, ma);
|
||||
mi->setParameter("color", color, SamplerParams{}); // nearest
|
||||
mi->setParameter("depth", depth, SamplerParams{}); // nearest
|
||||
mi->setParameter("history", history, SamplerParams{
|
||||
@@ -3120,7 +3135,7 @@ FrameGraphId<FrameGraphTexture> PostProcessManager::taa(FrameGraph& fg,
|
||||
if (colorGradingConfig.asSubpass) {
|
||||
out.params.subpassMask = 1;
|
||||
}
|
||||
auto const pipeline = getPipelineState(ma, variant);
|
||||
auto const pipeline = getPipelineState(mi, variant);
|
||||
|
||||
driver.beginRenderPass(out.target, out.params);
|
||||
driver.draw(pipeline, mFullScreenQuadRph, 0, 3, 1);
|
||||
@@ -3202,7 +3217,7 @@ FrameGraphId<FrameGraphTexture> PostProcessManager::rcas(
|
||||
mi->commit(driver, getUboManager());
|
||||
mi->use(driver);
|
||||
|
||||
auto pipeline = getPipelineState(material.getMaterial(mEngine, driver), variant);
|
||||
auto pipeline = getPipelineState(mi, variant);
|
||||
if (mode == RcasMode::BLENDED) {
|
||||
pipeline.rasterState.blendFunctionSrcRGB = BlendFunction::ONE;
|
||||
pipeline.rasterState.blendFunctionSrcAlpha = BlendFunction::ONE;
|
||||
@@ -3295,7 +3310,7 @@ FrameGraphId<FrameGraphTexture> PostProcessManager::upscaleBilinear(FrameGraph&
|
||||
|
||||
auto out = resources.getRenderPassInfo();
|
||||
|
||||
auto pipeline = getPipelineState(material.getMaterial(mEngine, driver));
|
||||
auto pipeline = getPipelineState(mi);
|
||||
if (blended) {
|
||||
pipeline.rasterState.blendFunctionSrcRGB = BlendFunction::ONE;
|
||||
pipeline.rasterState.blendFunctionSrcAlpha = BlendFunction::ONE;
|
||||
@@ -3509,15 +3524,15 @@ FrameGraphId<FrameGraphTexture> PostProcessManager::upscaleFSR1(FrameGraph& fg,
|
||||
auto out = resources.getRenderPassInfo();
|
||||
|
||||
if (UTILS_UNLIKELY(twoPassesEASU)) {
|
||||
auto pipeline0 = getPipelineState(splitEasuMaterial->getMaterial(mEngine, driver));
|
||||
auto pipeline1 = getPipelineState(easuMaterial->getMaterial(mEngine, driver));
|
||||
auto pipeline0 = getPipelineState(getMaterialInstance(mEngine, driver, *splitEasuMaterial));
|
||||
auto pipeline1 = getPipelineState(getMaterialInstance(mEngine, driver, *easuMaterial));
|
||||
pipeline1.rasterState.depthFunc = SamplerCompareFunc::NE;
|
||||
driver.beginRenderPass(out.target, out.params);
|
||||
driver.draw(pipeline0, mFullScreenQuadRph, 0, 3, 1);
|
||||
driver.draw(pipeline1, mFullScreenQuadRph, 0, 3, 1);
|
||||
driver.endRenderPass();
|
||||
} else {
|
||||
auto pipeline = getPipelineState(easuMaterial->getMaterial(mEngine, driver));
|
||||
auto pipeline = getPipelineState(getMaterialInstance(mEngine, driver, *easuMaterial));
|
||||
renderFullScreenQuad(out, pipeline, driver);
|
||||
}
|
||||
unbindAllDescriptorSets(driver);
|
||||
@@ -3569,8 +3584,8 @@ FrameGraphId<FrameGraphTexture> PostProcessManager::blit(FrameGraph& fg, bool co
|
||||
|
||||
PostProcessMaterial const& material =
|
||||
getPostProcessMaterial(layer ? "blitArray" : "blitLow");
|
||||
FMaterial const* const ma = material.getMaterial(mEngine, driver);
|
||||
auto* mi = getMaterialInstance(ma);
|
||||
FMaterial const* const ma = material.getMaterial(mEngine);
|
||||
auto* mi = getMaterialInstance(driver, ma);
|
||||
mi->setParameter("color", color, SamplerParams{
|
||||
.filterMag = filterMag,
|
||||
.filterMin = filterMin
|
||||
@@ -3588,7 +3603,7 @@ FrameGraphId<FrameGraphTexture> PostProcessManager::blit(FrameGraph& fg, bool co
|
||||
mi->commit(driver, getUboManager());
|
||||
mi->use(driver);
|
||||
|
||||
auto pipeline = getPipelineState(ma);
|
||||
auto pipeline = getPipelineState(mi);
|
||||
if (translucent) {
|
||||
pipeline.rasterState.blendFunctionSrcRGB = BlendFunction::ONE;
|
||||
pipeline.rasterState.blendFunctionSrcAlpha = BlendFunction::ONE;
|
||||
@@ -3886,10 +3901,10 @@ FrameGraphId<FrameGraphTexture> PostProcessManager::debugCombineArrayTexture(Fra
|
||||
// set uniforms
|
||||
|
||||
PostProcessMaterial const& material = getPostProcessMaterial("blitArray");
|
||||
FMaterial const* const ma = material.getMaterial(mEngine, driver);
|
||||
FMaterial const* const ma = material.getMaterial(mEngine);
|
||||
// It should be ok to not move this getMaterialInstance to inside the loop, since
|
||||
// this is a pass meant for debug.
|
||||
auto* mi = getMaterialInstance(ma);
|
||||
auto* mi = getMaterialInstance(driver, ma);
|
||||
mi->setParameter("color", color, SamplerParams{
|
||||
.filterMag = filterMag,
|
||||
.filterMin = filterMin
|
||||
@@ -3903,7 +3918,7 @@ FrameGraphId<FrameGraphTexture> PostProcessManager::debugCombineArrayTexture(Fra
|
||||
mi->commit(driver, getUboManager());
|
||||
mi->use(driver);
|
||||
|
||||
auto pipeline = getPipelineState(ma);
|
||||
auto pipeline = getPipelineState(mi);
|
||||
if (translucent) {
|
||||
pipeline.rasterState.blendFunctionSrcRGB = BlendFunction::ONE;
|
||||
pipeline.rasterState.blendFunctionSrcAlpha = BlendFunction::ONE;
|
||||
|
||||
@@ -360,13 +360,7 @@ public:
|
||||
|
||||
void terminate(FEngine& engine) noexcept;
|
||||
|
||||
FMaterial* getMaterial(FEngine& engine, backend::DriverApi& driver,
|
||||
Variant::type_t variant) const noexcept;
|
||||
|
||||
FMaterial* getMaterial(FEngine& engine, backend::DriverApi& driver,
|
||||
PostProcessVariant variant = PostProcessVariant::OPAQUE) const noexcept {
|
||||
return getMaterial(engine, driver, Variant::type_t(variant));
|
||||
}
|
||||
FMaterial* getMaterial(FEngine& engine) const noexcept;
|
||||
|
||||
private:
|
||||
void loadMaterial(FEngine& engine) const noexcept;
|
||||
@@ -393,11 +387,12 @@ public:
|
||||
|
||||
void bindPerRenderableDescriptorSet(backend::DriverApi& driver) const noexcept;
|
||||
|
||||
backend::PipelineState getPipelineState(FMaterial const* ma, Variant::type_t variant) const noexcept;
|
||||
backend::PipelineState getPipelineState(FMaterialInstance const* mi,
|
||||
Variant::type_t variant) const noexcept;
|
||||
|
||||
backend::PipelineState getPipelineState(FMaterial const* ma,
|
||||
PostProcessVariant variant = PostProcessVariant::OPAQUE) const noexcept {
|
||||
return getPipelineState(ma, Variant::type_t(variant));
|
||||
backend::PipelineState getPipelineState(FMaterialInstance const* mi,
|
||||
PostProcessVariant variant = PostProcessVariant::OPAQUE) const noexcept {
|
||||
return getPipelineState(mi, Variant::type_t(variant));
|
||||
}
|
||||
|
||||
void renderFullScreenQuad(FrameGraphResources::RenderPassInfo const& out,
|
||||
@@ -427,27 +422,47 @@ public:
|
||||
|
||||
void resetForRender();
|
||||
|
||||
|
||||
MaterialInstanceManager& getMaterialInstanceManager() noexcept {
|
||||
return mMaterialInstanceManager;
|
||||
}
|
||||
|
||||
// Helper to get a MaterialInstance from a FMaterial
|
||||
// This currently just call FMaterial::getDefaultInstance().
|
||||
FMaterialInstance* getMaterialInstance(FMaterial const* ma) {
|
||||
return mMaterialInstanceManager.getMaterialInstance(ma);
|
||||
}
|
||||
|
||||
// Helper to get a MaterialInstance from a PostProcessMaterial.
|
||||
FMaterialInstance* getMaterialInstance(FEngine& engine, backend::DriverApi& driver,
|
||||
PostProcessMaterial const& material, PostProcessVariant variant = PostProcessVariant::OPAQUE) {
|
||||
FMaterial const* ma = material.getMaterial(engine, driver, variant);
|
||||
return getMaterialInstance(ma);
|
||||
}
|
||||
|
||||
static void unbindAllDescriptorSets(backend::DriverApi& driver) noexcept;
|
||||
|
||||
private:
|
||||
|
||||
// Helpers to get MaterialInstances.
|
||||
//
|
||||
// These funcions additionally ensure that the necessary shader programs are compiled via
|
||||
// prepareProgram().
|
||||
FMaterialInstance* getMaterialInstance(backend::DriverApi& driver, FMaterial const* ma,
|
||||
Variant::type_t variant) const;
|
||||
|
||||
FMaterialInstance* getMaterialInstance(backend::DriverApi& driver, FMaterial const* ma,
|
||||
PostProcessVariant variant = PostProcessVariant::OPAQUE) const {
|
||||
return getMaterialInstance(driver, ma, Variant::type_t(variant));
|
||||
}
|
||||
|
||||
FMaterialInstance* getMaterialInstance(FEngine& engine, backend::DriverApi& driver,
|
||||
PostProcessMaterial const& material,
|
||||
PostProcessVariant variant = PostProcessVariant::OPAQUE) const {
|
||||
return getMaterialInstance(driver, material.getMaterial(engine), Variant::type_t(variant));
|
||||
}
|
||||
|
||||
FMaterialInstance* getMaterialInstanceWithTag(backend::DriverApi& driver, FMaterial const* ma,
|
||||
uint32_t tag, Variant::type_t variant) const;
|
||||
|
||||
FMaterialInstance* getMaterialInstanceWithTag(backend::DriverApi& driver, FMaterial const* ma,
|
||||
uint32_t tag, PostProcessVariant variant = PostProcessVariant::OPAQUE) const {
|
||||
return getMaterialInstanceWithTag(driver, ma, tag, Variant::type_t(variant));
|
||||
}
|
||||
|
||||
FMaterialInstance* getMaterialInstanceWithTag(FEngine& engine, backend::DriverApi& driver,
|
||||
PostProcessMaterial const& material, uint32_t tag,
|
||||
PostProcessVariant variant = PostProcessVariant::OPAQUE) const {
|
||||
return getMaterialInstanceWithTag(driver, material.getMaterial(engine), tag,
|
||||
Variant::type_t(variant));
|
||||
}
|
||||
|
||||
UboManager* getUboManager() const noexcept;
|
||||
|
||||
backend::RenderPrimitiveHandle mFullScreenQuadRph;
|
||||
|
||||
@@ -243,8 +243,8 @@ void RenderPass::appendCommands(FEngine const& engine, backend::DriverApi& drive
|
||||
// This must be done from the main thread.
|
||||
for (Command const* first = curr, *last = curr + commandCount ; first != last ; ++first) {
|
||||
if (UTILS_LIKELY((first->key & CUSTOM_MASK) == uint64_t(CustomCommand::PASS))) {
|
||||
auto ma = first->info.mi->getMaterial();
|
||||
ma->prepareProgram(driver, first->info.materialVariant, CompilerPriorityQueue::CRITICAL);
|
||||
first->info.mi->prepareProgram(driver, first->info.materialVariant,
|
||||
CompilerPriorityQueue::CRITICAL);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -426,16 +426,18 @@ void RenderPass::setupColorCommand(Command& cmdDraw, Variant variant,
|
||||
bool const isBlendingCommand = !hasScreenSpaceRefraction &&
|
||||
(blendingMode != BlendingMode::OPAQUE && blendingMode != BlendingMode::MASKED);
|
||||
|
||||
RasterState rasterState = mi->getRasterState();
|
||||
|
||||
uint64_t keyDraw = cmdDraw.key;
|
||||
keyDraw &= ~(PASS_MASK | BLENDING_MASK | MATERIAL_MASK);
|
||||
keyDraw |= uint64_t(hasScreenSpaceRefraction ? Pass::REFRACT : Pass::COLOR);
|
||||
keyDraw |= uint64_t(CustomCommand::PASS);
|
||||
keyDraw |= mi->getSortingKey(); // already all set-up for direct or'ing
|
||||
keyDraw |= makeField(variant.key, MATERIAL_VARIANT_KEY_MASK, MATERIAL_VARIANT_KEY_SHIFT);
|
||||
keyDraw |= makeField(ma->getRasterState().alphaToCoverage, BLENDING_MASK, BLENDING_SHIFT);
|
||||
keyDraw |= makeField(rasterState.alphaToCoverage, BLENDING_MASK, BLENDING_SHIFT);
|
||||
|
||||
cmdDraw.key = isBlendingCommand ? keyBlending : keyDraw;
|
||||
cmdDraw.info.rasterState = ma->getRasterState();
|
||||
cmdDraw.info.rasterState = rasterState;
|
||||
|
||||
// for SSR pass, the blending mode of opaques (including MASKED) must be off
|
||||
// see Material.cpp.
|
||||
@@ -446,10 +448,6 @@ void RenderPass::setupColorCommand(Command& cmdDraw, Variant variant,
|
||||
BlendFunction::ZERO : cmdDraw.info.rasterState.blendFunctionDstAlpha;
|
||||
|
||||
cmdDraw.info.rasterState.inverseFrontFaces = inverseFrontFaces;
|
||||
cmdDraw.info.rasterState.culling = mi->getCullingMode();
|
||||
cmdDraw.info.rasterState.colorWrite = mi->isColorWriteEnabled();
|
||||
cmdDraw.info.rasterState.depthWrite = mi->isDepthWriteEnabled();
|
||||
cmdDraw.info.rasterState.depthFunc = mi->getDepthFunc();
|
||||
cmdDraw.info.rasterState.depthClamp = hasDepthClamp;
|
||||
cmdDraw.info.materialVariant = variant;
|
||||
// we keep "RasterState::colorWrite" to the value set by material (could be disabled)
|
||||
@@ -1090,8 +1088,7 @@ void RenderPass::Executor::execute(FEngine const& engine, DriverApi& driver,
|
||||
mi->use(driver, info.materialVariant);
|
||||
}
|
||||
|
||||
assert_invariant(ma);
|
||||
pipeline.program = ma->getProgram(info.materialVariant);
|
||||
pipeline.program = mi->getProgram(info.materialVariant);
|
||||
|
||||
if (UTILS_UNLIKELY(memcmp(&pipeline, ¤tPipeline, sizeof(PipelineState)) != 0)) {
|
||||
currentPipeline = pipeline;
|
||||
|
||||
@@ -636,7 +636,7 @@ FrameGraphId<FrameGraphTexture> ShadowMapManager::gaussianBlurSeparatedPass(
|
||||
|
||||
// get the material
|
||||
auto const& separableGaussianBlur = ppm.getPostProcessMaterial("gaussian");
|
||||
auto const ma = separableGaussianBlur.getMaterial(engine, driver);
|
||||
auto const ma = separableGaussianBlur.getMaterial(engine);
|
||||
|
||||
// Generates half of a Gaussian kernel (center + one side)
|
||||
auto generateGaussianWeights = [](std::array<float, 32>& weights,
|
||||
@@ -685,7 +685,7 @@ FrameGraphId<FrameGraphTexture> ShadowMapManager::gaussianBlurSeparatedPass(
|
||||
for (auto const mi : miList) {
|
||||
mi->use(driver);
|
||||
driver.scissor(mi->getScissor());
|
||||
driver.draw(ppm.getPipelineState(ma), engine.getFullScreenRenderPrimitive(), 0, 3, 1);
|
||||
driver.draw(ppm.getPipelineState(mi), engine.getFullScreenRenderPrimitive(), 0, 3, 1);
|
||||
}
|
||||
driver.endRenderPass();
|
||||
|
||||
@@ -733,12 +733,12 @@ FrameGraphId<FrameGraphTexture> ShadowMapManager::vsmMipmapPass(
|
||||
ppm.bindPerRenderableDescriptorSet(driver);
|
||||
|
||||
auto& material = ppm.getPostProcessMaterial("vsmMipmap");
|
||||
FMaterial const* const ma = material.getMaterial(engine, driver);
|
||||
FMaterial const* const ma = material.getMaterial(engine);
|
||||
auto const mi = ppm.getMaterialInstanceManager().getMaterialInstance(ma);
|
||||
|
||||
auto const pipeline = ppm.getPipelineState(ma);
|
||||
auto const pipeline = ppm.getPipelineState(mi);
|
||||
backend::Viewport const scissor = { 0, 0, dim, dim };
|
||||
|
||||
auto const mi = ppm.getMaterialInstanceManager().getMaterialInstance(ma);
|
||||
mi->setParameter("color", in, SamplerParams{
|
||||
.filterMag = SamplerMagFilter::NEAREST,
|
||||
.filterMin = SamplerMinFilter::NEAREST_MIPMAP_NEAREST
|
||||
|
||||
@@ -1830,7 +1830,7 @@ void FEngine::compile(
|
||||
CallbackHandler* handler,
|
||||
Invocable<void(Material*)>&& callback) {
|
||||
auto const variants = getMaterialCompileVariants(view, shadowReceiver, skinning);
|
||||
material->compile(priority, variants, handler, std::move(callback));
|
||||
const_cast<FMaterial*>(material)->compile(priority, variants, handler, std::move(callback));
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
|
||||
@@ -170,8 +170,6 @@ FMaterial::FMaterial(FEngine& engine, const Builder& builder, MaterialDefinition
|
||||
|
||||
DriverApi& driver = engine.getDriverApi();
|
||||
|
||||
mIsStereoSupported = driver.isStereoSupported();
|
||||
mIsParallelShaderCompileSupported = driver.isParallelShaderCompileSupported();
|
||||
mDepthPrecacheDisabled =
|
||||
driver.isWorkaroundNeeded(Workaround::DISABLE_DEPTH_PRECACHE_FOR_DEFAULT_MATERIAL);
|
||||
mDefaultMaterial = engine.getDefaultMaterial();
|
||||
@@ -240,44 +238,33 @@ filament::DescriptorSetLayout const& FMaterial::getPerViewDescriptorSetLayout(
|
||||
void FMaterial::compile(CompilerPriorityQueue const priority,
|
||||
UserVariantFilterMask variantSpec,
|
||||
CallbackHandler* handler,
|
||||
Invocable<void(Material*)>&& callback) const noexcept {
|
||||
DriverApi& driver = mEngine.getDriverApi();
|
||||
|
||||
// Turn off the STE variant if stereo is not supported.
|
||||
if (!mIsStereoSupported) {
|
||||
variantSpec &= ~UserVariantFilterMask(UserVariantFilterBit::STE);
|
||||
Invocable<void(Material*)>&& callback) noexcept {
|
||||
FMaterialInstance* mi = getDefaultInstance();
|
||||
if (callback) {
|
||||
mi->compile(priority, variantSpec, handler,
|
||||
[this, callback = std::move(callback)](MaterialInstance*) {
|
||||
callback(this);
|
||||
});
|
||||
} else {
|
||||
mi->compile(priority, variantSpec, handler, {});
|
||||
}
|
||||
|
||||
UserVariantFilterMask const variantFilter = ~variantSpec & UserVariantFilterMask(UserVariantFilterBit::ALL);
|
||||
ShaderModel const shaderModel = mEngine.getShaderModel();
|
||||
bool const isStereoSupported = mEngine.getDriverApi().isStereoSupported();
|
||||
|
||||
if (UTILS_LIKELY(mIsParallelShaderCompileSupported)) {
|
||||
for (auto const variant: mDefinition.getVariants()) {
|
||||
if (!variantFilter || variant == Variant::filterUserVariant(variant, variantFilter)) {
|
||||
if (mDefinition.hasVariant(variant, shaderModel, isStereoSupported)) {
|
||||
prepareProgram(driver, variant, priority);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
compileAllPrograms(priority, handler, std::move(callback));
|
||||
}
|
||||
|
||||
void FMaterial::compile(CompilerPriorityQueue const priority,
|
||||
FixedCapacityVector<Variant> const& variants,
|
||||
CallbackHandler* handler,
|
||||
Invocable<void(Material*)>&& callback) const noexcept {
|
||||
Invocable<void(Material*)>&& callback) noexcept {
|
||||
DriverApi& driver = mEngine.getDriverApi();
|
||||
FMaterialInstance* mi = getDefaultInstance();
|
||||
|
||||
ShaderModel const shaderModel = mEngine.getShaderModel();
|
||||
bool const isStereoSupported = driver.isStereoSupported();
|
||||
bool const isParallelShaderCompileSupported = driver.isParallelShaderCompileSupported();
|
||||
|
||||
if (UTILS_LIKELY(mIsParallelShaderCompileSupported)) {
|
||||
if (UTILS_LIKELY(isParallelShaderCompileSupported)) {
|
||||
for (auto const variant : variants) {
|
||||
if (mDefinition.hasVariant(variant, shaderModel, isStereoSupported)) {
|
||||
prepareProgram(driver, variant, priority);
|
||||
mi->prepareProgram(driver, variant, priority);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -287,7 +274,7 @@ void FMaterial::compile(CompilerPriorityQueue const priority,
|
||||
|
||||
void FMaterial::compileAllPrograms(CompilerPriorityQueue const priority,
|
||||
CallbackHandler* handler,
|
||||
Invocable<void(Material*)>&& callback) const noexcept {
|
||||
Invocable<void(Material*)>&& callback) noexcept {
|
||||
DriverApi& driver = mEngine.getDriverApi();
|
||||
|
||||
if (callback) {
|
||||
|
||||
@@ -106,12 +106,12 @@ public:
|
||||
void compile(CompilerPriorityQueue priority,
|
||||
UserVariantFilterMask variantSpec,
|
||||
backend::CallbackHandler* handler,
|
||||
utils::Invocable<void(Material*)>&& callback) const noexcept;
|
||||
utils::Invocable<void(Material*)>&& callback) noexcept;
|
||||
|
||||
void compile(CompilerPriorityQueue priority,
|
||||
utils::FixedCapacityVector<Variant> const& variants,
|
||||
backend::CallbackHandler* handler,
|
||||
utils::Invocable<void(Material*)>&& callback) const noexcept;
|
||||
utils::Invocable<void(Material*)>&& callback) noexcept;
|
||||
|
||||
// Creates an instance of this material, specifying the batching mode.
|
||||
FMaterialInstance* createInstance(const char* name) const noexcept;
|
||||
@@ -130,40 +130,6 @@ public:
|
||||
|
||||
FEngine& getEngine() const noexcept { return mEngine; }
|
||||
|
||||
// prepareProgram creates the program for the material's given variant at the backend level.
|
||||
// Must be called outside of backend render pass.
|
||||
// Must be called before getProgram() below.
|
||||
backend::Handle<backend::HwProgram> prepareProgram(backend::DriverApi& driver,
|
||||
Variant const variant,
|
||||
backend::CompilerPriorityQueue const priorityQueue) const noexcept {
|
||||
return mPrograms.prepareProgram(driver, variant, priorityQueue);
|
||||
}
|
||||
|
||||
// getProgram returns the backend program for the material's given variant.
|
||||
// Must be called after prepareProgram().
|
||||
[[nodiscard]]
|
||||
backend::Handle<backend::HwProgram> getProgram(Variant variant) const noexcept {
|
||||
|
||||
if (UTILS_UNLIKELY(mEngine.features.material.enable_fog_as_postprocess)) {
|
||||
// if the fog as post-process feature is enabled, we need to proceed "as-if" the material
|
||||
// didn't have the FOG variant bit.
|
||||
if (getMaterialDomain() == MaterialDomain::SURFACE) {
|
||||
BlendingMode const blendingMode = getBlendingMode();
|
||||
bool const hasScreenSpaceRefraction = getRefractionMode() == RefractionMode::SCREEN_SPACE;
|
||||
bool const isBlendingCommand = !hasScreenSpaceRefraction &&
|
||||
(blendingMode != BlendingMode::OPAQUE && blendingMode != BlendingMode::MASKED);
|
||||
if (!isBlendingCommand) {
|
||||
variant.setFog(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#if FILAMENT_ENABLE_MATDBG
|
||||
updateActiveProgramsForMatdbg(variant);
|
||||
#endif
|
||||
return mPrograms.getProgram(variant);
|
||||
}
|
||||
|
||||
// MaterialInstance::use() binds descriptor sets before drawing. For shared variants,
|
||||
// however, the material instance will call useShared() to bind the default material's sets
|
||||
// instead.
|
||||
@@ -310,6 +276,9 @@ public:
|
||||
}
|
||||
|
||||
/** @}*/
|
||||
|
||||
// Called by getProgram() to update active program list for matdbg UI.
|
||||
void updateActiveProgramsForMatdbg(Variant const variant) const noexcept;
|
||||
#endif
|
||||
|
||||
private:
|
||||
@@ -318,15 +287,13 @@ private:
|
||||
|
||||
void compileAllPrograms(CompilerPriorityQueue priority,
|
||||
backend::CallbackHandler* handler,
|
||||
utils::Invocable<void(Material*)>&& callback) const noexcept;
|
||||
utils::Invocable<void(Material*)>&& callback) noexcept;
|
||||
|
||||
MaterialDefinition const& mDefinition;
|
||||
|
||||
bool mIsDefaultMaterial = false;
|
||||
|
||||
bool mUseUboBatching = false;
|
||||
bool mIsStereoSupported = false;
|
||||
bool mIsParallelShaderCompileSupported = false;
|
||||
bool mDepthPrecacheDisabled = false;
|
||||
|
||||
FMaterial const* mDefaultMaterial = nullptr;
|
||||
@@ -341,8 +308,6 @@ private:
|
||||
mutable utils::Mutex mPendingEditsLock;
|
||||
std::unique_ptr<MaterialParser> mPendingEdits;
|
||||
std::unique_ptr<MaterialParser> mEditedMaterialParser;
|
||||
// Called by getProgram() to update active program list for matdbg UI.
|
||||
void updateActiveProgramsForMatdbg(Variant const variant) const noexcept;
|
||||
void setPendingEdits(std::unique_ptr<MaterialParser> pendingEdits) noexcept;
|
||||
bool hasPendingEdits() const noexcept;
|
||||
void latchPendingEdits() noexcept;
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
#include <filament/MaterialInstance.h>
|
||||
|
||||
#include "RenderPass.h"
|
||||
#include "MaterialParser.h"
|
||||
|
||||
#include "ds/DescriptorSetLayout.h"
|
||||
|
||||
@@ -131,6 +132,7 @@ FMaterialInstance::FMaterialInstance(FEngine& engine,
|
||||
mTextureParameters(other->mTextureParameters),
|
||||
mDescriptorSet(other->mDescriptorSet.duplicate(
|
||||
"MaterialInstance", mMaterial->getDescriptorSetLayout())),
|
||||
mPrograms(other->mPrograms),
|
||||
mPolygonOffset(other->mPolygonOffset),
|
||||
mStencilState(other->mStencilState),
|
||||
mMaskThreshold(other->mMaskThreshold),
|
||||
@@ -207,6 +209,10 @@ void FMaterialInstance::terminate(FEngine& engine) {
|
||||
if (ubHandle){
|
||||
driver.destroyBufferObject(*ubHandle);
|
||||
}
|
||||
|
||||
if (mPrograms.isInitialized()) {
|
||||
mPrograms.terminate(engine);
|
||||
}
|
||||
}
|
||||
|
||||
void FMaterialInstance::commit(FEngine& engine) const {
|
||||
@@ -264,6 +270,39 @@ void FMaterialInstance::commit(FEngine::DriverApi& driver, UboManager* uboManage
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
|
||||
template<typename T>
|
||||
void FMaterialInstance::setConstantImpl(std::string_view name, T value) {
|
||||
auto const& constants = mMaterial->getDefinition().specializationConstantsNameToIndex;
|
||||
auto it = constants.find(name);
|
||||
FILAMENT_CHECK_PRECONDITION(it != constants.end()) << "Constant " << name << " does not exist";
|
||||
|
||||
if (UTILS_UNLIKELY(mPendingSpecializationConstants.empty())) {
|
||||
mPendingSpecializationConstants =
|
||||
FixedCapacityVector<backend::Program::SpecializationConstant>(
|
||||
getPrograms().getSpecializationConstants());
|
||||
}
|
||||
|
||||
uint32_t id = it->second + CONFIG_MAX_RESERVED_SPEC_CONSTANTS;
|
||||
mPendingSpecializationConstants[id] = value;
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
T FMaterialInstance::getConstantImpl(std::string_view name) const {
|
||||
auto const& constants = mMaterial->getDefinition().specializationConstantsNameToIndex;
|
||||
auto it = constants.find(name);
|
||||
FILAMENT_CHECK_PRECONDITION(it != constants.end()) << "Constant " << name << " does not exist";
|
||||
|
||||
uint32_t id = it->second + CONFIG_MAX_RESERVED_SPEC_CONSTANTS;
|
||||
|
||||
if (UTILS_UNLIKELY(!mPendingSpecializationConstants.empty())) {
|
||||
return std::get<T>(mPendingSpecializationConstants[id]);
|
||||
}
|
||||
|
||||
return getPrograms().getConstant<T>(id);
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
|
||||
void FMaterialInstance::setParameter(std::string_view const name,
|
||||
Handle<HwTexture> texture, SamplerParams const params) {
|
||||
auto const binding = mMaterial->getSamplerBinding(name);
|
||||
@@ -383,6 +422,15 @@ void FMaterialInstance::setTransparencyMode(TransparencyMode const mode) noexcep
|
||||
mTransparencyMode = mode;
|
||||
}
|
||||
|
||||
RasterState FMaterialInstance::getRasterState() const noexcept {
|
||||
RasterState rs = mMaterial->getRasterState();
|
||||
rs.culling = mCulling;
|
||||
rs.depthWrite = mDepthWrite;
|
||||
rs.depthFunc = mDepthFunc;
|
||||
rs.colorWrite = mColorWrite;
|
||||
return rs;
|
||||
}
|
||||
|
||||
void FMaterialInstance::setDepthCulling(bool const enable) noexcept {
|
||||
mDepthFunc = enable ? RasterState::DepthFunc::GE : RasterState::DepthFunc::A;
|
||||
}
|
||||
@@ -403,6 +451,51 @@ const char* FMaterialInstance::getName() const noexcept {
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
|
||||
void FMaterialInstance::compile(CompilerPriorityQueue const priority,
|
||||
UserVariantFilterMask variantSpec, CallbackHandler* handler,
|
||||
Invocable<void(MaterialInstance*)>&& callback) noexcept {
|
||||
FEngine& engine = mMaterial->getEngine();
|
||||
DriverApi& driver = engine.getDriverApi();
|
||||
MaterialDefinition const& definition = mMaterial->getDefinition();
|
||||
|
||||
bool const isStereoSupported = driver.isStereoSupported();
|
||||
|
||||
// Turn off the STE variant if stereo is not supported.
|
||||
if (UTILS_LIKELY(!isStereoSupported)) {
|
||||
variantSpec &= ~UserVariantFilterMask(UserVariantFilterBit::STE);
|
||||
}
|
||||
|
||||
UserVariantFilterMask const variantFilter =
|
||||
~variantSpec & UserVariantFilterMask(UserVariantFilterBit::ALL);
|
||||
ShaderModel const shaderModel = engine.getShaderModel();
|
||||
|
||||
if (UTILS_LIKELY(driver.isParallelShaderCompileSupported())) {
|
||||
for (auto const variant: definition.getVariants()) {
|
||||
if (!variantFilter || variant == Variant::filterUserVariant(variant, variantFilter)) {
|
||||
if (definition.hasVariant(variant, shaderModel, isStereoSupported)) {
|
||||
prepareProgram(driver, variant, priority);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (callback) {
|
||||
struct Callback {
|
||||
Invocable<void(MaterialInstance*)> f;
|
||||
MaterialInstance* m;
|
||||
static void func(void* user) {
|
||||
auto* const c = static_cast<Callback*>(user);
|
||||
c->f(c->m);
|
||||
delete c;
|
||||
}
|
||||
};
|
||||
auto* const user = new (std::nothrow) Callback{ std::move(callback), this };
|
||||
driver.compilePrograms(priority, handler, &Callback::func, user);
|
||||
} else {
|
||||
driver.compilePrograms(priority, nullptr, nullptr, nullptr);
|
||||
}
|
||||
}
|
||||
|
||||
void FMaterialInstance::use(FEngine::DriverApi& driver, Variant variant) const {
|
||||
assert_invariant(mDescriptorSet.getHandle());
|
||||
assert_invariant(!isUsingUboBatching() || BufferAllocator::isValid(getAllocationId()));
|
||||
@@ -507,4 +600,36 @@ void FMaterialInstance::fixMissingSamplers() const {
|
||||
}
|
||||
}
|
||||
|
||||
LocalProgramCache const& FMaterialInstance::getPrograms() const noexcept {
|
||||
return mPrograms.isInitialized() ? mPrograms : mMaterial->getPrograms();
|
||||
}
|
||||
|
||||
void FMaterialInstance::flushSpecializationConstants() const noexcept {
|
||||
if (mPendingSpecializationConstants.empty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!mPrograms.isInitialized()) {
|
||||
mPrograms.initializeForMaterialInstance(mMaterial->getEngine(), *mMaterial);
|
||||
}
|
||||
mPrograms.setConstants(std::move(mPendingSpecializationConstants));
|
||||
mPendingSpecializationConstants.clear();
|
||||
}
|
||||
|
||||
#if FILAMENT_ENABLE_MATDBG
|
||||
|
||||
void FMaterialInstance::updateActiveProgramsForMatdbg(Variant const variant) const noexcept {
|
||||
mMaterial->updateActiveProgramsForMatdbg(variant);
|
||||
}
|
||||
|
||||
#endif // FILAMENT_ENABLE_MATDBG
|
||||
|
||||
template void FMaterialInstance::setConstantImpl<int32_t>(std::string_view name, int32_t value);
|
||||
template void FMaterialInstance::setConstantImpl<float>(std::string_view name, float value);
|
||||
template void FMaterialInstance::setConstantImpl<bool>(std::string_view name, bool value);
|
||||
|
||||
template int32_t FMaterialInstance::getConstantImpl<int32_t>(std::string_view name) const;
|
||||
template float FMaterialInstance::getConstantImpl<float>(std::string_view name) const;
|
||||
template bool FMaterialInstance::getConstantImpl<bool>(std::string_view name) const;
|
||||
|
||||
} // namespace filament
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
#define TNT_FILAMENT_DETAILS_MATERIALINSTANCE_H
|
||||
|
||||
#include "downcast.h"
|
||||
|
||||
#include "LocalProgramCache.h"
|
||||
#include "UniformBuffer.h"
|
||||
|
||||
#include "ds/DescriptorSet.h"
|
||||
@@ -26,8 +26,6 @@
|
||||
#include "details/BufferAllocator.h"
|
||||
#include "details/Engine.h"
|
||||
|
||||
#include "private/backend/DriverApi.h"
|
||||
|
||||
#include <filament/MaterialInstance.h>
|
||||
|
||||
#include <private/filament/Variant.h>
|
||||
@@ -67,7 +65,7 @@ public:
|
||||
~FMaterialInstance() noexcept;
|
||||
|
||||
void terminate(FEngine& engine);
|
||||
|
||||
|
||||
void commit(FEngine& engine) const;
|
||||
|
||||
void commit(FEngine::DriverApi& driver, UboManager* uboManager) const;
|
||||
@@ -86,6 +84,32 @@ public:
|
||||
|
||||
UniformBuffer const& getUniformBuffer() const noexcept { return mUniforms; }
|
||||
|
||||
void compile(backend::CompilerPriorityQueue priority, UserVariantFilterMask variantSpec,
|
||||
backend::CallbackHandler* handler,
|
||||
utils::Invocable<void(MaterialInstance*)>&& callback) noexcept;
|
||||
|
||||
// prepareProgram creates the program for the material's given variant at the backend level.
|
||||
// Must be called outside of backend render pass.
|
||||
// Must be called before getProgram() below.
|
||||
backend::Handle<backend::HwProgram> prepareProgram(backend::DriverApi& driver,
|
||||
Variant const variant,
|
||||
backend::CompilerPriorityQueue const priorityQueue) const noexcept {
|
||||
flushSpecializationConstants();
|
||||
return getPrograms().prepareProgram(driver, variant, priorityQueue);
|
||||
}
|
||||
|
||||
// getProgram returns the backend program for the material's given variant.
|
||||
// Must be called after prepareProgram().
|
||||
//
|
||||
// See also Material::getProgram().
|
||||
[[nodiscard]]
|
||||
backend::Handle<backend::HwProgram> getProgram(Variant const variant) const noexcept {
|
||||
#if FILAMENT_ENABLE_MATDBG
|
||||
updateActiveProgramsForMatdbg(variant);
|
||||
#endif
|
||||
return getPrograms().getProgram(variant);
|
||||
}
|
||||
|
||||
void setScissor(uint32_t const left, uint32_t const bottom, uint32_t const width, uint32_t const height) noexcept {
|
||||
constexpr uint32_t maxvalu = std::numeric_limits<int32_t>::max();
|
||||
mScissorRect = { int32_t(left), int32_t(bottom),
|
||||
@@ -107,6 +131,8 @@ public:
|
||||
|
||||
bool hasScissor() const noexcept { return mHasScissor; }
|
||||
|
||||
backend::RasterState getRasterState() const noexcept;
|
||||
|
||||
backend::CullingMode getCullingMode() const noexcept { return mCulling; }
|
||||
|
||||
backend::CullingMode getShadowCullingMode() const noexcept { return mShadowCulling; }
|
||||
@@ -254,11 +280,15 @@ public:
|
||||
backend::Handle<backend::HwTexture> texture, backend::SamplerParams params);
|
||||
|
||||
using MaterialInstance::setParameter;
|
||||
using MaterialInstance::setConstant;
|
||||
|
||||
private:
|
||||
friend class FMaterial;
|
||||
friend class MaterialInstance;
|
||||
|
||||
// Cannot inline since it inspects the FMaterial class.
|
||||
LocalProgramCache const& getPrograms() const noexcept;
|
||||
|
||||
template<size_t Size>
|
||||
void setParameterUntypedImpl(std::string_view name, const void* value);
|
||||
|
||||
@@ -277,6 +307,19 @@ private:
|
||||
template<typename T>
|
||||
T getParameterImpl(std::string_view name) const;
|
||||
|
||||
template<typename T>
|
||||
void setConstantImpl(std::string_view name, T value);
|
||||
|
||||
template<typename T>
|
||||
T getConstantImpl(std::string_view name) const;
|
||||
|
||||
void flushSpecializationConstants() const noexcept;
|
||||
|
||||
#if FILAMENT_ENABLE_MATDBG
|
||||
// Called by getProgram() to update active program list for matdbg UI.
|
||||
void updateActiveProgramsForMatdbg(Variant const variant) const noexcept;
|
||||
#endif
|
||||
|
||||
// keep these grouped, they're accessed together in the render-loop
|
||||
FMaterial const* mMaterial = nullptr;
|
||||
|
||||
@@ -291,6 +334,11 @@ private:
|
||||
mutable DescriptorSet mDescriptorSet;
|
||||
UniformBuffer mUniforms;
|
||||
|
||||
// HACK: Mutable so that prepareProgram() can update specialization constants.
|
||||
mutable LocalProgramCache mPrograms;
|
||||
mutable utils::FixedCapacityVector<backend::Program::SpecializationConstant>
|
||||
mPendingSpecializationConstants;
|
||||
|
||||
backend::PolygonOffset mPolygonOffset{};
|
||||
backend::StencilState mStencilState{};
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
cmake_minimum_required(VERSION 3.19)
|
||||
project(filament-tests)
|
||||
|
||||
if(IOS OR WEBGL)
|
||||
if(IOS OR WASM)
|
||||
return()
|
||||
endif()
|
||||
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
|
||||
#include <filament/Engine.h>
|
||||
#include <filament/Material.h>
|
||||
#include <filament/MaterialInstance.h>
|
||||
|
||||
#include "filament_test_resources.h"
|
||||
|
||||
@@ -167,3 +168,52 @@ TEST(Material, MaterialSettingInvalidApiLevelReturnsAnInvalidPackage) {
|
||||
|
||||
Engine::destroy(engine);
|
||||
}
|
||||
|
||||
TEST(MaterialInstanceTest, SetConstant) {
|
||||
Engine* engine = Engine::create(Engine::Backend::NOOP);
|
||||
|
||||
std::string shaderCode(R"(
|
||||
void material(inout MaterialInputs material) {
|
||||
prepareMaterial(material);
|
||||
material.baseColor = vec4(1.0);
|
||||
}
|
||||
)");
|
||||
|
||||
filamat::MaterialBuilder builder;
|
||||
builder.init();
|
||||
builder.name("MaterialInstanceTest");
|
||||
builder.material(shaderCode.c_str());
|
||||
builder.constant("myFloat", filamat::MaterialBuilder::ConstantType::FLOAT, 1.0f);
|
||||
builder.constant("myInt", filamat::MaterialBuilder::ConstantType::INT, 2);
|
||||
builder.constant("myBool", filamat::MaterialBuilder::ConstantType::BOOL, false);
|
||||
|
||||
filamat::Package result = builder.build(engine->getJobSystem());
|
||||
ASSERT_TRUE(result.isValid());
|
||||
|
||||
Material* material = Material::Builder()
|
||||
.package(result.getData(), result.getSize())
|
||||
.build(*engine);
|
||||
ASSERT_NE(material, nullptr);
|
||||
|
||||
MaterialInstance* instance = material->createInstance();
|
||||
ASSERT_NE(instance, nullptr);
|
||||
|
||||
// Verify default values
|
||||
EXPECT_EQ(instance->getConstant<float>("myFloat"), 1.0f);
|
||||
EXPECT_EQ(instance->getConstant<int32_t>("myInt"), 2);
|
||||
EXPECT_EQ(instance->getConstant<bool>("myBool"), false);
|
||||
|
||||
// Set new values
|
||||
instance->setConstant("myFloat", 3.0f);
|
||||
instance->setConstant("myInt", 4);
|
||||
instance->setConstant("myBool", true);
|
||||
|
||||
// Verify new values
|
||||
EXPECT_EQ(instance->getConstant<float>("myFloat"), 3.0f);
|
||||
EXPECT_EQ(instance->getConstant<int32_t>("myInt"), 4);
|
||||
EXPECT_EQ(instance->getConstant<bool>("myBool"), true);
|
||||
|
||||
engine->destroy(instance);
|
||||
engine->destroy(material);
|
||||
Engine::destroy(engine);
|
||||
}
|
||||
|
||||
@@ -10,12 +10,6 @@ Pod::Spec.new do |spec|
|
||||
|
||||
spec.libraries = 'c++'
|
||||
|
||||
# Fix linking error with Xcode 12; we do not yet support the simulator on Apple silicon.
|
||||
spec.pod_target_xcconfig = {
|
||||
'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'arm64'
|
||||
}
|
||||
spec.user_target_xcconfig = { 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'arm64' }
|
||||
|
||||
spec.subspec "filament" do |ss|
|
||||
ss.source_files =
|
||||
"include/filament/*.h",
|
||||
@@ -25,13 +19,13 @@ Pod::Spec.new do |spec|
|
||||
"include/ibl/*.h",
|
||||
"include/geometry/*.h"
|
||||
ss.header_mappings_dir = "include"
|
||||
ss.vendored_libraries =
|
||||
"lib/universal/libfilament.a",
|
||||
"lib/universal/libbackend.a",
|
||||
"lib/universal/libfilabridge.a",
|
||||
"lib/universal/libfilaflat.a",
|
||||
"lib/universal/libibl.a",
|
||||
"lib/universal/libgeometry.a"
|
||||
ss.vendored_frameworks =
|
||||
"lib/libfilament.xcframework",
|
||||
"lib/libbackend.xcframework",
|
||||
"lib/libfilabridge.xcframework",
|
||||
"lib/libfilaflat.xcframework",
|
||||
"lib/libibl.xcframework",
|
||||
"lib/libgeometry.xcframework"
|
||||
ss.dependency "Filament/utils"
|
||||
ss.dependency "Filament/math"
|
||||
end
|
||||
@@ -42,11 +36,10 @@ Pod::Spec.new do |spec|
|
||||
"include/filament/MaterialChunkType.h",
|
||||
"include/filament/MaterialEnums.h"
|
||||
ss.header_mappings_dir = "include"
|
||||
ss.vendored_libraries =
|
||||
"lib/universal/libfilamat.a",
|
||||
"lib/universal/libshaders.a",
|
||||
"lib/universal/libsmol-v.a",
|
||||
"lib/universal/libfilabridge.a"
|
||||
ss.vendored_frameworks =
|
||||
"lib/libfilamat.xcframework",
|
||||
"lib/libshaders.xcframework",
|
||||
"lib/libsmol-v.xcframework"
|
||||
ss.dependency "Filament/utils"
|
||||
ss.dependency "Filament/math"
|
||||
end
|
||||
@@ -54,11 +47,11 @@ Pod::Spec.new do |spec|
|
||||
spec.subspec "gltfio_core" do |ss|
|
||||
ss.source_files = "include/gltfio/**/*.h"
|
||||
ss.header_mappings_dir = "include"
|
||||
ss.vendored_libraries =
|
||||
"lib/universal/libgltfio_core.a",
|
||||
"lib/universal/libdracodec.a",
|
||||
"lib/universal/libuberarchive.a",
|
||||
"lib/universal/libstb.a"
|
||||
ss.vendored_frameworks =
|
||||
"lib/libgltfio_core.xcframework",
|
||||
"lib/libdracodec.xcframework",
|
||||
"lib/libuberarchive.xcframework",
|
||||
"lib/libstb.xcframework"
|
||||
ss.dependency "Filament/filament"
|
||||
ss.dependency "Filament/ktxreader"
|
||||
ss.dependency "Filament/uberz"
|
||||
@@ -66,23 +59,23 @@ Pod::Spec.new do |spec|
|
||||
|
||||
spec.subspec "camutils" do |ss|
|
||||
ss.source_files = "include/camutils/*.h"
|
||||
ss.vendored_libraries = "lib/universal/libcamutils.a"
|
||||
ss.vendored_frameworks = "lib/libcamutils.xcframework"
|
||||
ss.header_dir = "camutils"
|
||||
ss.dependency "Filament/math"
|
||||
end
|
||||
|
||||
spec.subspec "filameshio" do |ss|
|
||||
ss.source_files = "include/filameshio/*.h"
|
||||
ss.vendored_libraries =
|
||||
"lib/universal/libfilameshio.a",
|
||||
"lib/universal/libmeshoptimizer.a"
|
||||
ss.vendored_frameworks =
|
||||
"lib/libfilameshio.xcframework",
|
||||
"lib/libmeshoptimizer.xcframework"
|
||||
ss.header_dir = "filameshio"
|
||||
ss.dependency "Filament/filament"
|
||||
end
|
||||
|
||||
spec.subspec "image" do |ss|
|
||||
ss.source_files = "include/image/*.h"
|
||||
ss.vendored_libraries = "lib/universal/libimage.a"
|
||||
ss.vendored_frameworks = "lib/libimage.xcframework"
|
||||
ss.header_dir = "image"
|
||||
ss.dependency "Filament/filament"
|
||||
end
|
||||
@@ -90,7 +83,7 @@ Pod::Spec.new do |spec|
|
||||
spec.subspec "utils" do |ss|
|
||||
ss.source_files = "include/utils/**/*.h"
|
||||
ss.header_mappings_dir = "include"
|
||||
ss.vendored_libraries = "lib/universal/libutils.a"
|
||||
ss.vendored_frameworks = "lib/libutils.xcframework"
|
||||
ss.dependency "Filament/tsl"
|
||||
end
|
||||
|
||||
@@ -107,9 +100,9 @@ Pod::Spec.new do |spec|
|
||||
spec.subspec "ktxreader" do |ss|
|
||||
ss.source_files = "include/ktxreader/*.h"
|
||||
ss.header_mappings_dir = "include"
|
||||
ss.vendored_libraries =
|
||||
"lib/universal/libktxreader.a",
|
||||
"lib/universal/libbasis_transcoder.a"
|
||||
ss.vendored_frameworks =
|
||||
"lib/libktxreader.xcframework",
|
||||
"lib/libbasis_transcoder.xcframework"
|
||||
ss.dependency "Filament/image"
|
||||
ss.dependency "Filament/filament"
|
||||
end
|
||||
@@ -117,9 +110,9 @@ Pod::Spec.new do |spec|
|
||||
spec.subspec "viewer" do |ss|
|
||||
ss.source_files = "include/viewer/*.h"
|
||||
ss.header_mappings_dir = "include"
|
||||
ss.vendored_libraries =
|
||||
"lib/universal/libviewer.a",
|
||||
"lib/universal/libcivetweb.a"
|
||||
ss.vendored_frameworks =
|
||||
"lib/libviewer.xcframework",
|
||||
"lib/libcivetweb.xcframework"
|
||||
ss.dependency "Filament/filament"
|
||||
ss.dependency "Filament/gltfio_core"
|
||||
end
|
||||
@@ -127,9 +120,9 @@ Pod::Spec.new do |spec|
|
||||
spec.subspec "uberz" do |ss|
|
||||
ss.source_files = "include/uberz/*.h"
|
||||
ss.header_mappings_dir = "include"
|
||||
ss.vendored_libraries =
|
||||
"lib/universal/libuberzlib.a",
|
||||
"lib/universal/libzstd.a"
|
||||
ss.vendored_frameworks =
|
||||
"lib/libuberzlib.xcframework",
|
||||
"lib/libzstd.xcframework"
|
||||
ss.header_dir = "uberz"
|
||||
ss.dependency "Filament/filamat"
|
||||
ss.dependency "Filament/tsl"
|
||||
|
||||
@@ -47,14 +47,16 @@ build Filament in Release mode, replace `debug` with `release` in the above `bui
|
||||
|
||||
If you also want to be able to run on the iOS simulator, add the `-s` flag to the `build.sh`
|
||||
command. For example, the following command will build for both devices (ARM64) and the simulator
|
||||
(x86_64) in Debug mode:
|
||||
(both Apple silicon `arm64` and Intel `x86_64`) in Debug mode:
|
||||
|
||||
```
|
||||
$ ./build.sh -s -p ios -i debug
|
||||
```
|
||||
|
||||
When building for the simulator, the sample will then link against the libraries present in
|
||||
`out/ios-debug/filament/lib/x86_64`.
|
||||
When building for the simulator, the samples link against the libraries present in
|
||||
`out/ios-debug/filament/lib/arm64` (Apple silicon simulators) or
|
||||
`out/ios-debug/filament/lib/x86_64` (Intel simulators). The Filament `.xcframework`s expose both
|
||||
slices, so Xcode automatically picks the right one for the active simulator runtime.
|
||||
|
||||
## Xcode
|
||||
|
||||
@@ -88,17 +90,20 @@ from scratch.
|
||||
|
||||
## XcodeGen
|
||||
|
||||
[XcodeGen](https://github.com/yonaskolb/XcodeGen) version 2.43.0 is used to generate the Xcode
|
||||
projects. While not required to run the samples, XcodeGen makes modifying them easier. Each sample
|
||||
folder contains the `project.yml` file used for the sample, which includes a global
|
||||
`app-template.yml` file. Simply run
|
||||
[XcodeGen](https://github.com/yonaskolb/XcodeGen) is used to generate the Xcode projects. While not
|
||||
required to run the samples, XcodeGen makes modifying them easier. Each sample folder contains the
|
||||
`project.yml` file used for the sample, which includes a global `app-template.yml` file. Either run
|
||||
|
||||
```
|
||||
$ xcodegen
|
||||
```
|
||||
|
||||
within a sample folder to re-generate the Xcode project. You may need to close and re-open the
|
||||
project in Xcode to see changes take effect.
|
||||
within a sample folder, or run `./generate-samples.sh` from this directory to regenerate all of
|
||||
them at once.
|
||||
|
||||
The committed `project.pbxproj` files use `objectVersion = 77`, which requires **Xcode 16 or newer**
|
||||
to open. CI pins Xcode 16.2 for this reason. You may need to close and re-open the project in Xcode
|
||||
to see changes take effect.
|
||||
|
||||
## Building iOS Samples with ASan / UBSan
|
||||
|
||||
|
||||
@@ -13,30 +13,35 @@ targetTemplates:
|
||||
- path: ${target_name}/Materials
|
||||
buildPhase: none
|
||||
optional: true
|
||||
dependencies:
|
||||
- framework: ../../out/$(FILAMENT_OUT_NAME)/filament/lib/libfilament.xcframework
|
||||
- framework: ../../out/$(FILAMENT_OUT_NAME)/filament/lib/libbackend.xcframework
|
||||
- framework: ../../out/$(FILAMENT_OUT_NAME)/filament/lib/libfilaflat.xcframework
|
||||
- framework: ../../out/$(FILAMENT_OUT_NAME)/filament/lib/libktxreader.xcframework
|
||||
- framework: ../../out/$(FILAMENT_OUT_NAME)/filament/lib/libfilabridge.xcframework
|
||||
- framework: ../../out/$(FILAMENT_OUT_NAME)/filament/lib/libutils.xcframework
|
||||
- framework: ../../out/$(FILAMENT_OUT_NAME)/filament/lib/libsmol-v.xcframework
|
||||
- framework: ../../out/$(FILAMENT_OUT_NAME)/filament/lib/libgeometry.xcframework
|
||||
- framework: ../../out/$(FILAMENT_OUT_NAME)/filament/lib/libibl.xcframework
|
||||
- framework: ../../out/$(FILAMENT_OUT_NAME)/filament/lib/libabseil.xcframework
|
||||
- framework: ../../out/$(FILAMENT_OUT_NAME)/filament/lib/libzstd.xcframework
|
||||
scheme:
|
||||
configVariants:
|
||||
- Metal
|
||||
- OpenGL
|
||||
settings:
|
||||
base:
|
||||
OTHER_LDFLAGS: ["-lfilament", "-lbackend", "-lfilaflat", "-lktxreader",
|
||||
"-lfilabridge", "-lutils", "-lsmol-v", "-lgeometry", "-libl",
|
||||
"-labseil", "-lzstd"]
|
||||
ENABLE_BITCODE: NO
|
||||
CLANG_CXX_LANGUAGE_STANDARD: c++20
|
||||
# This allows users to not have to specify a unique bundle ID when building the sample apps.
|
||||
SAMPLE_CODE_DISAMBIGUATOR: ${DEVELOPMENT_TEAM}
|
||||
configs:
|
||||
debug:
|
||||
HEADER_SEARCH_PATHS: ["../../../out/ios-debug/filament/include", "generated"]
|
||||
LIBRARY_SEARCH_PATHS:
|
||||
- "../../../out/ios-debug/filament/lib/$(CURRENT_ARCH)"
|
||||
- "../../../out/ios-debug/filament/lib/universal"
|
||||
FILAMENT_OUT_NAME: ios-debug
|
||||
HEADER_SEARCH_PATHS: ["$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include", "generated"]
|
||||
release:
|
||||
HEADER_SEARCH_PATHS: ["../../../out/ios-release/filament/include", "generated"]
|
||||
LIBRARY_SEARCH_PATHS:
|
||||
- "../../../out/ios-release/filament/lib/$(CURRENT_ARCH)"
|
||||
- "../../../out/ios-release/filament/lib/universal"
|
||||
FILAMENT_OUT_NAME: ios-release
|
||||
HEADER_SEARCH_PATHS: ["$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include", "generated"]
|
||||
metal:
|
||||
GCC_PREPROCESSOR_DEFINITIONS: ["FILAMENT_APP_USE_METAL=1", "$(inherited)"]
|
||||
opengl:
|
||||
|
||||
@@ -3,34 +3,117 @@
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 54;
|
||||
objectVersion = 77;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
0DE5DD77BF1B9049D63B76D0 /* libutils.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 7C969D515221A7739C68F3AC /* libutils.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
20863805FC626BF952BA3275 /* ViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 33D80A4472074C601C57C773 /* ViewController.mm */; };
|
||||
2AABB2C1262EBA9553666078 /* libsmol-v.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8F108854ADC54BBAA29C2055 /* libsmol-v.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
305D6C983D22F7BC74FC76C7 /* libabseil.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 0ED51915983DAE97083D44EF /* libabseil.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
32AC9F2183DD11F130D4A91D /* libfilament.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 912652335565C18B252345DE /* libfilament.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
376F63E72973F07BF618082D /* FilamentView.mm in Sources */ = {isa = PBXBuildFile; fileRef = B54DFEB4DB6ACC0289FA3046 /* FilamentView.mm */; };
|
||||
3D73E90782CC3A2124DF046F /* libfilaflat.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9E8375B927AFDFD1069016D1 /* libfilaflat.xcframework */; };
|
||||
477A2A67D32B7A3AF2E7B2F4 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = EB0A767D257F3D05BE9F0960 /* LaunchScreen.storyboard */; };
|
||||
66014C413BCBF00E8E6DAF76 /* libgeometry.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = DB3F32D8D3D7310FA3A0C1A1 /* libgeometry.xcframework */; };
|
||||
6A5D5E984CA862B943742745 /* libgeometry.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = DB3F32D8D3D7310FA3A0C1A1 /* libgeometry.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
6C8A7D49A8F689E20D60F4D4 /* libabseil.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0ED51915983DAE97083D44EF /* libabseil.xcframework */; };
|
||||
7D8D3494388D7BF4D9FE4FCE /* libfilamat.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = C4BDDF85AADA2069C0F9FBAE /* libfilamat.xcframework */; };
|
||||
7E671E777FDB5F34AAA13D5A /* libutils.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7C969D515221A7739C68F3AC /* libutils.xcframework */; };
|
||||
8095A6D37F6F1C9C13BBFEA8 /* libfilamat.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = C4BDDF85AADA2069C0F9FBAE /* libfilamat.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
8402B2AC6D081D1E8E065552 /* libbackend.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8632D4625CFCBD32A46772B5 /* libbackend.xcframework */; };
|
||||
88C039F10343B8598FD5FF7F /* libfilabridge.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = B2A3753419FC4A7D4C039868 /* libfilabridge.xcframework */; };
|
||||
91CCBA3BA96DC289D0E8E975 /* main.mm in Sources */ = {isa = PBXBuildFile; fileRef = AE6C78F32A0494087B0CEF32 /* main.mm */; };
|
||||
AA5AB498C5A6117057B06824 /* libfilaflat.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 9E8375B927AFDFD1069016D1 /* libfilaflat.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
AE63AFEA7E7D507BB677C158 /* libbackend.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8632D4625CFCBD32A46772B5 /* libbackend.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
B3684DB18E82C867020294F1 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 5FDB89AD408A508D6CB74C32 /* AppDelegate.m */; };
|
||||
BFE92829375EE1DBA1E4A689 /* libfilabridge.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = B2A3753419FC4A7D4C039868 /* libfilabridge.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
C74DDEF71B6F3C060BB56189 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B63A6E45E40F58037ABD8F84 /* Main.storyboard */; };
|
||||
C8C8BF3416B9B37003F1031E /* libktxreader.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 19CBBB6C426E8D038BDAC97B /* libktxreader.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
D0E54C592A378E549C96A54D /* libibl.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = D1E30700B368B5F84196FD97 /* libibl.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
D472EB54D462394FE99DCE2B /* libibl.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = D1E30700B368B5F84196FD97 /* libibl.xcframework */; };
|
||||
D5B2F0A85F7C6F352AA99DF1 /* libsmol-v.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8F108854ADC54BBAA29C2055 /* libsmol-v.xcframework */; };
|
||||
E090ED826EE54CA2EA611D83 /* libzstd.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 4C3E6E0AB2BA7D686E424D8F /* libzstd.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
E6163776920A1643B1ED01FA /* libzstd.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4C3E6E0AB2BA7D686E424D8F /* libzstd.xcframework */; };
|
||||
F5E844BFD77174F770543A87 /* libfilament.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 912652335565C18B252345DE /* libfilament.xcframework */; };
|
||||
FB393C813D7A30404A2DEF23 /* libktxreader.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 19CBBB6C426E8D038BDAC97B /* libktxreader.xcframework */; };
|
||||
FC9D623AC5CF31BA9FB0C47B /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 93394D7D4A78C56A2BD31A7D /* Assets.xcassets */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXCopyFilesBuildPhase section */
|
||||
0ABB76F2D4011A4AF5186FCA /* Embed Frameworks */ = {
|
||||
isa = PBXCopyFilesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
dstPath = "";
|
||||
dstSubfolderSpec = 10;
|
||||
files = (
|
||||
32AC9F2183DD11F130D4A91D /* libfilament.xcframework in Embed Frameworks */,
|
||||
AE63AFEA7E7D507BB677C158 /* libbackend.xcframework in Embed Frameworks */,
|
||||
AA5AB498C5A6117057B06824 /* libfilaflat.xcframework in Embed Frameworks */,
|
||||
C8C8BF3416B9B37003F1031E /* libktxreader.xcframework in Embed Frameworks */,
|
||||
BFE92829375EE1DBA1E4A689 /* libfilabridge.xcframework in Embed Frameworks */,
|
||||
0DE5DD77BF1B9049D63B76D0 /* libutils.xcframework in Embed Frameworks */,
|
||||
2AABB2C1262EBA9553666078 /* libsmol-v.xcframework in Embed Frameworks */,
|
||||
6A5D5E984CA862B943742745 /* libgeometry.xcframework in Embed Frameworks */,
|
||||
D0E54C592A378E549C96A54D /* libibl.xcframework in Embed Frameworks */,
|
||||
305D6C983D22F7BC74FC76C7 /* libabseil.xcframework in Embed Frameworks */,
|
||||
E090ED826EE54CA2EA611D83 /* libzstd.xcframework in Embed Frameworks */,
|
||||
8095A6D37F6F1C9C13BBFEA8 /* libfilamat.xcframework in Embed Frameworks */,
|
||||
);
|
||||
name = "Embed Frameworks";
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXCopyFilesBuildPhase section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
056C16E7805E8D33D4C8F7B4 /* FilamentView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FilamentView.h; sourceTree = "<group>"; };
|
||||
0ED51915983DAE97083D44EF /* libabseil.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libabseil.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libabseil.xcframework"; sourceTree = "<group>"; };
|
||||
13DDE7723EC1A6EFCA4D2D58 /* backend-test.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = "backend-test.app"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
17364ECD407006EEBDC06024 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
|
||||
19CBBB6C426E8D038BDAC97B /* libktxreader.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libktxreader.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libktxreader.xcframework"; sourceTree = "<group>"; };
|
||||
276A0ADD5B521719BBB1DA21 /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = "<group>"; };
|
||||
33D80A4472074C601C57C773 /* ViewController.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = ViewController.mm; sourceTree = "<group>"; };
|
||||
4C3E6E0AB2BA7D686E424D8F /* libzstd.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libzstd.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libzstd.xcframework"; sourceTree = "<group>"; };
|
||||
5FDB89AD408A508D6CB74C32 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
|
||||
603475CEE63507AA04A9B21A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
|
||||
7C969D515221A7739C68F3AC /* libutils.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libutils.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libutils.xcframework"; sourceTree = "<group>"; };
|
||||
8632D4625CFCBD32A46772B5 /* libbackend.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libbackend.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libbackend.xcframework"; sourceTree = "<group>"; };
|
||||
8F108854ADC54BBAA29C2055 /* libsmol-v.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = "libsmol-v.xcframework"; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libsmol-v.xcframework"; sourceTree = "<group>"; };
|
||||
912652335565C18B252345DE /* libfilament.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libfilament.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libfilament.xcframework"; sourceTree = "<group>"; };
|
||||
93394D7D4A78C56A2BD31A7D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
||||
9E8375B927AFDFD1069016D1 /* libfilaflat.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libfilaflat.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libfilaflat.xcframework"; sourceTree = "<group>"; };
|
||||
A283B2D6DB365368855E2D7A /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
|
||||
AE6C78F32A0494087B0CEF32 /* main.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = main.mm; sourceTree = "<group>"; };
|
||||
B2A3753419FC4A7D4C039868 /* libfilabridge.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libfilabridge.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libfilabridge.xcframework"; sourceTree = "<group>"; };
|
||||
B54DFEB4DB6ACC0289FA3046 /* FilamentView.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = FilamentView.mm; sourceTree = "<group>"; };
|
||||
C4BDDF85AADA2069C0F9FBAE /* libfilamat.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libfilamat.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libfilamat.xcframework"; sourceTree = "<group>"; };
|
||||
C76230D48038E8109EC121B0 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
|
||||
D1E30700B368B5F84196FD97 /* libibl.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libibl.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libibl.xcframework"; sourceTree = "<group>"; };
|
||||
DB3F32D8D3D7310FA3A0C1A1 /* libgeometry.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libgeometry.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libgeometry.xcframework"; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
5E31B50ED1338E6ADE1FA49A /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
F5E844BFD77174F770543A87 /* libfilament.xcframework in Frameworks */,
|
||||
8402B2AC6D081D1E8E065552 /* libbackend.xcframework in Frameworks */,
|
||||
3D73E90782CC3A2124DF046F /* libfilaflat.xcframework in Frameworks */,
|
||||
FB393C813D7A30404A2DEF23 /* libktxreader.xcframework in Frameworks */,
|
||||
88C039F10343B8598FD5FF7F /* libfilabridge.xcframework in Frameworks */,
|
||||
7E671E777FDB5F34AAA13D5A /* libutils.xcframework in Frameworks */,
|
||||
D5B2F0A85F7C6F352AA99DF1 /* libsmol-v.xcframework in Frameworks */,
|
||||
66014C413BCBF00E8E6DAF76 /* libgeometry.xcframework in Frameworks */,
|
||||
D472EB54D462394FE99DCE2B /* libibl.xcframework in Frameworks */,
|
||||
6C8A7D49A8F689E20D60F4D4 /* libabseil.xcframework in Frameworks */,
|
||||
E6163776920A1643B1ED01FA /* libzstd.xcframework in Frameworks */,
|
||||
7D8D3494388D7BF4D9FE4FCE /* libfilamat.xcframework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
05CA69F10D830E40A8FB561D /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
@@ -44,10 +127,30 @@
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
FE198F0E1EF047534F8F3128 /* backend-test */,
|
||||
81BF22C13654E58F622E6BEC /* Frameworks */,
|
||||
05CA69F10D830E40A8FB561D /* Products */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
81BF22C13654E58F622E6BEC /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
0ED51915983DAE97083D44EF /* libabseil.xcframework */,
|
||||
8632D4625CFCBD32A46772B5 /* libbackend.xcframework */,
|
||||
B2A3753419FC4A7D4C039868 /* libfilabridge.xcframework */,
|
||||
9E8375B927AFDFD1069016D1 /* libfilaflat.xcframework */,
|
||||
C4BDDF85AADA2069C0F9FBAE /* libfilamat.xcframework */,
|
||||
912652335565C18B252345DE /* libfilament.xcframework */,
|
||||
DB3F32D8D3D7310FA3A0C1A1 /* libgeometry.xcframework */,
|
||||
D1E30700B368B5F84196FD97 /* libibl.xcframework */,
|
||||
19CBBB6C426E8D038BDAC97B /* libktxreader.xcframework */,
|
||||
8F108854ADC54BBAA29C2055 /* libsmol-v.xcframework */,
|
||||
7C969D515221A7739C68F3AC /* libutils.xcframework */,
|
||||
4C3E6E0AB2BA7D686E424D8F /* libzstd.xcframework */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
FE198F0E1EF047534F8F3128 /* backend-test */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
@@ -57,11 +160,11 @@
|
||||
056C16E7805E8D33D4C8F7B4 /* FilamentView.h */,
|
||||
B54DFEB4DB6ACC0289FA3046 /* FilamentView.mm */,
|
||||
A283B2D6DB365368855E2D7A /* Info.plist */,
|
||||
EB0A767D257F3D05BE9F0960 /* LaunchScreen.storyboard */,
|
||||
AE6C78F32A0494087B0CEF32 /* main.mm */,
|
||||
B63A6E45E40F58037ABD8F84 /* Main.storyboard */,
|
||||
276A0ADD5B521719BBB1DA21 /* ViewController.h */,
|
||||
33D80A4472074C601C57C773 /* ViewController.mm */,
|
||||
EB0A767D257F3D05BE9F0960 /* LaunchScreen.storyboard */,
|
||||
B63A6E45E40F58037ABD8F84 /* Main.storyboard */,
|
||||
);
|
||||
path = "backend-test";
|
||||
sourceTree = "<group>";
|
||||
@@ -75,6 +178,8 @@
|
||||
buildPhases = (
|
||||
445863ED54C294354A388281 /* Sources */,
|
||||
BD71575ED7ED3237FEFD94C7 /* Resources */,
|
||||
5E31B50ED1338E6ADE1FA49A /* Frameworks */,
|
||||
0ABB76F2D4011A4AF5186FCA /* Embed Frameworks */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
@@ -95,9 +200,10 @@
|
||||
attributes = {
|
||||
BuildIndependentTargetsInParallel = YES;
|
||||
LastUpgradeCheck = 1430;
|
||||
TargetAttributes = {
|
||||
};
|
||||
};
|
||||
buildConfigurationList = E89E1EEA671E49DBAC9D5A9C /* Build configuration list for PBXProject "backend-test" */;
|
||||
compatibilityVersion = "Xcode 14.0";
|
||||
developmentRegion = en;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
@@ -106,7 +212,8 @@
|
||||
);
|
||||
mainGroup = 3D2B936C924E0DB70941EE6D;
|
||||
minimizedProjectReferenceProxies = 1;
|
||||
preferredProjectObjectVersion = 54;
|
||||
preferredProjectObjectVersion = 77;
|
||||
productRefGroup = 05CA69F10D830E40A8FB561D /* Products */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
@@ -168,7 +275,7 @@
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
@@ -224,12 +331,17 @@
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
ENABLE_BITCODE = NO;
|
||||
FILAMENT_OUT_NAME = "ios-debug";
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"../../../out/$(FILAMENT_OUT_NAME)/filament/lib\"",
|
||||
);
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"FILAMENT_APP_USE_OPENGL=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"../../../out/ios-debug/filament/include",
|
||||
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
|
||||
generated,
|
||||
);
|
||||
INFOPLIST_FILE = "backend-test/Info.plist";
|
||||
@@ -238,24 +350,8 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"../../../out/ios-debug/filament/lib/$(CURRENT_ARCH)",
|
||||
"../../../out/ios-debug/filament/lib/universal",
|
||||
);
|
||||
OTHER_LDFLAGS = (
|
||||
"-lfilament",
|
||||
"-lbackend",
|
||||
"-lfilaflat",
|
||||
"-lktxreader",
|
||||
"-lfilabridge",
|
||||
"-lutils",
|
||||
"-lsmol-v",
|
||||
"-lgeometry",
|
||||
"-libl",
|
||||
"-labseil",
|
||||
"-lzstd",
|
||||
"-lfilamat",
|
||||
"-force_load ../../../out/ios-debug/filament/lib/arm64/libbackend_test.a",
|
||||
"-force_load $(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/lib/$(CURRENT_ARCH)-$(PLATFORM_NAME)/libbackend_test.a",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "${SAMPLE_CODE_DISAMBIGUATOR}.google.filament.backend-test";
|
||||
SAMPLE_CODE_DISAMBIGUATOR = "${DEVELOPMENT_TEAM}";
|
||||
@@ -270,7 +366,7 @@
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
@@ -333,12 +429,17 @@
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
ENABLE_BITCODE = NO;
|
||||
FILAMENT_OUT_NAME = "ios-release";
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"../../../out/$(FILAMENT_OUT_NAME)/filament/lib\"",
|
||||
);
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"FILAMENT_APP_USE_OPENGL=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"../../../out/ios-release/filament/include",
|
||||
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
|
||||
generated,
|
||||
);
|
||||
INFOPLIST_FILE = "backend-test/Info.plist";
|
||||
@@ -347,24 +448,8 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"../../../out/ios-release/filament/lib/$(CURRENT_ARCH)",
|
||||
"../../../out/ios-release/filament/lib/universal",
|
||||
);
|
||||
OTHER_LDFLAGS = (
|
||||
"-lfilament",
|
||||
"-lbackend",
|
||||
"-lfilaflat",
|
||||
"-lktxreader",
|
||||
"-lfilabridge",
|
||||
"-lutils",
|
||||
"-lsmol-v",
|
||||
"-lgeometry",
|
||||
"-libl",
|
||||
"-labseil",
|
||||
"-lzstd",
|
||||
"-lfilamat",
|
||||
"-force_load ../../../out/ios-debug/filament/lib/arm64/libbackend_test.a",
|
||||
"-force_load $(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/lib/$(CURRENT_ARCH)-$(PLATFORM_NAME)/libbackend_test.a",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "${SAMPLE_CODE_DISAMBIGUATOR}.google.filament.backend-test";
|
||||
SAMPLE_CODE_DISAMBIGUATOR = "${DEVELOPMENT_TEAM}";
|
||||
@@ -379,7 +464,7 @@
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
@@ -435,12 +520,17 @@
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
ENABLE_BITCODE = NO;
|
||||
FILAMENT_OUT_NAME = "ios-debug";
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"../../../out/$(FILAMENT_OUT_NAME)/filament/lib\"",
|
||||
);
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"FILAMENT_APP_USE_METAL=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"../../../out/ios-debug/filament/include",
|
||||
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
|
||||
generated,
|
||||
);
|
||||
INFOPLIST_FILE = "backend-test/Info.plist";
|
||||
@@ -449,24 +539,8 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"../../../out/ios-debug/filament/lib/$(CURRENT_ARCH)",
|
||||
"../../../out/ios-debug/filament/lib/universal",
|
||||
);
|
||||
OTHER_LDFLAGS = (
|
||||
"-lfilament",
|
||||
"-lbackend",
|
||||
"-lfilaflat",
|
||||
"-lktxreader",
|
||||
"-lfilabridge",
|
||||
"-lutils",
|
||||
"-lsmol-v",
|
||||
"-lgeometry",
|
||||
"-libl",
|
||||
"-labseil",
|
||||
"-lzstd",
|
||||
"-lfilamat",
|
||||
"-force_load ../../../out/ios-debug/filament/lib/arm64/libbackend_test.a",
|
||||
"-force_load $(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/lib/$(CURRENT_ARCH)-$(PLATFORM_NAME)/libbackend_test.a",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "${SAMPLE_CODE_DISAMBIGUATOR}.google.filament.backend-test";
|
||||
SAMPLE_CODE_DISAMBIGUATOR = "${DEVELOPMENT_TEAM}";
|
||||
@@ -482,12 +556,17 @@
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
ENABLE_BITCODE = NO;
|
||||
FILAMENT_OUT_NAME = "ios-release";
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"../../../out/$(FILAMENT_OUT_NAME)/filament/lib\"",
|
||||
);
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"FILAMENT_APP_USE_METAL=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"../../../out/ios-release/filament/include",
|
||||
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
|
||||
generated,
|
||||
);
|
||||
INFOPLIST_FILE = "backend-test/Info.plist";
|
||||
@@ -496,24 +575,8 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"../../../out/ios-release/filament/lib/$(CURRENT_ARCH)",
|
||||
"../../../out/ios-release/filament/lib/universal",
|
||||
);
|
||||
OTHER_LDFLAGS = (
|
||||
"-lfilament",
|
||||
"-lbackend",
|
||||
"-lfilaflat",
|
||||
"-lktxreader",
|
||||
"-lfilabridge",
|
||||
"-lutils",
|
||||
"-lsmol-v",
|
||||
"-lgeometry",
|
||||
"-libl",
|
||||
"-labseil",
|
||||
"-lzstd",
|
||||
"-lfilamat",
|
||||
"-force_load ../../../out/ios-debug/filament/lib/arm64/libbackend_test.a",
|
||||
"-force_load $(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/lib/$(CURRENT_ARCH)-$(PLATFORM_NAME)/libbackend_test.a",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "${SAMPLE_CODE_DISAMBIGUATOR}.google.filament.backend-test";
|
||||
SAMPLE_CODE_DISAMBIGUATOR = "${DEVELOPMENT_TEAM}";
|
||||
@@ -528,7 +591,7 @@
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
|
||||
@@ -6,8 +6,10 @@ targets:
|
||||
backend-test:
|
||||
templates:
|
||||
- FilamentApp
|
||||
dependencies:
|
||||
- framework: ../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libfilamat.xcframework
|
||||
settings:
|
||||
base:
|
||||
# Because each test case is a separate file, the -force_load flag is necessary to prevent the
|
||||
# linker from removing "unused" symbols.
|
||||
OTHER_LDFLAGS: ["-lfilamat", "-force_load ../../../out/ios-debug/filament/lib/arm64/libbackend_test.a"]
|
||||
OTHER_LDFLAGS: ["-force_load $(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/lib/$(CURRENT_ARCH)-$(PLATFORM_NAME)/libbackend_test.a"]
|
||||
|
||||
@@ -10,7 +10,7 @@ set -e
|
||||
|
||||
HOST_TOOLS_PATH="${HOST_TOOLS_PATH:-../../../out/release/filament/bin}"
|
||||
|
||||
cmgen_path=`find ${HOST_TOOLS_PATH} -name cmgen -type f | head -n 1`
|
||||
cmgen_path=`find -L ${HOST_TOOLS_PATH} -name cmgen -type f | head -n 1`
|
||||
|
||||
# Ensure that the required tools are present in the out/ directory.
|
||||
# These can be built by running ./build.sh -p desktop -i release at Filament's root directory.
|
||||
|
||||
@@ -3,40 +3,178 @@
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 54;
|
||||
objectVersion = 77;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
00101E55E74547D6C2FD8C03 /* default_env_ibl.ktx in Resources */ = {isa = PBXBuildFile; fileRef = A027015F6F283E92C379F0B1 /* default_env_ibl.ktx */; };
|
||||
0A6463A23D9E0C766EF24559 /* libgeometry.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 61B9468E1B7FED7F00513152 /* libgeometry.xcframework */; };
|
||||
10A51B4DB601FEF9A6F1C0E3 /* libgeometry.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 61B9468E1B7FED7F00513152 /* libgeometry.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
10EB5B0EBD334A09BFC3B9DF /* libibl.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4D2FB034B2AD911A82D44F4E /* libibl.xcframework */; };
|
||||
1297B48507BF2849751AE0E6 /* FILViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3B5A2C1598614ED63098A783 /* FILViewController.mm */; };
|
||||
1404696E6E1E5E4D265773B8 /* libsmol-v.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = C766C894259479FC62B7C8B4 /* libsmol-v.xcframework */; };
|
||||
14D3627324AE91F7B9C74745 /* libuberzlib.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = F7030A0C0BABAD05CDEAFDE8 /* libuberzlib.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
174327B08EFFA8255829FF49 /* libbackend.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 1CFC9093A6EF27302A37326E /* libbackend.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
1E42FEC5AE043BDDCE3CB0A4 /* libcamutils.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 2B534EACCD70A2DA1623F743 /* libcamutils.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
22EBD00922E4FBAE5F20AF3B /* libviewer.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 52712E0BD50CA883190B6C1D /* libviewer.xcframework */; };
|
||||
285A74424AF5E3014363F8E6 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 14BA4B8B6A697847DA9934D2 /* Main.storyboard */; };
|
||||
2B0B9C8428D402D919CAC47E /* libimageio-lite.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 60330C4B6F21AA47B5524999 /* libimageio-lite.xcframework */; };
|
||||
318A6749D6D4258385B67447 /* libzstd.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 75EFC385D49A53E005466F45 /* libzstd.xcframework */; };
|
||||
36E0764917CB1EE729C6B771 /* libfilaflat.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = CF656283054DABCE73A96F57 /* libfilaflat.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
379B9C62A9AB782FDBC0E16C /* libabseil.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6BFA0007FC472C65083E2452 /* libabseil.xcframework */; };
|
||||
3CF14DE9557B15702D1CC5A9 /* libstb.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 487A93E37417074697C5AEE1 /* libstb.xcframework */; };
|
||||
4033B9273D8B4C4631200EC1 /* libimage.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8F6D55F40189E2AD59138BFC /* libimage.xcframework */; };
|
||||
453F7CCB3A029F9604857C1C /* FILModelView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1F16324F2F287CB27E1A84EB /* FILModelView.mm */; };
|
||||
45F28F70A616F4B5C67FEC66 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = DF545E3F8FD553E334F5D6D6 /* Assets.xcassets */; };
|
||||
4C287DB6F93BD352927F003A /* libabseil.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6BFA0007FC472C65083E2452 /* libabseil.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
4FE0C24C9B962C9F7439C9D4 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 1FF7EE9D5DD74F1A740C0D88 /* main.m */; };
|
||||
58EBAAC97B7EA63E102CDCDB /* BusterDrone in Resources */ = {isa = PBXBuildFile; fileRef = 7F78E613984102280C822052 /* BusterDrone */; };
|
||||
5C706EF98086B64B4CB3EF9A /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = A0A866F9B1B8D315E88D3D12 /* AppDelegate.m */; };
|
||||
5FA818045C43856C7FFED3DB /* libcivetweb.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = B41054C75146CF46900EB674 /* libcivetweb.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
60EB0B4391BB0FB171A4481D /* libmeshoptimizer.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = F696C8553E8CC1A6416678CB /* libmeshoptimizer.xcframework */; };
|
||||
698BA8E8638E7BD46D6BC337 /* libcamutils.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2B534EACCD70A2DA1623F743 /* libcamutils.xcframework */; };
|
||||
700D3E15E852F06C5D8AD28B /* libfilament.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 515259657B354C8F37272D16 /* libfilament.xcframework */; };
|
||||
701EA9C2DFA93FC8D27E4831 /* libimage.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8F6D55F40189E2AD59138BFC /* libimage.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
7922299F8548416D6E8504AB /* libfilabridge.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 020557AD44AE2D4F9D99EC33 /* libfilabridge.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
7FB58BE1AF39FD8710F6903E /* libzstd.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 75EFC385D49A53E005466F45 /* libzstd.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
847436C12F9597E494EDD811 /* libutils.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 91CAACDECFDED76D0DBD8404 /* libutils.xcframework */; };
|
||||
872D52205E6A17C440CEFB8B /* libbackend.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1CFC9093A6EF27302A37326E /* libbackend.xcframework */; };
|
||||
8949CFB77397BDDBB71B155C /* libfilaflat.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = CF656283054DABCE73A96F57 /* libfilaflat.xcframework */; };
|
||||
8A03666082048B85BDE1C1CE /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 21CA7296309BBFADBB0B00C3 /* LaunchScreen.storyboard */; };
|
||||
902D317731C0347ED896B7D2 /* libuberzlib.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = F7030A0C0BABAD05CDEAFDE8 /* libuberzlib.xcframework */; };
|
||||
A5D1D0F914C22A76A15EF93E /* libktxreader.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = AF19593AAD6D35C6A9198C27 /* libktxreader.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
A6C04B690A802EBF133E23C4 /* libfilament.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 515259657B354C8F37272D16 /* libfilament.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
A7C7D42BDE57B77CB9D9C5D2 /* default_env_skybox.ktx in Resources */ = {isa = PBXBuildFile; fileRef = 5271315876D6BC61346DFD97 /* default_env_skybox.ktx */; };
|
||||
AB07A9DD1861F9233ADC5A9F /* libibl.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 4D2FB034B2AD911A82D44F4E /* libibl.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
AE30134D543B24298D96BC03 /* libdracodec.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 7A57517D52C2BDCA859338D1 /* libdracodec.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
AEDF1CEAF183E92426DA594A /* libmeshoptimizer.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = F696C8553E8CC1A6416678CB /* libmeshoptimizer.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
AFAD827230601E60E38FA771 /* libstb.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 487A93E37417074697C5AEE1 /* libstb.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
B54C62933C17714E465A76A5 /* libutils.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 91CAACDECFDED76D0DBD8404 /* libutils.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
C0D8E3E2C38F674A23427224 /* libuberarchive.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 25D5A93890B91F8C86BE2F0A /* libuberarchive.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
C427F6D58A977156565AE677 /* libcivetweb.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = B41054C75146CF46900EB674 /* libcivetweb.xcframework */; };
|
||||
C7A64F27B1A83023C1212E1C /* libdracodec.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7A57517D52C2BDCA859338D1 /* libdracodec.xcframework */; };
|
||||
CB3A6143B788613B58BAB28A /* libgltfio_core.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5B9B11A731D26A94397D4B9B /* libgltfio_core.xcframework */; };
|
||||
CDD73BDF196F559F671AE616 /* libbasis_transcoder.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 4EDA245B8F43311DD75A1F81 /* libbasis_transcoder.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
D3AE8B47D9F8509C8A875E39 /* libgltfio_core.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 5B9B11A731D26A94397D4B9B /* libgltfio_core.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
D89F33EFEDE5814BFA8D9892 /* libimageio-lite.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 60330C4B6F21AA47B5524999 /* libimageio-lite.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
D93CA0A2E8A487D040934121 /* libsmol-v.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = C766C894259479FC62B7C8B4 /* libsmol-v.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
EFBDF01BC780CE2F40B83CE0 /* libbasis_transcoder.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4EDA245B8F43311DD75A1F81 /* libbasis_transcoder.xcframework */; };
|
||||
F14C52ECDB8C27794AD54DB0 /* libuberarchive.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 25D5A93890B91F8C86BE2F0A /* libuberarchive.xcframework */; };
|
||||
F5B36F9395DFC29EA677B406 /* libktxreader.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF19593AAD6D35C6A9198C27 /* libktxreader.xcframework */; };
|
||||
F682DAD214D9F8E2DD36A110 /* libviewer.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 52712E0BD50CA883190B6C1D /* libviewer.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
FC3919370067F7747B9C4C53 /* libfilabridge.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 020557AD44AE2D4F9D99EC33 /* libfilabridge.xcframework */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXCopyFilesBuildPhase section */
|
||||
26182010104312BFB0BA3CE4 /* Embed Frameworks */ = {
|
||||
isa = PBXCopyFilesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
dstPath = "";
|
||||
dstSubfolderSpec = 10;
|
||||
files = (
|
||||
A6C04B690A802EBF133E23C4 /* libfilament.xcframework in Embed Frameworks */,
|
||||
174327B08EFFA8255829FF49 /* libbackend.xcframework in Embed Frameworks */,
|
||||
36E0764917CB1EE729C6B771 /* libfilaflat.xcframework in Embed Frameworks */,
|
||||
A5D1D0F914C22A76A15EF93E /* libktxreader.xcframework in Embed Frameworks */,
|
||||
7922299F8548416D6E8504AB /* libfilabridge.xcframework in Embed Frameworks */,
|
||||
B54C62933C17714E465A76A5 /* libutils.xcframework in Embed Frameworks */,
|
||||
D93CA0A2E8A487D040934121 /* libsmol-v.xcframework in Embed Frameworks */,
|
||||
10A51B4DB601FEF9A6F1C0E3 /* libgeometry.xcframework in Embed Frameworks */,
|
||||
AB07A9DD1861F9233ADC5A9F /* libibl.xcframework in Embed Frameworks */,
|
||||
4C287DB6F93BD352927F003A /* libabseil.xcframework in Embed Frameworks */,
|
||||
7FB58BE1AF39FD8710F6903E /* libzstd.xcframework in Embed Frameworks */,
|
||||
D3AE8B47D9F8509C8A875E39 /* libgltfio_core.xcframework in Embed Frameworks */,
|
||||
C0D8E3E2C38F674A23427224 /* libuberarchive.xcframework in Embed Frameworks */,
|
||||
701EA9C2DFA93FC8D27E4831 /* libimage.xcframework in Embed Frameworks */,
|
||||
AFAD827230601E60E38FA771 /* libstb.xcframework in Embed Frameworks */,
|
||||
CDD73BDF196F559F671AE616 /* libbasis_transcoder.xcframework in Embed Frameworks */,
|
||||
1E42FEC5AE043BDDCE3CB0A4 /* libcamutils.xcframework in Embed Frameworks */,
|
||||
AE30134D543B24298D96BC03 /* libdracodec.xcframework in Embed Frameworks */,
|
||||
AEDF1CEAF183E92426DA594A /* libmeshoptimizer.xcframework in Embed Frameworks */,
|
||||
F682DAD214D9F8E2DD36A110 /* libviewer.xcframework in Embed Frameworks */,
|
||||
5FA818045C43856C7FFED3DB /* libcivetweb.xcframework in Embed Frameworks */,
|
||||
14D3627324AE91F7B9C74745 /* libuberzlib.xcframework in Embed Frameworks */,
|
||||
D89F33EFEDE5814BFA8D9892 /* libimageio-lite.xcframework in Embed Frameworks */,
|
||||
);
|
||||
name = "Embed Frameworks";
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXCopyFilesBuildPhase section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
020557AD44AE2D4F9D99EC33 /* libfilabridge.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libfilabridge.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libfilabridge.xcframework"; sourceTree = "<group>"; };
|
||||
03A535A718B2F64A70C5F231 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
|
||||
1CFC9093A6EF27302A37326E /* libbackend.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libbackend.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libbackend.xcframework"; sourceTree = "<group>"; };
|
||||
1ED9318FEC158171D99C0857 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
|
||||
1F16324F2F287CB27E1A84EB /* FILModelView.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = FILModelView.mm; sourceTree = "<group>"; };
|
||||
1FF7EE9D5DD74F1A740C0D88 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
|
||||
25D5A93890B91F8C86BE2F0A /* libuberarchive.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libuberarchive.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libuberarchive.xcframework"; sourceTree = "<group>"; };
|
||||
2B534EACCD70A2DA1623F743 /* libcamutils.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libcamutils.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libcamutils.xcframework"; sourceTree = "<group>"; };
|
||||
2B973C3E0FE0EEED37D41D32 /* FILModelView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FILModelView.h; sourceTree = "<group>"; };
|
||||
3B5A2C1598614ED63098A783 /* FILViewController.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = FILViewController.mm; sourceTree = "<group>"; };
|
||||
487A93E37417074697C5AEE1 /* libstb.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libstb.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libstb.xcframework"; sourceTree = "<group>"; };
|
||||
4D2FB034B2AD911A82D44F4E /* libibl.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libibl.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libibl.xcframework"; sourceTree = "<group>"; };
|
||||
4EDA245B8F43311DD75A1F81 /* libbasis_transcoder.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libbasis_transcoder.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libbasis_transcoder.xcframework"; sourceTree = "<group>"; };
|
||||
515259657B354C8F37272D16 /* libfilament.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libfilament.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libfilament.xcframework"; sourceTree = "<group>"; };
|
||||
52712E0BD50CA883190B6C1D /* libviewer.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libviewer.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libviewer.xcframework"; sourceTree = "<group>"; };
|
||||
5271315876D6BC61346DFD97 /* default_env_skybox.ktx */ = {isa = PBXFileReference; path = default_env_skybox.ktx; sourceTree = "<group>"; };
|
||||
5B9B11A731D26A94397D4B9B /* libgltfio_core.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libgltfio_core.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libgltfio_core.xcframework"; sourceTree = "<group>"; };
|
||||
60330C4B6F21AA47B5524999 /* libimageio-lite.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = "libimageio-lite.xcframework"; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libimageio-lite.xcframework"; sourceTree = "<group>"; };
|
||||
61B9468E1B7FED7F00513152 /* libgeometry.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libgeometry.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libgeometry.xcframework"; sourceTree = "<group>"; };
|
||||
6BFA0007FC472C65083E2452 /* libabseil.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libabseil.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libabseil.xcframework"; sourceTree = "<group>"; };
|
||||
6E6BB885F2B193E786CD9F14 /* FILViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FILViewController.h; sourceTree = "<group>"; };
|
||||
75EFC385D49A53E005466F45 /* libzstd.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libzstd.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libzstd.xcframework"; sourceTree = "<group>"; };
|
||||
7A57517D52C2BDCA859338D1 /* libdracodec.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libdracodec.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libdracodec.xcframework"; sourceTree = "<group>"; };
|
||||
7F78E613984102280C822052 /* BusterDrone */ = {isa = PBXFileReference; lastKnownFileType = folder; name = BusterDrone; path = ../../../third_party/models/BusterDrone; sourceTree = SOURCE_ROOT; };
|
||||
8F6D55F40189E2AD59138BFC /* libimage.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libimage.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libimage.xcframework"; sourceTree = "<group>"; };
|
||||
91CAACDECFDED76D0DBD8404 /* libutils.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libutils.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libutils.xcframework"; sourceTree = "<group>"; };
|
||||
9ADEA6DE7305D0B8CCFFA53D /* gltf-viewer.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = "gltf-viewer.app"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
A027015F6F283E92C379F0B1 /* default_env_ibl.ktx */ = {isa = PBXFileReference; path = default_env_ibl.ktx; sourceTree = "<group>"; };
|
||||
A0A866F9B1B8D315E88D3D12 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
|
||||
AF19593AAD6D35C6A9198C27 /* libktxreader.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libktxreader.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libktxreader.xcframework"; sourceTree = "<group>"; };
|
||||
B41054C75146CF46900EB674 /* libcivetweb.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libcivetweb.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libcivetweb.xcframework"; sourceTree = "<group>"; };
|
||||
B9C391BBD90EB54D27F8E4FD /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
|
||||
C766C894259479FC62B7C8B4 /* libsmol-v.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = "libsmol-v.xcframework"; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libsmol-v.xcframework"; sourceTree = "<group>"; };
|
||||
C7ECAA95F4A55C69B948F806 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
|
||||
CF656283054DABCE73A96F57 /* libfilaflat.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libfilaflat.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libfilaflat.xcframework"; sourceTree = "<group>"; };
|
||||
DF545E3F8FD553E334F5D6D6 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
||||
F696C8553E8CC1A6416678CB /* libmeshoptimizer.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libmeshoptimizer.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libmeshoptimizer.xcframework"; sourceTree = "<group>"; };
|
||||
F7030A0C0BABAD05CDEAFDE8 /* libuberzlib.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libuberzlib.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libuberzlib.xcframework"; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
E646271806112A138895CBE3 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
700D3E15E852F06C5D8AD28B /* libfilament.xcframework in Frameworks */,
|
||||
872D52205E6A17C440CEFB8B /* libbackend.xcframework in Frameworks */,
|
||||
8949CFB77397BDDBB71B155C /* libfilaflat.xcframework in Frameworks */,
|
||||
F5B36F9395DFC29EA677B406 /* libktxreader.xcframework in Frameworks */,
|
||||
FC3919370067F7747B9C4C53 /* libfilabridge.xcframework in Frameworks */,
|
||||
847436C12F9597E494EDD811 /* libutils.xcframework in Frameworks */,
|
||||
1404696E6E1E5E4D265773B8 /* libsmol-v.xcframework in Frameworks */,
|
||||
0A6463A23D9E0C766EF24559 /* libgeometry.xcframework in Frameworks */,
|
||||
10EB5B0EBD334A09BFC3B9DF /* libibl.xcframework in Frameworks */,
|
||||
379B9C62A9AB782FDBC0E16C /* libabseil.xcframework in Frameworks */,
|
||||
318A6749D6D4258385B67447 /* libzstd.xcframework in Frameworks */,
|
||||
CB3A6143B788613B58BAB28A /* libgltfio_core.xcframework in Frameworks */,
|
||||
F14C52ECDB8C27794AD54DB0 /* libuberarchive.xcframework in Frameworks */,
|
||||
4033B9273D8B4C4631200EC1 /* libimage.xcframework in Frameworks */,
|
||||
3CF14DE9557B15702D1CC5A9 /* libstb.xcframework in Frameworks */,
|
||||
EFBDF01BC780CE2F40B83CE0 /* libbasis_transcoder.xcframework in Frameworks */,
|
||||
698BA8E8638E7BD46D6BC337 /* libcamutils.xcframework in Frameworks */,
|
||||
C7A64F27B1A83023C1212E1C /* libdracodec.xcframework in Frameworks */,
|
||||
60EB0B4391BB0FB171A4481D /* libmeshoptimizer.xcframework in Frameworks */,
|
||||
22EBD00922E4FBAE5F20AF3B /* libviewer.xcframework in Frameworks */,
|
||||
C427F6D58A977156565AE677 /* libcivetweb.xcframework in Frameworks */,
|
||||
902D317731C0347ED896B7D2 /* libuberzlib.xcframework in Frameworks */,
|
||||
2B0B9C8428D402D919CAC47E /* libimageio-lite.xcframework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
2678CEA2FDBFE6D6DC1D4D71 /* gltf-viewer */ = {
|
||||
isa = PBXGroup;
|
||||
@@ -65,8 +203,8 @@
|
||||
children = (
|
||||
DF545E3F8FD553E334F5D6D6 /* Assets.xcassets */,
|
||||
B9C391BBD90EB54D27F8E4FD /* Info.plist */,
|
||||
21CA7296309BBFADBB0B00C3 /* LaunchScreen.storyboard */,
|
||||
1FF7EE9D5DD74F1A740C0D88 /* main.m */,
|
||||
21CA7296309BBFADBB0B00C3 /* LaunchScreen.storyboard */,
|
||||
14BA4B8B6A697847DA9934D2 /* Main.storyboard */,
|
||||
);
|
||||
path = SupportFiles;
|
||||
@@ -78,10 +216,41 @@
|
||||
7F78E613984102280C822052 /* BusterDrone */,
|
||||
E102A6C527928715EF7B0497 /* default_env */,
|
||||
2678CEA2FDBFE6D6DC1D4D71 /* gltf-viewer */,
|
||||
8826A1E62E0B87AA4A9982D5 /* Frameworks */,
|
||||
3BFD6EBD6D97D6F1C40F1C90 /* Products */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
8826A1E62E0B87AA4A9982D5 /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
6BFA0007FC472C65083E2452 /* libabseil.xcframework */,
|
||||
1CFC9093A6EF27302A37326E /* libbackend.xcframework */,
|
||||
4EDA245B8F43311DD75A1F81 /* libbasis_transcoder.xcframework */,
|
||||
2B534EACCD70A2DA1623F743 /* libcamutils.xcframework */,
|
||||
B41054C75146CF46900EB674 /* libcivetweb.xcframework */,
|
||||
7A57517D52C2BDCA859338D1 /* libdracodec.xcframework */,
|
||||
020557AD44AE2D4F9D99EC33 /* libfilabridge.xcframework */,
|
||||
CF656283054DABCE73A96F57 /* libfilaflat.xcframework */,
|
||||
515259657B354C8F37272D16 /* libfilament.xcframework */,
|
||||
61B9468E1B7FED7F00513152 /* libgeometry.xcframework */,
|
||||
5B9B11A731D26A94397D4B9B /* libgltfio_core.xcframework */,
|
||||
4D2FB034B2AD911A82D44F4E /* libibl.xcframework */,
|
||||
8F6D55F40189E2AD59138BFC /* libimage.xcframework */,
|
||||
60330C4B6F21AA47B5524999 /* libimageio-lite.xcframework */,
|
||||
AF19593AAD6D35C6A9198C27 /* libktxreader.xcframework */,
|
||||
F696C8553E8CC1A6416678CB /* libmeshoptimizer.xcframework */,
|
||||
C766C894259479FC62B7C8B4 /* libsmol-v.xcframework */,
|
||||
487A93E37417074697C5AEE1 /* libstb.xcframework */,
|
||||
25D5A93890B91F8C86BE2F0A /* libuberarchive.xcframework */,
|
||||
F7030A0C0BABAD05CDEAFDE8 /* libuberzlib.xcframework */,
|
||||
91CAACDECFDED76D0DBD8404 /* libutils.xcframework */,
|
||||
52712E0BD50CA883190B6C1D /* libviewer.xcframework */,
|
||||
75EFC385D49A53E005466F45 /* libzstd.xcframework */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
E102A6C527928715EF7B0497 /* default_env */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
@@ -102,6 +271,8 @@
|
||||
0B375996CE4EBC4A5B258C27 /* Build Resources */,
|
||||
C8F38C978C83CD5335A21F72 /* Sources */,
|
||||
7D3B1B99EEAFB6F53ECBAA5A /* Resources */,
|
||||
E646271806112A138895CBE3 /* Frameworks */,
|
||||
26182010104312BFB0BA3CE4 /* Embed Frameworks */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
@@ -122,9 +293,10 @@
|
||||
attributes = {
|
||||
BuildIndependentTargetsInParallel = YES;
|
||||
LastUpgradeCheck = 1430;
|
||||
TargetAttributes = {
|
||||
};
|
||||
};
|
||||
buildConfigurationList = 90327DE42AE5DF12C4BD2113 /* Build configuration list for PBXProject "gltf-viewer" */;
|
||||
compatibilityVersion = "Xcode 14.0";
|
||||
developmentRegion = en;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
@@ -133,7 +305,8 @@
|
||||
);
|
||||
mainGroup = 7DB4500696DB13904CDF40C4;
|
||||
minimizedProjectReferenceProxies = 1;
|
||||
preferredProjectObjectVersion = 56;
|
||||
preferredProjectObjectVersion = 77;
|
||||
productRefGroup = 3BFD6EBD6D97D6F1C40F1C90 /* Products */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
@@ -167,7 +340,7 @@
|
||||
inputFileListPaths = (
|
||||
);
|
||||
inputPaths = (
|
||||
"$(SRCROOT)/../../../third_party/environments/lightroom_14b.hdr",
|
||||
../../../third_party/environments/lightroom_14b.hdr,
|
||||
);
|
||||
name = "Build Resources";
|
||||
outputFileListPaths = (
|
||||
@@ -178,7 +351,7 @@
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "#/usr/bin/env/bash\n\nset -e\n\n# Compile resources.\n\n# The gltf-viewer app requires two resources:\n# 1. The IBL image\n# 2. The skybox image\n\nHOST_TOOLS_PATH=\"${HOST_TOOLS_PATH:-../../../out/release/filament/bin}\"\n\ncmgen_path=`find ${HOST_TOOLS_PATH} -name cmgen -type f | head -n 1`\n\n# Ensure that the required tools are present in the out/ directory.\n# These can be built by running ./build.sh -p desktop -i release at Filament's root directory.\n\nif [[ ! -e \"${cmgen_path}\" ]]; then\n echo \"No cmgen binary could be found in ${HOST_TOOLS_PATH}.\"\n echo \"Ensure Filament has been built/installed before building this app.\"\n exit 1\nfi\n\n# cmgen consumes an HDR environment map and generates two mipmapped KTX files (IBL and skybox)\n\"${cmgen_path}\" \\\n --quiet \\\n --deploy=\"${PROJECT_DIR}/generated/default_env\" \\\n --format=ktx --size=256 --extract-blur=0.1 \\\n \"${PROJECT_DIR}/../../../third_party/environments/lightroom_14b.hdr\"\n";
|
||||
shellScript = "#/usr/bin/env/bash\n\nset -e\n\n# Compile resources.\n\n# The gltf-viewer app requires two resources:\n# 1. The IBL image\n# 2. The skybox image\n\nHOST_TOOLS_PATH=\"${HOST_TOOLS_PATH:-../../../out/release/filament/bin}\"\n\ncmgen_path=`find -L ${HOST_TOOLS_PATH} -name cmgen -type f | head -n 1`\n\n# Ensure that the required tools are present in the out/ directory.\n# These can be built by running ./build.sh -p desktop -i release at Filament's root directory.\n\nif [[ ! -e \"${cmgen_path}\" ]]; then\n echo \"No cmgen binary could be found in ${HOST_TOOLS_PATH}.\"\n echo \"Ensure Filament has been built/installed before building this app.\"\n exit 1\nfi\n\n# cmgen consumes an HDR environment map and generates two mipmapped KTX files (IBL and skybox)\n\"${cmgen_path}\" \\\n --quiet \\\n --deploy=\"${PROJECT_DIR}/generated/default_env\" \\\n --format=ktx --size=256 --extract-blur=0.1 \\\n \"${PROJECT_DIR}/../../../third_party/environments/lightroom_14b.hdr\"\n";
|
||||
};
|
||||
/* End PBXShellScriptBuildPhase section */
|
||||
|
||||
@@ -222,7 +395,7 @@
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
@@ -284,7 +457,7 @@
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
@@ -339,7 +512,7 @@
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
@@ -395,12 +568,17 @@
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
ENABLE_BITCODE = NO;
|
||||
FILAMENT_OUT_NAME = "ios-release";
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"../../../out/$(FILAMENT_OUT_NAME)/filament/lib\"",
|
||||
);
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"FILAMENT_APP_USE_METAL=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"../../../out/ios-release/filament/include",
|
||||
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
|
||||
generated,
|
||||
);
|
||||
INFOPLIST_FILE = "gltf-viewer/SupportFiles/Info.plist";
|
||||
@@ -409,36 +587,6 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"../../../out/ios-release/filament/lib/$(CURRENT_ARCH)",
|
||||
"../../../out/ios-release/filament/lib/universal",
|
||||
);
|
||||
OTHER_LDFLAGS = (
|
||||
"-lfilament",
|
||||
"-lbackend",
|
||||
"-lfilaflat",
|
||||
"-lktxreader",
|
||||
"-lfilabridge",
|
||||
"-lutils",
|
||||
"-lsmol-v",
|
||||
"-lgeometry",
|
||||
"-libl",
|
||||
"-labseil",
|
||||
"-lzstd",
|
||||
"-lgltfio_core",
|
||||
"-luberarchive",
|
||||
"-limage",
|
||||
"-lstb",
|
||||
"-lbasis_transcoder",
|
||||
"-lzstd",
|
||||
"-lcamutils",
|
||||
"-ldracodec",
|
||||
"-lmeshoptimizer",
|
||||
"-lviewer",
|
||||
"-lcivetweb",
|
||||
"-luberzlib",
|
||||
"-limageio-lite",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "${SAMPLE_CODE_DISAMBIGUATOR}.google.filament.gltf-viewer";
|
||||
SAMPLE_CODE_DISAMBIGUATOR = "${DEVELOPMENT_TEAM}";
|
||||
SDKROOT = iphoneos;
|
||||
@@ -453,12 +601,17 @@
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
ENABLE_BITCODE = NO;
|
||||
FILAMENT_OUT_NAME = "ios-debug";
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"../../../out/$(FILAMENT_OUT_NAME)/filament/lib\"",
|
||||
);
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"FILAMENT_APP_USE_METAL=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"../../../out/ios-debug/filament/include",
|
||||
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
|
||||
generated,
|
||||
);
|
||||
INFOPLIST_FILE = "gltf-viewer/SupportFiles/Info.plist";
|
||||
@@ -467,36 +620,6 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"../../../out/ios-debug/filament/lib/$(CURRENT_ARCH)",
|
||||
"../../../out/ios-debug/filament/lib/universal",
|
||||
);
|
||||
OTHER_LDFLAGS = (
|
||||
"-lfilament",
|
||||
"-lbackend",
|
||||
"-lfilaflat",
|
||||
"-lktxreader",
|
||||
"-lfilabridge",
|
||||
"-lutils",
|
||||
"-lsmol-v",
|
||||
"-lgeometry",
|
||||
"-libl",
|
||||
"-labseil",
|
||||
"-lzstd",
|
||||
"-lgltfio_core",
|
||||
"-luberarchive",
|
||||
"-limage",
|
||||
"-lstb",
|
||||
"-lbasis_transcoder",
|
||||
"-lzstd",
|
||||
"-lcamutils",
|
||||
"-ldracodec",
|
||||
"-lmeshoptimizer",
|
||||
"-lviewer",
|
||||
"-lcivetweb",
|
||||
"-luberzlib",
|
||||
"-limageio-lite",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "${SAMPLE_CODE_DISAMBIGUATOR}.google.filament.gltf-viewer";
|
||||
SAMPLE_CODE_DISAMBIGUATOR = "${DEVELOPMENT_TEAM}";
|
||||
SDKROOT = iphoneos;
|
||||
@@ -510,7 +633,7 @@
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
@@ -573,12 +696,17 @@
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
ENABLE_BITCODE = NO;
|
||||
FILAMENT_OUT_NAME = "ios-release";
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"../../../out/$(FILAMENT_OUT_NAME)/filament/lib\"",
|
||||
);
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"FILAMENT_APP_USE_OPENGL=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"../../../out/ios-release/filament/include",
|
||||
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
|
||||
generated,
|
||||
);
|
||||
INFOPLIST_FILE = "gltf-viewer/SupportFiles/Info.plist";
|
||||
@@ -587,36 +715,6 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"../../../out/ios-release/filament/lib/$(CURRENT_ARCH)",
|
||||
"../../../out/ios-release/filament/lib/universal",
|
||||
);
|
||||
OTHER_LDFLAGS = (
|
||||
"-lfilament",
|
||||
"-lbackend",
|
||||
"-lfilaflat",
|
||||
"-lktxreader",
|
||||
"-lfilabridge",
|
||||
"-lutils",
|
||||
"-lsmol-v",
|
||||
"-lgeometry",
|
||||
"-libl",
|
||||
"-labseil",
|
||||
"-lzstd",
|
||||
"-lgltfio_core",
|
||||
"-luberarchive",
|
||||
"-limage",
|
||||
"-lstb",
|
||||
"-lbasis_transcoder",
|
||||
"-lzstd",
|
||||
"-lcamutils",
|
||||
"-ldracodec",
|
||||
"-lmeshoptimizer",
|
||||
"-lviewer",
|
||||
"-lcivetweb",
|
||||
"-luberzlib",
|
||||
"-limageio-lite",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "${SAMPLE_CODE_DISAMBIGUATOR}.google.filament.gltf-viewer";
|
||||
SAMPLE_CODE_DISAMBIGUATOR = "${DEVELOPMENT_TEAM}";
|
||||
SDKROOT = iphoneos;
|
||||
@@ -631,12 +729,17 @@
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
ENABLE_BITCODE = NO;
|
||||
FILAMENT_OUT_NAME = "ios-debug";
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"../../../out/$(FILAMENT_OUT_NAME)/filament/lib\"",
|
||||
);
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"FILAMENT_APP_USE_OPENGL=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"../../../out/ios-debug/filament/include",
|
||||
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
|
||||
generated,
|
||||
);
|
||||
INFOPLIST_FILE = "gltf-viewer/SupportFiles/Info.plist";
|
||||
@@ -645,36 +748,6 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"../../../out/ios-debug/filament/lib/$(CURRENT_ARCH)",
|
||||
"../../../out/ios-debug/filament/lib/universal",
|
||||
);
|
||||
OTHER_LDFLAGS = (
|
||||
"-lfilament",
|
||||
"-lbackend",
|
||||
"-lfilaflat",
|
||||
"-lktxreader",
|
||||
"-lfilabridge",
|
||||
"-lutils",
|
||||
"-lsmol-v",
|
||||
"-lgeometry",
|
||||
"-libl",
|
||||
"-labseil",
|
||||
"-lzstd",
|
||||
"-lgltfio_core",
|
||||
"-luberarchive",
|
||||
"-limage",
|
||||
"-lstb",
|
||||
"-lbasis_transcoder",
|
||||
"-lzstd",
|
||||
"-lcamutils",
|
||||
"-ldracodec",
|
||||
"-lmeshoptimizer",
|
||||
"-lviewer",
|
||||
"-lcivetweb",
|
||||
"-luberzlib",
|
||||
"-limageio-lite",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "${SAMPLE_CODE_DISAMBIGUATOR}.google.filament.gltf-viewer";
|
||||
SAMPLE_CODE_DISAMBIGUATOR = "${DEVELOPMENT_TEAM}";
|
||||
SDKROOT = iphoneos;
|
||||
|
||||
@@ -17,16 +17,24 @@ targets:
|
||||
optional: true
|
||||
templates:
|
||||
- FilamentApp
|
||||
settings:
|
||||
base:
|
||||
OTHER_LDFLAGS: ["-lgltfio_core", "-luberarchive", "-limage", "-lstb", "-lbasis_transcoder",
|
||||
"-lzstd", "-lcamutils", "-ldracodec", "-lmeshoptimizer", "-lviewer", "-lcivetweb",
|
||||
"-luberzlib", "-limageio-lite"]
|
||||
dependencies:
|
||||
- framework: ../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libgltfio_core.xcframework
|
||||
- framework: ../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libuberarchive.xcframework
|
||||
- framework: ../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libimage.xcframework
|
||||
- framework: ../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libstb.xcframework
|
||||
- framework: ../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libbasis_transcoder.xcframework
|
||||
- framework: ../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libcamutils.xcframework
|
||||
- framework: ../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libdracodec.xcframework
|
||||
- framework: ../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libmeshoptimizer.xcframework
|
||||
- framework: ../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libviewer.xcframework
|
||||
- framework: ../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libcivetweb.xcframework
|
||||
- framework: ../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libuberzlib.xcframework
|
||||
- framework: ../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libimageio-lite.xcframework
|
||||
preBuildScripts:
|
||||
- path: build-resources.sh
|
||||
name: Build Resources
|
||||
inputFiles:
|
||||
- $(SRCROOT)/../../../third_party/environments/lightroom_14b.hdr
|
||||
- ../../../third_party/environments/lightroom_14b.hdr
|
||||
outputFiles:
|
||||
- $(SRCROOT)/generated/default_env/default_env_ibl.ktx
|
||||
- $(SRCROOT)/generated/default_env/default_env_skybox.ktx
|
||||
|
||||
@@ -14,10 +14,10 @@ set -e
|
||||
|
||||
HOST_TOOLS_PATH="${HOST_TOOLS_PATH:-../../../out/release/filament/bin}"
|
||||
|
||||
filamesh_path=`find ${HOST_TOOLS_PATH} -name filamesh -type f | head -n 1`
|
||||
matc_path=`find ${HOST_TOOLS_PATH} -name matc -type f | head -n 1`
|
||||
resgen_path=`find ${HOST_TOOLS_PATH} -name resgen -type f | head -n 1`
|
||||
cmgen_path=`find ${HOST_TOOLS_PATH} -name cmgen -type f | head -n 1`
|
||||
filamesh_path=`find -L ${HOST_TOOLS_PATH} -name filamesh -type f | head -n 1`
|
||||
matc_path=`find -L ${HOST_TOOLS_PATH} -name matc -type f | head -n 1`
|
||||
resgen_path=`find -L ${HOST_TOOLS_PATH} -name resgen -type f | head -n 1`
|
||||
cmgen_path=`find -L ${HOST_TOOLS_PATH} -name cmgen -type f | head -n 1`
|
||||
|
||||
# Ensure that the required tools are present in the out/ directory.
|
||||
# These can be built by running ./build.sh -p desktop -i release at Filament's root directory.
|
||||
|
||||
@@ -3,44 +3,113 @@
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 54;
|
||||
objectVersion = 77;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
01DEF0C8AAF14D275D5E731B /* libgeometry.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = D3D6EFC9EE7349AC9F4F845A /* libgeometry.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
0704BBFECEFCE6618E4A67F7 /* libfilabridge.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 67D8E02D1AF661E4EF7CC2CD /* libfilabridge.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
072B1333A85F99F6FBA10846 /* libzstd.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = E238CF2D5E37556427C00675 /* libzstd.xcframework */; };
|
||||
091D995885B1312DA4322F31 /* libsmol-v.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0DE88103BBBE542FC5D46B1 /* libsmol-v.xcframework */; };
|
||||
11DE997161B2D3272247EE72 /* libbackend.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 9E445414106E7103104FC16C /* libbackend.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
1EFC9E499E3733CF230DAECB /* libabseil.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = DB899E40418A88883E6ED2E4 /* libabseil.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
2956D56161744254E2FFD353 /* libgeometry.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = D3D6EFC9EE7349AC9F4F845A /* libgeometry.xcframework */; };
|
||||
2B4ED44D08F36953D3D111CF /* libfilaflat.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = C9D99ABAB340140BF94D57B3 /* libfilaflat.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
4FAC85567A730FCCB7B3B6EC /* FilamentApp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CF21F54926F34F027F4FCEA4 /* FilamentApp.cpp */; };
|
||||
50F0F62A949F9DB17E1E102D /* libmeshoptimizer.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4CA1720B9D4D55AB6B8513B0 /* libmeshoptimizer.xcframework */; };
|
||||
5432120E716355C4A519ABC6 /* FilamentArViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = AA47852B486CBD549FA68729 /* FilamentArViewController.mm */; };
|
||||
5FEA2EC1B8A6FECCACA5FAFA /* libutils.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 644F36437FC03CCC25AC6EFC /* libutils.xcframework */; };
|
||||
66754FE8EF26B5335C0CC9FF /* FullScreenTriangle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 05D9AFA7CFC6498FE2A8C6A5 /* FullScreenTriangle.cpp */; };
|
||||
6D2DAB291A29345E5179ECD8 /* libfilament.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 87261693EC970989615C5AE7 /* libfilament.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
6DF5D6B097AC3C124C576DD1 /* libfilabridge.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 67D8E02D1AF661E4EF7CC2CD /* libfilabridge.xcframework */; };
|
||||
819CEF9004BAA1BD59EB3ADE /* libktxreader.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = A8E5A38F197D487277FDED20 /* libktxreader.xcframework */; };
|
||||
84AC34B44E1AEE96BA8C53B0 /* libimage.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 586F9BE85A436EBA56181848 /* libimage.xcframework */; };
|
||||
85C9CA885D3E9BA87AEA24E8 /* libsmol-v.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = D0DE88103BBBE542FC5D46B1 /* libsmol-v.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
89E16D259F951AA787C3B265 /* libutils.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 644F36437FC03CCC25AC6EFC /* libutils.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
9718E9B12B1D353DF9E66311 /* libibl.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = D6422176EDC22262D20C51A8 /* libibl.xcframework */; };
|
||||
99BD70EFF08A1419FE539A44 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = AE684A73135705C4EDAA7C53 /* Assets.xcassets */; };
|
||||
ACF87F0F3989EF583E90E499 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = B6B92BD0FA8E6F9CFEAE1707 /* main.m */; };
|
||||
AE4035E76423745AFC8CEB58 /* libfilameshio.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 16ED3BF9A0D7194CECB86D55 /* libfilameshio.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
AEEFE325E8BDB00E30FDEC93 /* Resources.S in Sources */ = {isa = PBXBuildFile; fileRef = DD0010D60097DEAA82DAA089 /* Resources.S */; };
|
||||
B28ED2F81785F13E0B9A3607 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = EC652AC3D2C91759215320C3 /* AppDelegate.m */; };
|
||||
B48D41A39CF5F4FDE5CF6770 /* libfilameshio.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 16ED3BF9A0D7194CECB86D55 /* libfilameshio.xcframework */; };
|
||||
B604AB5F246840D2CCF4762B /* libfilaflat.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = C9D99ABAB340140BF94D57B3 /* libfilaflat.xcframework */; };
|
||||
B8934FC46557424E705A2154 /* ARKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 33B2CBA1A0F654632B39A45D /* ARKit.framework */; };
|
||||
BC6AAB72CD468EF04F684014 /* libabseil.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = DB899E40418A88883E6ED2E4 /* libabseil.xcframework */; };
|
||||
CB7C1B8F335B873B77D15934 /* libmeshoptimizer.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 4CA1720B9D4D55AB6B8513B0 /* libmeshoptimizer.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
CBBBF68C2F58FF0F4FA81008 /* libimage.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 586F9BE85A436EBA56181848 /* libimage.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
CE6AB7B76D5EB580EFD90897 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = AFCB91D87494B7FC879A7A5E /* Main.storyboard */; };
|
||||
CFCD1B57C3CDFA2AC3525EF6 /* libfilament.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 87261693EC970989615C5AE7 /* libfilament.xcframework */; };
|
||||
D56834764BC4D127736878DF /* libbackend.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9E445414106E7103104FC16C /* libbackend.xcframework */; };
|
||||
DD6C337BAEC527FA0F5DB4A3 /* libibl.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = D6422176EDC22262D20C51A8 /* libibl.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
DEF78081F52F6A776242A599 /* FilamentView.m in Sources */ = {isa = PBXBuildFile; fileRef = 53D025A0625708CC50AEA0DB /* FilamentView.m */; };
|
||||
E4C06B048BFA075CD9FB73AD /* libktxreader.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = A8E5A38F197D487277FDED20 /* libktxreader.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
E92B00016D52070448DA66F6 /* libzstd.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = E238CF2D5E37556427C00675 /* libzstd.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
F933D6701B0A0E90381E8030 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = C88A8BDFC06D144D80EC052B /* LaunchScreen.storyboard */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXCopyFilesBuildPhase section */
|
||||
AA70CE1AA47836D72F588764 /* Embed Frameworks */ = {
|
||||
isa = PBXCopyFilesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
dstPath = "";
|
||||
dstSubfolderSpec = 10;
|
||||
files = (
|
||||
6D2DAB291A29345E5179ECD8 /* libfilament.xcframework in Embed Frameworks */,
|
||||
11DE997161B2D3272247EE72 /* libbackend.xcframework in Embed Frameworks */,
|
||||
2B4ED44D08F36953D3D111CF /* libfilaflat.xcframework in Embed Frameworks */,
|
||||
E4C06B048BFA075CD9FB73AD /* libktxreader.xcframework in Embed Frameworks */,
|
||||
0704BBFECEFCE6618E4A67F7 /* libfilabridge.xcframework in Embed Frameworks */,
|
||||
89E16D259F951AA787C3B265 /* libutils.xcframework in Embed Frameworks */,
|
||||
85C9CA885D3E9BA87AEA24E8 /* libsmol-v.xcframework in Embed Frameworks */,
|
||||
01DEF0C8AAF14D275D5E731B /* libgeometry.xcframework in Embed Frameworks */,
|
||||
DD6C337BAEC527FA0F5DB4A3 /* libibl.xcframework in Embed Frameworks */,
|
||||
1EFC9E499E3733CF230DAECB /* libabseil.xcframework in Embed Frameworks */,
|
||||
E92B00016D52070448DA66F6 /* libzstd.xcframework in Embed Frameworks */,
|
||||
AE4035E76423745AFC8CEB58 /* libfilameshio.xcframework in Embed Frameworks */,
|
||||
CB7C1B8F335B873B77D15934 /* libmeshoptimizer.xcframework in Embed Frameworks */,
|
||||
CBBBF68C2F58FF0F4FA81008 /* libimage.xcframework in Embed Frameworks */,
|
||||
);
|
||||
name = "Embed Frameworks";
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXCopyFilesBuildPhase section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
05D9AFA7CFC6498FE2A8C6A5 /* FullScreenTriangle.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = FullScreenTriangle.cpp; sourceTree = "<group>"; };
|
||||
16ED3BF9A0D7194CECB86D55 /* libfilameshio.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libfilameshio.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libfilameshio.xcframework"; sourceTree = "<group>"; };
|
||||
2AFEFBF6FE91628599F70817 /* clear_coat.mat */ = {isa = PBXFileReference; path = clear_coat.mat; sourceTree = "<group>"; };
|
||||
2AFF66F1228C5F1079042FE2 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
|
||||
33B2CBA1A0F654632B39A45D /* ARKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ARKit.framework; path = System/Library/Frameworks/ARKit.framework; sourceTree = SDKROOT; };
|
||||
4CA1720B9D4D55AB6B8513B0 /* libmeshoptimizer.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libmeshoptimizer.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libmeshoptimizer.xcframework"; sourceTree = "<group>"; };
|
||||
4F8E6B508F8C5DE284DA2E34 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
|
||||
53D025A0625708CC50AEA0DB /* FilamentView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FilamentView.m; sourceTree = "<group>"; };
|
||||
586F9BE85A436EBA56181848 /* libimage.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libimage.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libimage.xcframework"; sourceTree = "<group>"; };
|
||||
5B5D3E611DCDD9CD2C13B825 /* FilamentApp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FilamentApp.h; sourceTree = "<group>"; };
|
||||
644F36437FC03CCC25AC6EFC /* libutils.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libutils.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libutils.xcframework"; sourceTree = "<group>"; };
|
||||
67D8E02D1AF661E4EF7CC2CD /* libfilabridge.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libfilabridge.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libfilabridge.xcframework"; sourceTree = "<group>"; };
|
||||
6938BE21CFB8BEB2422BD490 /* FilamentArViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FilamentArViewController.h; sourceTree = "<group>"; };
|
||||
7C5E322BA97EEB4FB7EC030F /* camera_feed.mat */ = {isa = PBXFileReference; path = camera_feed.mat; sourceTree = "<group>"; };
|
||||
87261693EC970989615C5AE7 /* libfilament.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libfilament.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libfilament.xcframework"; sourceTree = "<group>"; };
|
||||
8832D93E678057F9940A226D /* shadow_plane.mat */ = {isa = PBXFileReference; path = shadow_plane.mat; sourceTree = "<group>"; };
|
||||
973EB840E804440B2AA0F93A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
|
||||
9E445414106E7103104FC16C /* libbackend.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libbackend.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libbackend.xcframework"; sourceTree = "<group>"; };
|
||||
A85B9D53F72DEE0374F8EBDF /* FullScreenTriangle.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FullScreenTriangle.h; sourceTree = "<group>"; };
|
||||
A8E5A38F197D487277FDED20 /* libktxreader.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libktxreader.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libktxreader.xcframework"; sourceTree = "<group>"; };
|
||||
AA47852B486CBD549FA68729 /* FilamentArViewController.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = FilamentArViewController.mm; sourceTree = "<group>"; };
|
||||
AE684A73135705C4EDAA7C53 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
||||
AF451D7D0FAAD069F916F51C /* MathHelpers.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MathHelpers.h; sourceTree = "<group>"; };
|
||||
B6B92BD0FA8E6F9CFEAE1707 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
|
||||
C9D99ABAB340140BF94D57B3 /* libfilaflat.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libfilaflat.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libfilaflat.xcframework"; sourceTree = "<group>"; };
|
||||
CF21F54926F34F027F4FCEA4 /* FilamentApp.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = FilamentApp.cpp; sourceTree = "<group>"; };
|
||||
D0800F9FE0C390D084082637 /* FilamentView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FilamentView.h; sourceTree = "<group>"; };
|
||||
D0DE88103BBBE542FC5D46B1 /* libsmol-v.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = "libsmol-v.xcframework"; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libsmol-v.xcframework"; sourceTree = "<group>"; };
|
||||
D3D6EFC9EE7349AC9F4F845A /* libgeometry.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libgeometry.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libgeometry.xcframework"; sourceTree = "<group>"; };
|
||||
D6422176EDC22262D20C51A8 /* libibl.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libibl.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libibl.xcframework"; sourceTree = "<group>"; };
|
||||
D7BA0AA38645722DCFA3490D /* hello-ar.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = "hello-ar.app"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
DB899E40418A88883E6ED2E4 /* libabseil.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libabseil.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libabseil.xcframework"; sourceTree = "<group>"; };
|
||||
DD0010D60097DEAA82DAA089 /* Resources.S */ = {isa = PBXFileReference; path = Resources.S; sourceTree = "<group>"; };
|
||||
E238CF2D5E37556427C00675 /* libzstd.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libzstd.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libzstd.xcframework"; sourceTree = "<group>"; };
|
||||
EC652AC3D2C91759215320C3 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
|
||||
FCF16FE1B4146DE87F2B76F3 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
@@ -50,7 +119,21 @@
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
CFCD1B57C3CDFA2AC3525EF6 /* libfilament.xcframework in Frameworks */,
|
||||
D56834764BC4D127736878DF /* libbackend.xcframework in Frameworks */,
|
||||
B604AB5F246840D2CCF4762B /* libfilaflat.xcframework in Frameworks */,
|
||||
819CEF9004BAA1BD59EB3ADE /* libktxreader.xcframework in Frameworks */,
|
||||
6DF5D6B097AC3C124C576DD1 /* libfilabridge.xcframework in Frameworks */,
|
||||
5FEA2EC1B8A6FECCACA5FAFA /* libutils.xcframework in Frameworks */,
|
||||
091D995885B1312DA4322F31 /* libsmol-v.xcframework in Frameworks */,
|
||||
2956D56161744254E2FFD353 /* libgeometry.xcframework in Frameworks */,
|
||||
9718E9B12B1D353DF9E66311 /* libibl.xcframework in Frameworks */,
|
||||
BC6AAB72CD468EF04F684014 /* libabseil.xcframework in Frameworks */,
|
||||
072B1333A85F99F6FBA10846 /* libzstd.xcframework in Frameworks */,
|
||||
B8934FC46557424E705A2154 /* ARKit.framework in Frameworks */,
|
||||
B48D41A39CF5F4FDE5CF6770 /* libfilameshio.xcframework in Frameworks */,
|
||||
50F0F62A949F9DB17E1E102D /* libmeshoptimizer.xcframework in Frameworks */,
|
||||
84AC34B44E1AEE96BA8C53B0 /* libimage.xcframework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@@ -92,6 +175,20 @@
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
33B2CBA1A0F654632B39A45D /* ARKit.framework */,
|
||||
DB899E40418A88883E6ED2E4 /* libabseil.xcframework */,
|
||||
9E445414106E7103104FC16C /* libbackend.xcframework */,
|
||||
67D8E02D1AF661E4EF7CC2CD /* libfilabridge.xcframework */,
|
||||
C9D99ABAB340140BF94D57B3 /* libfilaflat.xcframework */,
|
||||
87261693EC970989615C5AE7 /* libfilament.xcframework */,
|
||||
16ED3BF9A0D7194CECB86D55 /* libfilameshio.xcframework */,
|
||||
D3D6EFC9EE7349AC9F4F845A /* libgeometry.xcframework */,
|
||||
D6422176EDC22262D20C51A8 /* libibl.xcframework */,
|
||||
586F9BE85A436EBA56181848 /* libimage.xcframework */,
|
||||
A8E5A38F197D487277FDED20 /* libktxreader.xcframework */,
|
||||
4CA1720B9D4D55AB6B8513B0 /* libmeshoptimizer.xcframework */,
|
||||
D0DE88103BBBE542FC5D46B1 /* libsmol-v.xcframework */,
|
||||
644F36437FC03CCC25AC6EFC /* libutils.xcframework */,
|
||||
E238CF2D5E37556427C00675 /* libzstd.xcframework */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
@@ -101,10 +198,10 @@
|
||||
children = (
|
||||
AE684A73135705C4EDAA7C53 /* Assets.xcassets */,
|
||||
FCF16FE1B4146DE87F2B76F3 /* Info.plist */,
|
||||
C88A8BDFC06D144D80EC052B /* LaunchScreen.storyboard */,
|
||||
B6B92BD0FA8E6F9CFEAE1707 /* main.m */,
|
||||
AFCB91D87494B7FC879A7A5E /* Main.storyboard */,
|
||||
DD0010D60097DEAA82DAA089 /* Resources.S */,
|
||||
C88A8BDFC06D144D80EC052B /* LaunchScreen.storyboard */,
|
||||
AFCB91D87494B7FC879A7A5E /* Main.storyboard */,
|
||||
);
|
||||
path = SupportFiles;
|
||||
sourceTree = "<group>";
|
||||
@@ -144,6 +241,7 @@
|
||||
A5598850636B6208AE64E95E /* Sources */,
|
||||
77189A28CB88A4753728F549 /* Resources */,
|
||||
FA9CC5F2D3E84FB632557A2E /* Frameworks */,
|
||||
AA70CE1AA47836D72F588764 /* Embed Frameworks */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
@@ -164,9 +262,10 @@
|
||||
attributes = {
|
||||
BuildIndependentTargetsInParallel = YES;
|
||||
LastUpgradeCheck = 1430;
|
||||
TargetAttributes = {
|
||||
};
|
||||
};
|
||||
buildConfigurationList = 281E763643B2F1F3B903864B /* Build configuration list for PBXProject "hello-ar" */;
|
||||
compatibilityVersion = "Xcode 14.0";
|
||||
developmentRegion = en;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
@@ -175,7 +274,8 @@
|
||||
);
|
||||
mainGroup = 316A56C698744769908E6F88;
|
||||
minimizedProjectReferenceProxies = 1;
|
||||
preferredProjectObjectVersion = 54;
|
||||
preferredProjectObjectVersion = 77;
|
||||
productRefGroup = E2EC9706948EC07E74121EF1 /* Products */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
@@ -214,7 +314,7 @@
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "#/usr/bin/env/bash\n\nset -e\n\n# Compile resources.\n\n# The hello-ar app requires four resources:\n# 1. The cube mesh\n# 2. The Filament material definition\n# 3. The Filament camera feed material definition\n# 4. The Filament shadow plane material definition\n# 5. The IBL image\n# These will be compiled into the final binary via the resgen tool.\n\nHOST_TOOLS_PATH=\"${HOST_TOOLS_PATH:-../../../out/release/filament/bin}\"\n\nfilamesh_path=`find ${HOST_TOOLS_PATH} -name filamesh -type f | head -n 1`\nmatc_path=`find ${HOST_TOOLS_PATH} -name matc -type f | head -n 1`\nresgen_path=`find ${HOST_TOOLS_PATH} -name resgen -type f | head -n 1`\ncmgen_path=`find ${HOST_TOOLS_PATH} -name cmgen -type f | head -n 1`\n\n# Ensure that the required tools are present in the out/ directory.\n# These can be built by running ./build.sh -p desktop -i release at Filament's root directory.\n\nif [[ ! -e \"${filamesh_path}\" ]]; then\n echo \"No filamesh binary could be found in ${HOST_TOOLS_PATH}.\"\n echo \"Ensure Filament has been built/installed before building this app.\"\n exit 1\nfi\n\nif [[ ! -e \"${matc_path}\" ]]; then\n echo \"No matc binary could be found in ${HOST_TOOLS_PATH}.\"\n echo \"Ensure Filament has been built/installed before building this app.\"\n exit 1\nfi\n\nif [[ ! -e \"${resgen_path}\" ]]; then\n echo \"No resgen binary could be found in ${HOST_TOOLS_PATH}.\"\n echo \"Ensure Filament has been built/installed before building this app.\"\n exit 1\nfi\n\nif [[ ! -e \"${cmgen_path}\" ]]; then\n echo \"No cmgen binary could be found in ${HOST_TOOLS_PATH}.\"\n echo \"Ensure Filament has been built/installed before building this app.\"\n exit 1\nfi\n\n# The filamesh tool converts the .obj file into a Filament-specific filamesh file that has been\n# optimized for loading into Filament.\nmkdir -p \"${PROJECT_DIR}/generated/\"\n\"${filamesh_path}\" \\\n \"${PROJECT_DIR}/../../../assets/models/rounded_cube/rounded_cube.obj\" \\\n \"${PROJECT_DIR}/generated/cube.filamesh\"\n\n# The matc tool compiles the clear_coat.mat, shadow_plane.mat, and camera_feed.mat materials into\n# Filament material BLOBs.\n\n\"${matc_path}\" \\\n --api all \\\n --platform mobile \\\n -o \"${PROJECT_DIR}/generated/clear_coat.filamat\" \\\n \"${PROJECT_DIR}/Materials/clear_coat.mat\"\n\n\"${matc_path}\" \\\n --api all \\\n --platform mobile \\\n -o \"${PROJECT_DIR}/generated/shadow_plane.filamat\" \\\n \"${PROJECT_DIR}/Materials/shadow_plane.mat\"\n\n\"${matc_path}\" \\\n --api all \\\n --platform mobile \\\n -o \"${PROJECT_DIR}/generated/camera_feed.filamat\" \\\n \"${PROJECT_DIR}/Materials/camera_feed.mat\"\n\n# cmgen consumes an HDR environment map and generates two mipmapped KTX files (IBL and skybox)\n\"${cmgen_path}\" \\\n --quiet \\\n --deploy=\"${PROJECT_DIR}/generated/venetian_crossroads_2k\" \\\n --format=ktx --size=256 \\\n \"${PROJECT_DIR}/../../../third_party/environments/venetian_crossroads_2k.hdr\"\n\n# The resgen tool generates an assembly file, resources.apple.S that gets compiled and linked\n# into the final binary. It contains all the resources consumed by the app.\n\"${resgen_path}\" \\\n --deploy=\"${PROJECT_DIR}/generated\" \\\n \"${PROJECT_DIR}/generated/cube.filamesh\" \\\n \"${PROJECT_DIR}/generated/clear_coat.filamat\" \\\n \"${PROJECT_DIR}/generated/shadow_plane.filamat\" \\\n \"${PROJECT_DIR}/generated/camera_feed.filamat\" \\\n \"${PROJECT_DIR}/generated/venetian_crossroads_2k/venetian_crossroads_2k_ibl.ktx\"\n\n# FilamentApp.cpp and Resources.S include files generated by resgen.\n# Touch them to force Xcode to recompile.\ntouch \"${PROJECT_DIR}/hello-ar/FilamentArView/FullScreenTriangle.cpp\"\ntouch \"${PROJECT_DIR}/hello-ar/FilamentArView/FilamentApp.cpp\"\ntouch \"${PROJECT_DIR}/hello-ar/SupportFiles/Resources.S\"\n";
|
||||
shellScript = "#/usr/bin/env/bash\n\nset -e\n\n# Compile resources.\n\n# The hello-ar app requires four resources:\n# 1. The cube mesh\n# 2. The Filament material definition\n# 3. The Filament camera feed material definition\n# 4. The Filament shadow plane material definition\n# 5. The IBL image\n# These will be compiled into the final binary via the resgen tool.\n\nHOST_TOOLS_PATH=\"${HOST_TOOLS_PATH:-../../../out/release/filament/bin}\"\n\nfilamesh_path=`find -L ${HOST_TOOLS_PATH} -name filamesh -type f | head -n 1`\nmatc_path=`find -L ${HOST_TOOLS_PATH} -name matc -type f | head -n 1`\nresgen_path=`find -L ${HOST_TOOLS_PATH} -name resgen -type f | head -n 1`\ncmgen_path=`find -L ${HOST_TOOLS_PATH} -name cmgen -type f | head -n 1`\n\n# Ensure that the required tools are present in the out/ directory.\n# These can be built by running ./build.sh -p desktop -i release at Filament's root directory.\n\nif [[ ! -e \"${filamesh_path}\" ]]; then\n echo \"No filamesh binary could be found in ${HOST_TOOLS_PATH}.\"\n echo \"Ensure Filament has been built/installed before building this app.\"\n exit 1\nfi\n\nif [[ ! -e \"${matc_path}\" ]]; then\n echo \"No matc binary could be found in ${HOST_TOOLS_PATH}.\"\n echo \"Ensure Filament has been built/installed before building this app.\"\n exit 1\nfi\n\nif [[ ! -e \"${resgen_path}\" ]]; then\n echo \"No resgen binary could be found in ${HOST_TOOLS_PATH}.\"\n echo \"Ensure Filament has been built/installed before building this app.\"\n exit 1\nfi\n\nif [[ ! -e \"${cmgen_path}\" ]]; then\n echo \"No cmgen binary could be found in ${HOST_TOOLS_PATH}.\"\n echo \"Ensure Filament has been built/installed before building this app.\"\n exit 1\nfi\n\n# The filamesh tool converts the .obj file into a Filament-specific filamesh file that has been\n# optimized for loading into Filament.\nmkdir -p \"${PROJECT_DIR}/generated/\"\n\"${filamesh_path}\" \\\n \"${PROJECT_DIR}/../../../assets/models/rounded_cube/rounded_cube.obj\" \\\n \"${PROJECT_DIR}/generated/cube.filamesh\"\n\n# The matc tool compiles the clear_coat.mat, shadow_plane.mat, and camera_feed.mat materials into\n# Filament material BLOBs.\n\n\"${matc_path}\" \\\n --api all \\\n --platform mobile \\\n -o \"${PROJECT_DIR}/generated/clear_coat.filamat\" \\\n \"${PROJECT_DIR}/Materials/clear_coat.mat\"\n\n\"${matc_path}\" \\\n --api all \\\n --platform mobile \\\n -o \"${PROJECT_DIR}/generated/shadow_plane.filamat\" \\\n \"${PROJECT_DIR}/Materials/shadow_plane.mat\"\n\n\"${matc_path}\" \\\n --api all \\\n --platform mobile \\\n -o \"${PROJECT_DIR}/generated/camera_feed.filamat\" \\\n \"${PROJECT_DIR}/Materials/camera_feed.mat\"\n\n# cmgen consumes an HDR environment map and generates two mipmapped KTX files (IBL and skybox)\n\"${cmgen_path}\" \\\n --quiet \\\n --deploy=\"${PROJECT_DIR}/generated/venetian_crossroads_2k\" \\\n --format=ktx --size=256 \\\n \"${PROJECT_DIR}/../../../third_party/environments/venetian_crossroads_2k.hdr\"\n\n# The resgen tool generates an assembly file, resources.apple.S that gets compiled and linked\n# into the final binary. It contains all the resources consumed by the app.\n\"${resgen_path}\" \\\n --deploy=\"${PROJECT_DIR}/generated\" \\\n \"${PROJECT_DIR}/generated/cube.filamesh\" \\\n \"${PROJECT_DIR}/generated/clear_coat.filamat\" \\\n \"${PROJECT_DIR}/generated/shadow_plane.filamat\" \\\n \"${PROJECT_DIR}/generated/camera_feed.filamat\" \\\n \"${PROJECT_DIR}/generated/venetian_crossroads_2k/venetian_crossroads_2k_ibl.ktx\"\n\n# FilamentApp.cpp and Resources.S include files generated by resgen.\n# Touch them to force Xcode to recompile.\ntouch \"${PROJECT_DIR}/hello-ar/FilamentArView/FullScreenTriangle.cpp\"\ntouch \"${PROJECT_DIR}/hello-ar/FilamentArView/FilamentApp.cpp\"\ntouch \"${PROJECT_DIR}/hello-ar/SupportFiles/Resources.S\"\n";
|
||||
};
|
||||
/* End PBXShellScriptBuildPhase section */
|
||||
|
||||
@@ -262,12 +362,17 @@
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
ENABLE_BITCODE = NO;
|
||||
FILAMENT_OUT_NAME = "ios-debug";
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"../../../out/$(FILAMENT_OUT_NAME)/filament/lib\"",
|
||||
);
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"FILAMENT_APP_USE_METAL=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"../../../out/ios-debug/filament/include",
|
||||
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
|
||||
generated,
|
||||
);
|
||||
INFOPLIST_FILE = "hello-ar/SupportFiles/Info.plist";
|
||||
@@ -276,26 +381,6 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"../../../out/ios-debug/filament/lib/$(CURRENT_ARCH)",
|
||||
"../../../out/ios-debug/filament/lib/universal",
|
||||
);
|
||||
OTHER_LDFLAGS = (
|
||||
"-lfilament",
|
||||
"-lbackend",
|
||||
"-lfilaflat",
|
||||
"-lktxreader",
|
||||
"-lfilabridge",
|
||||
"-lutils",
|
||||
"-lsmol-v",
|
||||
"-lgeometry",
|
||||
"-libl",
|
||||
"-labseil",
|
||||
"-lzstd",
|
||||
"-lfilameshio",
|
||||
"-lmeshoptimizer",
|
||||
"-limage",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "${SAMPLE_CODE_DISAMBIGUATOR}.google.filament.hello-ar";
|
||||
SAMPLE_CODE_DISAMBIGUATOR = "${DEVELOPMENT_TEAM}";
|
||||
SDKROOT = iphoneos;
|
||||
@@ -310,12 +395,17 @@
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
ENABLE_BITCODE = NO;
|
||||
FILAMENT_OUT_NAME = "ios-release";
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"../../../out/$(FILAMENT_OUT_NAME)/filament/lib\"",
|
||||
);
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"FILAMENT_APP_USE_OPENGL=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"../../../out/ios-release/filament/include",
|
||||
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
|
||||
generated,
|
||||
);
|
||||
INFOPLIST_FILE = "hello-ar/SupportFiles/Info.plist";
|
||||
@@ -324,26 +414,6 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"../../../out/ios-release/filament/lib/$(CURRENT_ARCH)",
|
||||
"../../../out/ios-release/filament/lib/universal",
|
||||
);
|
||||
OTHER_LDFLAGS = (
|
||||
"-lfilament",
|
||||
"-lbackend",
|
||||
"-lfilaflat",
|
||||
"-lktxreader",
|
||||
"-lfilabridge",
|
||||
"-lutils",
|
||||
"-lsmol-v",
|
||||
"-lgeometry",
|
||||
"-libl",
|
||||
"-labseil",
|
||||
"-lzstd",
|
||||
"-lfilameshio",
|
||||
"-lmeshoptimizer",
|
||||
"-limage",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "${SAMPLE_CODE_DISAMBIGUATOR}.google.filament.hello-ar";
|
||||
SAMPLE_CODE_DISAMBIGUATOR = "${DEVELOPMENT_TEAM}";
|
||||
SDKROOT = iphoneos;
|
||||
@@ -357,7 +427,7 @@
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
@@ -420,12 +490,17 @@
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
ENABLE_BITCODE = NO;
|
||||
FILAMENT_OUT_NAME = "ios-release";
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"../../../out/$(FILAMENT_OUT_NAME)/filament/lib\"",
|
||||
);
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"FILAMENT_APP_USE_METAL=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"../../../out/ios-release/filament/include",
|
||||
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
|
||||
generated,
|
||||
);
|
||||
INFOPLIST_FILE = "hello-ar/SupportFiles/Info.plist";
|
||||
@@ -434,26 +509,6 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"../../../out/ios-release/filament/lib/$(CURRENT_ARCH)",
|
||||
"../../../out/ios-release/filament/lib/universal",
|
||||
);
|
||||
OTHER_LDFLAGS = (
|
||||
"-lfilament",
|
||||
"-lbackend",
|
||||
"-lfilaflat",
|
||||
"-lktxreader",
|
||||
"-lfilabridge",
|
||||
"-lutils",
|
||||
"-lsmol-v",
|
||||
"-lgeometry",
|
||||
"-libl",
|
||||
"-labseil",
|
||||
"-lzstd",
|
||||
"-lfilameshio",
|
||||
"-lmeshoptimizer",
|
||||
"-limage",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "${SAMPLE_CODE_DISAMBIGUATOR}.google.filament.hello-ar";
|
||||
SAMPLE_CODE_DISAMBIGUATOR = "${DEVELOPMENT_TEAM}";
|
||||
SDKROOT = iphoneos;
|
||||
@@ -467,7 +522,7 @@
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
@@ -529,7 +584,7 @@
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
@@ -585,12 +640,17 @@
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
ENABLE_BITCODE = NO;
|
||||
FILAMENT_OUT_NAME = "ios-debug";
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"../../../out/$(FILAMENT_OUT_NAME)/filament/lib\"",
|
||||
);
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"FILAMENT_APP_USE_OPENGL=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"../../../out/ios-debug/filament/include",
|
||||
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
|
||||
generated,
|
||||
);
|
||||
INFOPLIST_FILE = "hello-ar/SupportFiles/Info.plist";
|
||||
@@ -599,26 +659,6 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"../../../out/ios-debug/filament/lib/$(CURRENT_ARCH)",
|
||||
"../../../out/ios-debug/filament/lib/universal",
|
||||
);
|
||||
OTHER_LDFLAGS = (
|
||||
"-lfilament",
|
||||
"-lbackend",
|
||||
"-lfilaflat",
|
||||
"-lktxreader",
|
||||
"-lfilabridge",
|
||||
"-lutils",
|
||||
"-lsmol-v",
|
||||
"-lgeometry",
|
||||
"-libl",
|
||||
"-labseil",
|
||||
"-lzstd",
|
||||
"-lfilameshio",
|
||||
"-lmeshoptimizer",
|
||||
"-limage",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "${SAMPLE_CODE_DISAMBIGUATOR}.google.filament.hello-ar";
|
||||
SAMPLE_CODE_DISAMBIGUATOR = "${DEVELOPMENT_TEAM}";
|
||||
SDKROOT = iphoneos;
|
||||
@@ -632,7 +672,7 @@
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
|
||||
@@ -8,9 +8,9 @@ targets:
|
||||
- FilamentApp
|
||||
dependencies:
|
||||
- sdk: ARKit.framework
|
||||
settings:
|
||||
base:
|
||||
OTHER_LDFLAGS: ["-lfilameshio", "-lmeshoptimizer", "-limage"]
|
||||
- framework: ../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libfilameshio.xcframework
|
||||
- framework: ../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libmeshoptimizer.xcframework
|
||||
- framework: ../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libimage.xcframework
|
||||
preBuildScripts:
|
||||
- path: build-resources.sh
|
||||
name: Build Resources
|
||||
|
||||
@@ -11,8 +11,8 @@ set -e
|
||||
|
||||
HOST_TOOLS_PATH="${HOST_TOOLS_PATH:-../../../out/release/filament/bin}"
|
||||
|
||||
resgen_path=`find ${HOST_TOOLS_PATH} -name resgen -type f | head -n 1`
|
||||
cmgen_path=`find ${HOST_TOOLS_PATH} -name cmgen -type f | head -n 1`
|
||||
resgen_path=`find -L ${HOST_TOOLS_PATH} -name resgen -type f | head -n 1`
|
||||
cmgen_path=`find -L ${HOST_TOOLS_PATH} -name cmgen -type f | head -n 1`
|
||||
|
||||
# Ensure that the required tools are present in the out/ directory.
|
||||
# These can be built by running ./build.sh -p desktop -i release at Filament's root directory.
|
||||
|
||||
@@ -3,44 +3,162 @@
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 54;
|
||||
objectVersion = 77;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
0023225ED0F6344A42FDF021 /* libbasis_transcoder.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 18129A9C5FC10A170625F0DF /* libbasis_transcoder.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
032FA0177E5B258A6EFC10FB /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 3F8FDA2F8F0B257A1364E302 /* Assets.xcassets */; };
|
||||
0C4676263C3C6F429DE8E1E7 /* libabseil.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2ABE8F592F84AD947269C79F /* libabseil.xcframework */; };
|
||||
12FA790CDCF4048A3B3D816B /* libuberzlib.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8AE9C8F3B16EEC02C00FC462 /* libuberzlib.xcframework */; };
|
||||
153DF9C7D86AB76EDBEB3AC4 /* libktxreader.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6E2AD103B6A164CA10779A2C /* libktxreader.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
1A4585E6153963D89D838344 /* libutils.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 51E07CB7D191EE70C8393733 /* libutils.xcframework */; };
|
||||
2101923AA53D391D871C0BCF /* libutils.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 51E07CB7D191EE70C8393733 /* libutils.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
272268CA1B14AE98DFACDD33 /* libstb.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = A40EBFD944F94426FBCEDB82 /* libstb.xcframework */; };
|
||||
3153490EB02DE914E6C7B16B /* libimage.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 481A41C1DE19D71E21CA17C0 /* libimage.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
3370EF2CC0CD0D08F69CC581 /* libmeshoptimizer.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = F9B29DDB1D323E259E5EDBE4 /* libmeshoptimizer.xcframework */; };
|
||||
357279930C4271E22C329E27 /* libbackend.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 4A955859FB96A0B4AA15C36D /* libbackend.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
372DC481D060CF95FDFA9DD7 /* libzstd.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 190D6FD76C902A52E8C71DF7 /* libzstd.xcframework */; };
|
||||
3DA39FBD408D7B6F50822939 /* FilamentViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4544E7FD3EC9BC5C5E4487B7 /* FilamentViewController.mm */; };
|
||||
415CBC815DE6A370EE6DD502 /* libfilament.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4B9CD116AEF8BD291A123F2A /* libfilament.xcframework */; };
|
||||
41E74598143C17C5C2037D67 /* libfilament.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 4B9CD116AEF8BD291A123F2A /* libfilament.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
4474017EFFC53567F2369DB8 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = FEA341C442B210CFD35E4663 /* LaunchScreen.storyboard */; };
|
||||
4F555B8114838AF666F39CD1 /* App.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AF77884F45974610F79F92F /* App.cpp */; };
|
||||
53C4CFCFC54929CEDE416EC5 /* libstb.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = A40EBFD944F94426FBCEDB82 /* libstb.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
6057DA6A016889B23EE6410F /* libgeometry.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6842BC9C9A130CE658B642CB /* libgeometry.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
6535EDC4F6D3BBCA745C453F /* libsmol-v.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5E33DC0C95B9B0260504E357 /* libsmol-v.xcframework */; };
|
||||
6D84A7C1AA03C171F01A044D /* libgltfio_core.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 06B530A8294DD5CBAD41DB51 /* libgltfio_core.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
6DFCBA84E571F0C5B1683640 /* libbackend.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4A955859FB96A0B4AA15C36D /* libbackend.xcframework */; };
|
||||
7BFDB88EAFC7B8CE0B571A35 /* libdracodec.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = CC1A326E7C2E54A8F3227045 /* libdracodec.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
7FD7B7E760C10ACDA64F0890 /* libuberarchive.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0BEC8295652B68CF0854F861 /* libuberarchive.xcframework */; };
|
||||
8309D337274D6920F81FDFED /* libfilaflat.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8947E0E5B74BA8785FE2158D /* libfilaflat.xcframework */; };
|
||||
872251D9846351641FFE1EDB /* libibl.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 83035F42A448BDA20C5EC0DB /* libibl.xcframework */; };
|
||||
872990CD06765549CBE6EB85 /* libbasis_transcoder.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 18129A9C5FC10A170625F0DF /* libbasis_transcoder.xcframework */; };
|
||||
899A92E0F0148A9BAE3E7B1A /* Resources.S in Sources */ = {isa = PBXBuildFile; fileRef = B1B470F3CDEE0D4A60B11C72 /* Resources.S */; };
|
||||
8D82323C866A8429A29903A8 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = F534BD31E8FB84B3925B0402 /* AppDelegate.m */; };
|
||||
916F7A5DE5031D7523FB1FA1 /* libsmol-v.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 5E33DC0C95B9B0260504E357 /* libsmol-v.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
A38DF6C8EA6292F62E9D5F68 /* libimage.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 481A41C1DE19D71E21CA17C0 /* libimage.xcframework */; };
|
||||
A8004A31F0068178EF0557DA /* libgeometry.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6842BC9C9A130CE658B642CB /* libgeometry.xcframework */; };
|
||||
ABF42D2B7081EB39CEC1B43B /* libgltfio_core.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 06B530A8294DD5CBAD41DB51 /* libgltfio_core.xcframework */; };
|
||||
ADE1F0D02BA65C77C6B109AB /* FilamentView.m in Sources */ = {isa = PBXBuildFile; fileRef = 84D7269DBC8441140F7F8905 /* FilamentView.m */; };
|
||||
B69E7A38F3A58F7DB4002219 /* libdracodec.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = CC1A326E7C2E54A8F3227045 /* libdracodec.xcframework */; };
|
||||
B766A23145C9D58BB09CB068 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 47B161015D23D464253ABAF1 /* main.m */; };
|
||||
B9E63A561CEE77D5D0D29A0E /* libuberarchive.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 0BEC8295652B68CF0854F861 /* libuberarchive.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
BFD25191C0BF9804FF3C1B19 /* DamagedHelmet.glb in Resources */ = {isa = PBXBuildFile; fileRef = B299B19218E1CF7B2D13ABB8 /* DamagedHelmet.glb */; };
|
||||
C609C4B4BD4082A399517524 /* libfilabridge.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 9555C4935AFD98E079719C07 /* libfilabridge.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
CE0DC84646DB51D505E521E9 /* libuberzlib.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8AE9C8F3B16EEC02C00FC462 /* libuberzlib.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
CFADC7EF16411309B0CF08D8 /* libzstd.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 190D6FD76C902A52E8C71DF7 /* libzstd.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
D1174ECF9CDDC1EA7DE95840 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 59032D070D1641AA60F6CC2D /* Main.storyboard */; };
|
||||
DB90B94FBBD5F819ED9D1685 /* CameraManipulator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6238AED51F5F46CCFBE6892D /* CameraManipulator.cpp */; };
|
||||
DC96354994E844E3730CBEB7 /* libibl.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 83035F42A448BDA20C5EC0DB /* libibl.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
E9C1BC8EC1312B0CCEF66A2F /* libabseil.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 2ABE8F592F84AD947269C79F /* libabseil.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
F4022ECAAC6BEA543556B428 /* libktxreader.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6E2AD103B6A164CA10779A2C /* libktxreader.xcframework */; };
|
||||
FB7DB6BC4ADAEA3F02731E73 /* libmeshoptimizer.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = F9B29DDB1D323E259E5EDBE4 /* libmeshoptimizer.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
FBC7DAEE0262EB58EC6BADC9 /* libfilaflat.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8947E0E5B74BA8785FE2158D /* libfilaflat.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
FD9CF0E054C901D1D3E7D6B2 /* libfilabridge.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9555C4935AFD98E079719C07 /* libfilabridge.xcframework */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXCopyFilesBuildPhase section */
|
||||
D5C4D57398FACAA29F2C2549 /* Embed Frameworks */ = {
|
||||
isa = PBXCopyFilesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
dstPath = "";
|
||||
dstSubfolderSpec = 10;
|
||||
files = (
|
||||
41E74598143C17C5C2037D67 /* libfilament.xcframework in Embed Frameworks */,
|
||||
357279930C4271E22C329E27 /* libbackend.xcframework in Embed Frameworks */,
|
||||
FBC7DAEE0262EB58EC6BADC9 /* libfilaflat.xcframework in Embed Frameworks */,
|
||||
153DF9C7D86AB76EDBEB3AC4 /* libktxreader.xcframework in Embed Frameworks */,
|
||||
C609C4B4BD4082A399517524 /* libfilabridge.xcframework in Embed Frameworks */,
|
||||
2101923AA53D391D871C0BCF /* libutils.xcframework in Embed Frameworks */,
|
||||
916F7A5DE5031D7523FB1FA1 /* libsmol-v.xcframework in Embed Frameworks */,
|
||||
6057DA6A016889B23EE6410F /* libgeometry.xcframework in Embed Frameworks */,
|
||||
DC96354994E844E3730CBEB7 /* libibl.xcframework in Embed Frameworks */,
|
||||
E9C1BC8EC1312B0CCEF66A2F /* libabseil.xcframework in Embed Frameworks */,
|
||||
CFADC7EF16411309B0CF08D8 /* libzstd.xcframework in Embed Frameworks */,
|
||||
6D84A7C1AA03C171F01A044D /* libgltfio_core.xcframework in Embed Frameworks */,
|
||||
B9E63A561CEE77D5D0D29A0E /* libuberarchive.xcframework in Embed Frameworks */,
|
||||
3153490EB02DE914E6C7B16B /* libimage.xcframework in Embed Frameworks */,
|
||||
7BFDB88EAFC7B8CE0B571A35 /* libdracodec.xcframework in Embed Frameworks */,
|
||||
FB7DB6BC4ADAEA3F02731E73 /* libmeshoptimizer.xcframework in Embed Frameworks */,
|
||||
0023225ED0F6344A42FDF021 /* libbasis_transcoder.xcframework in Embed Frameworks */,
|
||||
53C4CFCFC54929CEDE416EC5 /* libstb.xcframework in Embed Frameworks */,
|
||||
CE0DC84646DB51D505E521E9 /* libuberzlib.xcframework in Embed Frameworks */,
|
||||
);
|
||||
name = "Embed Frameworks";
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXCopyFilesBuildPhase section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
06B530A8294DD5CBAD41DB51 /* libgltfio_core.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libgltfio_core.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libgltfio_core.xcframework"; sourceTree = "<group>"; };
|
||||
07D735319AF2DC69DB8981FE /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
|
||||
0AF0F63216DE40C526ABFABF /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
|
||||
0BEC8295652B68CF0854F861 /* libuberarchive.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libuberarchive.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libuberarchive.xcframework"; sourceTree = "<group>"; };
|
||||
18129A9C5FC10A170625F0DF /* libbasis_transcoder.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libbasis_transcoder.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libbasis_transcoder.xcframework"; sourceTree = "<group>"; };
|
||||
190D6FD76C902A52E8C71DF7 /* libzstd.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libzstd.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libzstd.xcframework"; sourceTree = "<group>"; };
|
||||
2ABE8F592F84AD947269C79F /* libabseil.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libabseil.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libabseil.xcframework"; sourceTree = "<group>"; };
|
||||
31A71C869E24044EA5F802D5 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
|
||||
3259514676E5E799670D0F86 /* CameraManipulator.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CameraManipulator.h; sourceTree = "<group>"; };
|
||||
3AF77884F45974610F79F92F /* App.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = App.cpp; sourceTree = "<group>"; };
|
||||
3F8FDA2F8F0B257A1364E302 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
||||
4544E7FD3EC9BC5C5E4487B7 /* FilamentViewController.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = FilamentViewController.mm; sourceTree = "<group>"; };
|
||||
47B161015D23D464253ABAF1 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
|
||||
481A41C1DE19D71E21CA17C0 /* libimage.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libimage.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libimage.xcframework"; sourceTree = "<group>"; };
|
||||
4A955859FB96A0B4AA15C36D /* libbackend.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libbackend.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libbackend.xcframework"; sourceTree = "<group>"; };
|
||||
4B9CD116AEF8BD291A123F2A /* libfilament.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libfilament.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libfilament.xcframework"; sourceTree = "<group>"; };
|
||||
51E07CB7D191EE70C8393733 /* libutils.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libutils.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libutils.xcframework"; sourceTree = "<group>"; };
|
||||
5E33DC0C95B9B0260504E357 /* libsmol-v.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = "libsmol-v.xcframework"; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libsmol-v.xcframework"; sourceTree = "<group>"; };
|
||||
6238AED51F5F46CCFBE6892D /* CameraManipulator.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CameraManipulator.cpp; sourceTree = "<group>"; };
|
||||
6842BC9C9A130CE658B642CB /* libgeometry.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libgeometry.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libgeometry.xcframework"; sourceTree = "<group>"; };
|
||||
6E2AD103B6A164CA10779A2C /* libktxreader.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libktxreader.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libktxreader.xcframework"; sourceTree = "<group>"; };
|
||||
83035F42A448BDA20C5EC0DB /* libibl.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libibl.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libibl.xcframework"; sourceTree = "<group>"; };
|
||||
84D7269DBC8441140F7F8905 /* FilamentView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FilamentView.m; sourceTree = "<group>"; };
|
||||
8947E0E5B74BA8785FE2158D /* libfilaflat.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libfilaflat.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libfilaflat.xcframework"; sourceTree = "<group>"; };
|
||||
8AE9C8F3B16EEC02C00FC462 /* libuberzlib.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libuberzlib.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libuberzlib.xcframework"; sourceTree = "<group>"; };
|
||||
9555C4935AFD98E079719C07 /* libfilabridge.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libfilabridge.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libfilabridge.xcframework"; sourceTree = "<group>"; };
|
||||
A37B936423E3B1BF1CA137E0 /* hello-gltf.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = "hello-gltf.app"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
A40EBFD944F94426FBCEDB82 /* libstb.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libstb.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libstb.xcframework"; sourceTree = "<group>"; };
|
||||
A52D063A6C24A885D52E2F79 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
|
||||
B1B470F3CDEE0D4A60B11C72 /* Resources.S */ = {isa = PBXFileReference; path = Resources.S; sourceTree = "<group>"; };
|
||||
B299B19218E1CF7B2D13ABB8 /* DamagedHelmet.glb */ = {isa = PBXFileReference; path = DamagedHelmet.glb; sourceTree = "<group>"; };
|
||||
BAEAC7786B3EA7E47855A56B /* FilamentViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FilamentViewController.h; sourceTree = "<group>"; };
|
||||
CC1A326E7C2E54A8F3227045 /* libdracodec.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libdracodec.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libdracodec.xcframework"; sourceTree = "<group>"; };
|
||||
D3A6F9906B0647549CF53196 /* FilamentView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FilamentView.h; sourceTree = "<group>"; };
|
||||
EC3FAC405D5790391F3AE4FB /* App.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = App.h; sourceTree = "<group>"; };
|
||||
F534BD31E8FB84B3925B0402 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
|
||||
F9B29DDB1D323E259E5EDBE4 /* libmeshoptimizer.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libmeshoptimizer.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libmeshoptimizer.xcframework"; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
0F4486CC8242411EE5C50136 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
415CBC815DE6A370EE6DD502 /* libfilament.xcframework in Frameworks */,
|
||||
6DFCBA84E571F0C5B1683640 /* libbackend.xcframework in Frameworks */,
|
||||
8309D337274D6920F81FDFED /* libfilaflat.xcframework in Frameworks */,
|
||||
F4022ECAAC6BEA543556B428 /* libktxreader.xcframework in Frameworks */,
|
||||
FD9CF0E054C901D1D3E7D6B2 /* libfilabridge.xcframework in Frameworks */,
|
||||
1A4585E6153963D89D838344 /* libutils.xcframework in Frameworks */,
|
||||
6535EDC4F6D3BBCA745C453F /* libsmol-v.xcframework in Frameworks */,
|
||||
A8004A31F0068178EF0557DA /* libgeometry.xcframework in Frameworks */,
|
||||
872251D9846351641FFE1EDB /* libibl.xcframework in Frameworks */,
|
||||
0C4676263C3C6F429DE8E1E7 /* libabseil.xcframework in Frameworks */,
|
||||
372DC481D060CF95FDFA9DD7 /* libzstd.xcframework in Frameworks */,
|
||||
ABF42D2B7081EB39CEC1B43B /* libgltfio_core.xcframework in Frameworks */,
|
||||
7FD7B7E760C10ACDA64F0890 /* libuberarchive.xcframework in Frameworks */,
|
||||
A38DF6C8EA6292F62E9D5F68 /* libimage.xcframework in Frameworks */,
|
||||
B69E7A38F3A58F7DB4002219 /* libdracodec.xcframework in Frameworks */,
|
||||
3370EF2CC0CD0D08F69CC581 /* libmeshoptimizer.xcframework in Frameworks */,
|
||||
872990CD06765549CBE6EB85 /* libbasis_transcoder.xcframework in Frameworks */,
|
||||
272268CA1B14AE98DFACDD33 /* libstb.xcframework in Frameworks */,
|
||||
12FA790CDCF4048A3B3D816B /* libuberzlib.xcframework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
213197BBE06FB8316C6A730F /* DamagedHelmet */ = {
|
||||
isa = PBXGroup;
|
||||
@@ -56,6 +174,7 @@
|
||||
children = (
|
||||
213197BBE06FB8316C6A730F /* DamagedHelmet */,
|
||||
A57096EADC8A05A97A275513 /* hello-gltf */,
|
||||
F6A35BB32F71E5F5DC464FCC /* Frameworks */,
|
||||
E24AFBD404D0689AD84371D6 /* Products */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
@@ -78,10 +197,10 @@
|
||||
children = (
|
||||
3F8FDA2F8F0B257A1364E302 /* Assets.xcassets */,
|
||||
A52D063A6C24A885D52E2F79 /* Info.plist */,
|
||||
FEA341C442B210CFD35E4663 /* LaunchScreen.storyboard */,
|
||||
47B161015D23D464253ABAF1 /* main.m */,
|
||||
59032D070D1641AA60F6CC2D /* Main.storyboard */,
|
||||
B1B470F3CDEE0D4A60B11C72 /* Resources.S */,
|
||||
FEA341C442B210CFD35E4663 /* LaunchScreen.storyboard */,
|
||||
59032D070D1641AA60F6CC2D /* Main.storyboard */,
|
||||
);
|
||||
path = SupportFiles;
|
||||
sourceTree = "<group>";
|
||||
@@ -107,6 +226,32 @@
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
F6A35BB32F71E5F5DC464FCC /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
2ABE8F592F84AD947269C79F /* libabseil.xcframework */,
|
||||
4A955859FB96A0B4AA15C36D /* libbackend.xcframework */,
|
||||
18129A9C5FC10A170625F0DF /* libbasis_transcoder.xcframework */,
|
||||
CC1A326E7C2E54A8F3227045 /* libdracodec.xcframework */,
|
||||
9555C4935AFD98E079719C07 /* libfilabridge.xcframework */,
|
||||
8947E0E5B74BA8785FE2158D /* libfilaflat.xcframework */,
|
||||
4B9CD116AEF8BD291A123F2A /* libfilament.xcframework */,
|
||||
6842BC9C9A130CE658B642CB /* libgeometry.xcframework */,
|
||||
06B530A8294DD5CBAD41DB51 /* libgltfio_core.xcframework */,
|
||||
83035F42A448BDA20C5EC0DB /* libibl.xcframework */,
|
||||
481A41C1DE19D71E21CA17C0 /* libimage.xcframework */,
|
||||
6E2AD103B6A164CA10779A2C /* libktxreader.xcframework */,
|
||||
F9B29DDB1D323E259E5EDBE4 /* libmeshoptimizer.xcframework */,
|
||||
5E33DC0C95B9B0260504E357 /* libsmol-v.xcframework */,
|
||||
A40EBFD944F94426FBCEDB82 /* libstb.xcframework */,
|
||||
0BEC8295652B68CF0854F861 /* libuberarchive.xcframework */,
|
||||
8AE9C8F3B16EEC02C00FC462 /* libuberzlib.xcframework */,
|
||||
51E07CB7D191EE70C8393733 /* libutils.xcframework */,
|
||||
190D6FD76C902A52E8C71DF7 /* libzstd.xcframework */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
@@ -117,6 +262,8 @@
|
||||
434C630C7F01B07ABD7545B4 /* Build Resources */,
|
||||
30FFFB72D409D092136A7E09 /* Sources */,
|
||||
143100B2FF97ACD9B03A078A /* Resources */,
|
||||
0F4486CC8242411EE5C50136 /* Frameworks */,
|
||||
D5C4D57398FACAA29F2C2549 /* Embed Frameworks */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
@@ -137,9 +284,10 @@
|
||||
attributes = {
|
||||
BuildIndependentTargetsInParallel = YES;
|
||||
LastUpgradeCheck = 1430;
|
||||
TargetAttributes = {
|
||||
};
|
||||
};
|
||||
buildConfigurationList = C7514DDCFDA3C5F803E239F9 /* Build configuration list for PBXProject "hello-gltf" */;
|
||||
compatibilityVersion = "Xcode 14.0";
|
||||
developmentRegion = en;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
@@ -148,7 +296,8 @@
|
||||
);
|
||||
mainGroup = 74FBC1573C79190CC198A030;
|
||||
minimizedProjectReferenceProxies = 1;
|
||||
preferredProjectObjectVersion = 54;
|
||||
preferredProjectObjectVersion = 77;
|
||||
productRefGroup = E24AFBD404D0689AD84371D6 /* Products */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
@@ -188,7 +337,7 @@
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "#/usr/bin/env/bash\n\nset -e\n\n# Compile resources.\n\n# The hello-gltf app requires two resources:\n# 1. The IBL image\n# 2. The skybox image\n# These will be compiled into the final binary via the resgen tool.\n\nHOST_TOOLS_PATH=\"${HOST_TOOLS_PATH:-../../../out/release/filament/bin}\"\n\nresgen_path=`find ${HOST_TOOLS_PATH} -name resgen -type f | head -n 1`\ncmgen_path=`find ${HOST_TOOLS_PATH} -name cmgen -type f | head -n 1`\n\n# Ensure that the required tools are present in the out/ directory.\n# These can be built by running ./build.sh -p desktop -i release at Filament's root directory.\n\nif [[ ! -e \"${resgen_path}\" ]]; then\n echo \"No resgen binary could be found in ${HOST_TOOLS_PATH}.\"\n echo \"Ensure Filament has been built/installed before building this app.\"\n exit 1\nfi\n\nif [[ ! -e \"${cmgen_path}\" ]]; then\n echo \"No cmgen binary could be found in ${HOST_TOOLS_PATH}.\"\n echo \"Ensure Filament has been built/installed before building this app.\"\n exit 1\nfi\n\n# cmgen consumes an HDR environment map and generates two mipmapped KTX files (IBL and skybox)\n\"${cmgen_path}\" \\\n --quiet \\\n --deploy=\"${PROJECT_DIR}/generated/venetian_crossroads_2k\" \\\n --format=ktx --size=256 --extract-blur=0.1 \\\n \"${PROJECT_DIR}/../../../third_party/environments/venetian_crossroads_2k.hdr\"\n\n# The resgen tool generates an assembly file, resources.apple.S that gets compiled and linked\n# into the final binary. It contains all the resources consumed by the app.\n\"${resgen_path}\" \\\n --deploy=\"${PROJECT_DIR}/generated\" \\\n \"${PROJECT_DIR}/generated/venetian_crossroads_2k/venetian_crossroads_2k_skybox.ktx\" \\\n \"${PROJECT_DIR}/generated/venetian_crossroads_2k/venetian_crossroads_2k_ibl.ktx\"\n\n# App.cpp and Resources.S include files generated by resgen.\n# Touch them to force Xcode to recompile.\ntouch \"${PROJECT_DIR}/hello-gltf/FilamentView/App.cpp\"\ntouch \"${PROJECT_DIR}/hello-gltf/SupportFiles/Resources.S\"\n";
|
||||
shellScript = "#/usr/bin/env/bash\n\nset -e\n\n# Compile resources.\n\n# The hello-gltf app requires two resources:\n# 1. The IBL image\n# 2. The skybox image\n# These will be compiled into the final binary via the resgen tool.\n\nHOST_TOOLS_PATH=\"${HOST_TOOLS_PATH:-../../../out/release/filament/bin}\"\n\nresgen_path=`find -L ${HOST_TOOLS_PATH} -name resgen -type f | head -n 1`\ncmgen_path=`find -L ${HOST_TOOLS_PATH} -name cmgen -type f | head -n 1`\n\n# Ensure that the required tools are present in the out/ directory.\n# These can be built by running ./build.sh -p desktop -i release at Filament's root directory.\n\nif [[ ! -e \"${resgen_path}\" ]]; then\n echo \"No resgen binary could be found in ${HOST_TOOLS_PATH}.\"\n echo \"Ensure Filament has been built/installed before building this app.\"\n exit 1\nfi\n\nif [[ ! -e \"${cmgen_path}\" ]]; then\n echo \"No cmgen binary could be found in ${HOST_TOOLS_PATH}.\"\n echo \"Ensure Filament has been built/installed before building this app.\"\n exit 1\nfi\n\n# cmgen consumes an HDR environment map and generates two mipmapped KTX files (IBL and skybox)\n\"${cmgen_path}\" \\\n --quiet \\\n --deploy=\"${PROJECT_DIR}/generated/venetian_crossroads_2k\" \\\n --format=ktx --size=256 --extract-blur=0.1 \\\n \"${PROJECT_DIR}/../../../third_party/environments/venetian_crossroads_2k.hdr\"\n\n# The resgen tool generates an assembly file, resources.apple.S that gets compiled and linked\n# into the final binary. It contains all the resources consumed by the app.\n\"${resgen_path}\" \\\n --deploy=\"${PROJECT_DIR}/generated\" \\\n \"${PROJECT_DIR}/generated/venetian_crossroads_2k/venetian_crossroads_2k_skybox.ktx\" \\\n \"${PROJECT_DIR}/generated/venetian_crossroads_2k/venetian_crossroads_2k_ibl.ktx\"\n\n# App.cpp and Resources.S include files generated by resgen.\n# Touch them to force Xcode to recompile.\ntouch \"${PROJECT_DIR}/hello-gltf/FilamentView/App.cpp\"\ntouch \"${PROJECT_DIR}/hello-gltf/SupportFiles/Resources.S\"\n";
|
||||
};
|
||||
/* End PBXShellScriptBuildPhase section */
|
||||
|
||||
@@ -235,7 +384,7 @@
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
@@ -298,12 +447,17 @@
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
ENABLE_BITCODE = NO;
|
||||
FILAMENT_OUT_NAME = "ios-release";
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"../../../out/$(FILAMENT_OUT_NAME)/filament/lib\"",
|
||||
);
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"FILAMENT_APP_USE_OPENGL=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"../../../out/ios-release/filament/include",
|
||||
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
|
||||
generated,
|
||||
);
|
||||
INFOPLIST_FILE = "hello-gltf/SupportFiles/Info.plist";
|
||||
@@ -312,32 +466,6 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"../../../out/ios-release/filament/lib/$(CURRENT_ARCH)",
|
||||
"../../../out/ios-release/filament/lib/universal",
|
||||
);
|
||||
OTHER_LDFLAGS = (
|
||||
"-lfilament",
|
||||
"-lbackend",
|
||||
"-lfilaflat",
|
||||
"-lktxreader",
|
||||
"-lfilabridge",
|
||||
"-lutils",
|
||||
"-lsmol-v",
|
||||
"-lgeometry",
|
||||
"-libl",
|
||||
"-labseil",
|
||||
"-lzstd",
|
||||
"-lgltfio_core",
|
||||
"-luberarchive",
|
||||
"-limage",
|
||||
"-ldracodec",
|
||||
"-lmeshoptimizer",
|
||||
"-lbasis_transcoder",
|
||||
"-lstb",
|
||||
"-lzstd",
|
||||
"-luberzlib",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "${SAMPLE_CODE_DISAMBIGUATOR}.google.filament.hello-gltf";
|
||||
SAMPLE_CODE_DISAMBIGUATOR = "${DEVELOPMENT_TEAM}";
|
||||
SDKROOT = iphoneos;
|
||||
@@ -352,12 +480,17 @@
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
ENABLE_BITCODE = NO;
|
||||
FILAMENT_OUT_NAME = "ios-debug";
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"../../../out/$(FILAMENT_OUT_NAME)/filament/lib\"",
|
||||
);
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"FILAMENT_APP_USE_OPENGL=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"../../../out/ios-debug/filament/include",
|
||||
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
|
||||
generated,
|
||||
);
|
||||
INFOPLIST_FILE = "hello-gltf/SupportFiles/Info.plist";
|
||||
@@ -366,32 +499,6 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"../../../out/ios-debug/filament/lib/$(CURRENT_ARCH)",
|
||||
"../../../out/ios-debug/filament/lib/universal",
|
||||
);
|
||||
OTHER_LDFLAGS = (
|
||||
"-lfilament",
|
||||
"-lbackend",
|
||||
"-lfilaflat",
|
||||
"-lktxreader",
|
||||
"-lfilabridge",
|
||||
"-lutils",
|
||||
"-lsmol-v",
|
||||
"-lgeometry",
|
||||
"-libl",
|
||||
"-labseil",
|
||||
"-lzstd",
|
||||
"-lgltfio_core",
|
||||
"-luberarchive",
|
||||
"-limage",
|
||||
"-ldracodec",
|
||||
"-lmeshoptimizer",
|
||||
"-lbasis_transcoder",
|
||||
"-lstb",
|
||||
"-lzstd",
|
||||
"-luberzlib",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "${SAMPLE_CODE_DISAMBIGUATOR}.google.filament.hello-gltf";
|
||||
SAMPLE_CODE_DISAMBIGUATOR = "${DEVELOPMENT_TEAM}";
|
||||
SDKROOT = iphoneos;
|
||||
@@ -405,7 +512,7 @@
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
@@ -467,7 +574,7 @@
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
@@ -522,7 +629,7 @@
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
@@ -578,12 +685,17 @@
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
ENABLE_BITCODE = NO;
|
||||
FILAMENT_OUT_NAME = "ios-release";
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"../../../out/$(FILAMENT_OUT_NAME)/filament/lib\"",
|
||||
);
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"FILAMENT_APP_USE_METAL=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"../../../out/ios-release/filament/include",
|
||||
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
|
||||
generated,
|
||||
);
|
||||
INFOPLIST_FILE = "hello-gltf/SupportFiles/Info.plist";
|
||||
@@ -592,32 +704,6 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"../../../out/ios-release/filament/lib/$(CURRENT_ARCH)",
|
||||
"../../../out/ios-release/filament/lib/universal",
|
||||
);
|
||||
OTHER_LDFLAGS = (
|
||||
"-lfilament",
|
||||
"-lbackend",
|
||||
"-lfilaflat",
|
||||
"-lktxreader",
|
||||
"-lfilabridge",
|
||||
"-lutils",
|
||||
"-lsmol-v",
|
||||
"-lgeometry",
|
||||
"-libl",
|
||||
"-labseil",
|
||||
"-lzstd",
|
||||
"-lgltfio_core",
|
||||
"-luberarchive",
|
||||
"-limage",
|
||||
"-ldracodec",
|
||||
"-lmeshoptimizer",
|
||||
"-lbasis_transcoder",
|
||||
"-lstb",
|
||||
"-lzstd",
|
||||
"-luberzlib",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "${SAMPLE_CODE_DISAMBIGUATOR}.google.filament.hello-gltf";
|
||||
SAMPLE_CODE_DISAMBIGUATOR = "${DEVELOPMENT_TEAM}";
|
||||
SDKROOT = iphoneos;
|
||||
@@ -632,12 +718,17 @@
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
ENABLE_BITCODE = NO;
|
||||
FILAMENT_OUT_NAME = "ios-debug";
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"../../../out/$(FILAMENT_OUT_NAME)/filament/lib\"",
|
||||
);
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"FILAMENT_APP_USE_METAL=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"../../../out/ios-debug/filament/include",
|
||||
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
|
||||
generated,
|
||||
);
|
||||
INFOPLIST_FILE = "hello-gltf/SupportFiles/Info.plist";
|
||||
@@ -646,32 +737,6 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"../../../out/ios-debug/filament/lib/$(CURRENT_ARCH)",
|
||||
"../../../out/ios-debug/filament/lib/universal",
|
||||
);
|
||||
OTHER_LDFLAGS = (
|
||||
"-lfilament",
|
||||
"-lbackend",
|
||||
"-lfilaflat",
|
||||
"-lktxreader",
|
||||
"-lfilabridge",
|
||||
"-lutils",
|
||||
"-lsmol-v",
|
||||
"-lgeometry",
|
||||
"-libl",
|
||||
"-labseil",
|
||||
"-lzstd",
|
||||
"-lgltfio_core",
|
||||
"-luberarchive",
|
||||
"-limage",
|
||||
"-ldracodec",
|
||||
"-lmeshoptimizer",
|
||||
"-lbasis_transcoder",
|
||||
"-lstb",
|
||||
"-lzstd",
|
||||
"-luberzlib",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "${SAMPLE_CODE_DISAMBIGUATOR}.google.filament.hello-gltf";
|
||||
SAMPLE_CODE_DISAMBIGUATOR = "${DEVELOPMENT_TEAM}";
|
||||
SDKROOT = iphoneos;
|
||||
|
||||
@@ -10,10 +10,15 @@ targets:
|
||||
buildPhase: resources
|
||||
templates:
|
||||
- FilamentApp
|
||||
settings:
|
||||
base:
|
||||
OTHER_LDFLAGS: ["-lgltfio_core", "-luberarchive", "-limage", "-ldracodec", "-lmeshoptimizer",
|
||||
"-lbasis_transcoder", "-lstb", "-lzstd", "-luberzlib"]
|
||||
dependencies:
|
||||
- framework: ../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libgltfio_core.xcframework
|
||||
- framework: ../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libuberarchive.xcframework
|
||||
- framework: ../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libimage.xcframework
|
||||
- framework: ../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libdracodec.xcframework
|
||||
- framework: ../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libmeshoptimizer.xcframework
|
||||
- framework: ../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libbasis_transcoder.xcframework
|
||||
- framework: ../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libstb.xcframework
|
||||
- framework: ../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libuberzlib.xcframework
|
||||
preBuildScripts:
|
||||
- path: build-resources.sh
|
||||
name: Build Resources
|
||||
|
||||
@@ -13,10 +13,10 @@ set -e
|
||||
|
||||
HOST_TOOLS_PATH="${HOST_TOOLS_PATH:-../../../out/release/filament/bin}"
|
||||
|
||||
filamesh_path=`find ${HOST_TOOLS_PATH} -name filamesh -type f | head -n 1`
|
||||
matc_path=`find ${HOST_TOOLS_PATH} -name matc -type f | head -n 1`
|
||||
resgen_path=`find ${HOST_TOOLS_PATH} -name resgen -type f | head -n 1`
|
||||
cmgen_path=`find ${HOST_TOOLS_PATH} -name cmgen -type f | head -n 1`
|
||||
filamesh_path=`find -L ${HOST_TOOLS_PATH} -name filamesh -type f | head -n 1`
|
||||
matc_path=`find -L ${HOST_TOOLS_PATH} -name matc -type f | head -n 1`
|
||||
resgen_path=`find -L ${HOST_TOOLS_PATH} -name resgen -type f | head -n 1`
|
||||
cmgen_path=`find -L ${HOST_TOOLS_PATH} -name cmgen -type f | head -n 1`
|
||||
|
||||
# Ensure that the required tools are present in the out/ directory.
|
||||
# These can be built by running ./build.sh -p desktop -i release at Filament's root directory.
|
||||
|
||||
@@ -3,43 +3,136 @@
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 54;
|
||||
objectVersion = 77;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
06156526AD22EF2AD34A6E63 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = A17327655C031D575A522AD1 /* main.m */; };
|
||||
0B2B31A41B31D3D9592809BE /* libzstd.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = A1DC71CABF5B4C9A99EA62D8 /* libzstd.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
1F86261681826B617D56A65A /* libutils.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = A9FD2FF109F8EDD63D2DAB37 /* libutils.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
253D85057959A92D9C3FF638 /* libfilabridge.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE951DB3A83CC5BD589751BC /* libfilabridge.xcframework */; };
|
||||
29861FFCDF2A0BCF3C5C35E2 /* libmeshoptimizer.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6BBA4C3095CCF35600F500B8 /* libmeshoptimizer.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
3386B37A2A36AAE2D1A7EEA3 /* libfilameshio.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3DAD80BE7693C1D70E06675 /* libfilameshio.xcframework */; };
|
||||
3CE3011F1556DF145D8D5641 /* libfilameshio.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = B3DAD80BE7693C1D70E06675 /* libfilameshio.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
3D7229A87468A795596F67E5 /* libutils.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = A9FD2FF109F8EDD63D2DAB37 /* libutils.xcframework */; };
|
||||
3F24E10B5F119498FEC839BD /* libimage.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = FB7CEED84501DA291C801893 /* libimage.xcframework */; };
|
||||
47C387BD3672FED21E46A5CB /* libibl.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 37522F0B15C029FD4127180C /* libibl.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
4E2366C19FC594E529713AFD /* libgeometry.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = C379E4CC0D2A41B53A494804 /* libgeometry.xcframework */; };
|
||||
4E4E761A4D37F2479672E9CB /* libibl.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 37522F0B15C029FD4127180C /* libibl.xcframework */; };
|
||||
4F76C2B304B91E3396FB9BE0 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 43FDC2D4E6776749006FF5E8 /* Main.storyboard */; };
|
||||
5507E62B8924EAD813F76A12 /* libktxreader.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = D2E61F2554690ADAD89442FA /* libktxreader.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
612E11B0F5513B4426B753E3 /* libfilament.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 35C7020A906FD87045CA9188 /* libfilament.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
774BE86075C3087EE3E973F2 /* libzstd.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = A1DC71CABF5B4C9A99EA62D8 /* libzstd.xcframework */; };
|
||||
7C7FE778A73B60FEF2A3E87B /* libsmol-v.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 503D2F0E98B22FD99D9C4B32 /* libsmol-v.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
7FADC9D9565BFFBE23EE2B19 /* libabseil.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3FC6071B5A7CDAE7AC8F9F6A /* libabseil.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
80797782FC992AB6AC57F689 /* libsmol-v.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 503D2F0E98B22FD99D9C4B32 /* libsmol-v.xcframework */; };
|
||||
909A5210FF76323C0162AC03 /* libbackend.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE479671EAC6847969DCCA35 /* libbackend.xcframework */; };
|
||||
9ADC886BBE230370776B1CF3 /* libktxreader.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = D2E61F2554690ADAD89442FA /* libktxreader.xcframework */; };
|
||||
9F723250641BA99F8DAFEDFB /* libimage.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = FB7CEED84501DA291C801893 /* libimage.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
9FB8B786881C0C4C0CFBC55D /* libabseil.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3FC6071B5A7CDAE7AC8F9F6A /* libabseil.xcframework */; };
|
||||
A702E1AB94B19F53E55A946B /* CameraManipulator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D57C53C47A84D05D23B65278 /* CameraManipulator.cpp */; };
|
||||
B127450573BCB07E794547F3 /* FilamentView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 42B9073CE652C53E7F0A4602 /* FilamentView.mm */; };
|
||||
BD8BEB81AFF4F10D2CC14D3D /* libmeshoptimizer.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6BBA4C3095CCF35600F500B8 /* libmeshoptimizer.xcframework */; };
|
||||
CD584D8F302B74996AB93340 /* libfilaflat.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA4939E8DA8B4093E147961B /* libfilaflat.xcframework */; };
|
||||
CEA57549E5C487794BD5351D /* libgeometry.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = C379E4CC0D2A41B53A494804 /* libgeometry.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
D15F2C7D58D8FC89CE6116E1 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 1CAE8879115ECEC53FA0F052 /* Assets.xcassets */; };
|
||||
D66BEC047A004E63BD105F94 /* libfilaflat.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = DA4939E8DA8B4093E147961B /* libfilaflat.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
D760F404EE39FF9CA3DB15EF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 45C71AD43B55E58E07243647 /* LaunchScreen.storyboard */; };
|
||||
DD28C38B1BA7DC985D18010F /* libbackend.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = CE479671EAC6847969DCCA35 /* libbackend.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
E6438E524A7CA8B4ADCD6BB8 /* libfilabridge.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = CE951DB3A83CC5BD589751BC /* libfilabridge.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
F036B4FF12A2B4005547C01F /* FilamentApp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F01D34676A81F3F367B9F6AF /* FilamentApp.cpp */; };
|
||||
F7A5CF35639D0528CCD03908 /* Resources.S in Sources */ = {isa = PBXBuildFile; fileRef = AC02B019CB36611A7BCE5773 /* Resources.S */; };
|
||||
FAF09598FE02F9B10459EB34 /* libfilament.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 35C7020A906FD87045CA9188 /* libfilament.xcframework */; };
|
||||
FCEE5B4DF0074DCD841DFF12 /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = DACB12BFCAAA3222E7D1E9BB /* ViewController.m */; };
|
||||
FEA410A98CE28689BEF2251F /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 7FE9A0CE98FB055F3478E1CC /* AppDelegate.m */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXCopyFilesBuildPhase section */
|
||||
8E3DFDFC69EBD646F294582B /* Embed Frameworks */ = {
|
||||
isa = PBXCopyFilesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
dstPath = "";
|
||||
dstSubfolderSpec = 10;
|
||||
files = (
|
||||
612E11B0F5513B4426B753E3 /* libfilament.xcframework in Embed Frameworks */,
|
||||
DD28C38B1BA7DC985D18010F /* libbackend.xcframework in Embed Frameworks */,
|
||||
D66BEC047A004E63BD105F94 /* libfilaflat.xcframework in Embed Frameworks */,
|
||||
5507E62B8924EAD813F76A12 /* libktxreader.xcframework in Embed Frameworks */,
|
||||
E6438E524A7CA8B4ADCD6BB8 /* libfilabridge.xcframework in Embed Frameworks */,
|
||||
1F86261681826B617D56A65A /* libutils.xcframework in Embed Frameworks */,
|
||||
7C7FE778A73B60FEF2A3E87B /* libsmol-v.xcframework in Embed Frameworks */,
|
||||
CEA57549E5C487794BD5351D /* libgeometry.xcframework in Embed Frameworks */,
|
||||
47C387BD3672FED21E46A5CB /* libibl.xcframework in Embed Frameworks */,
|
||||
7FADC9D9565BFFBE23EE2B19 /* libabseil.xcframework in Embed Frameworks */,
|
||||
0B2B31A41B31D3D9592809BE /* libzstd.xcframework in Embed Frameworks */,
|
||||
3CE3011F1556DF145D8D5641 /* libfilameshio.xcframework in Embed Frameworks */,
|
||||
29861FFCDF2A0BCF3C5C35E2 /* libmeshoptimizer.xcframework in Embed Frameworks */,
|
||||
9F723250641BA99F8DAFEDFB /* libimage.xcframework in Embed Frameworks */,
|
||||
);
|
||||
name = "Embed Frameworks";
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXCopyFilesBuildPhase section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
17ADA23252FA61486B05D5BA /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = "<group>"; };
|
||||
1CAE8879115ECEC53FA0F052 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
||||
35C7020A906FD87045CA9188 /* libfilament.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libfilament.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libfilament.xcframework"; sourceTree = "<group>"; };
|
||||
37522F0B15C029FD4127180C /* libibl.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libibl.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libibl.xcframework"; sourceTree = "<group>"; };
|
||||
37CB2FCA6711AE57BD4B39F7 /* hello-pbr.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = "hello-pbr.app"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
3FC6071B5A7CDAE7AC8F9F6A /* libabseil.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libabseil.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libabseil.xcframework"; sourceTree = "<group>"; };
|
||||
42B9073CE652C53E7F0A4602 /* FilamentView.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = FilamentView.mm; sourceTree = "<group>"; };
|
||||
4618C7511DE661F89B114734 /* FilamentView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FilamentView.h; sourceTree = "<group>"; };
|
||||
503D2F0E98B22FD99D9C4B32 /* libsmol-v.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = "libsmol-v.xcframework"; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libsmol-v.xcframework"; sourceTree = "<group>"; };
|
||||
6BBA4C3095CCF35600F500B8 /* libmeshoptimizer.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libmeshoptimizer.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libmeshoptimizer.xcframework"; sourceTree = "<group>"; };
|
||||
7D60AE7BAB964978FAA0C84C /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
|
||||
7FE9A0CE98FB055F3478E1CC /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
|
||||
A17327655C031D575A522AD1 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
|
||||
A1DC71CABF5B4C9A99EA62D8 /* libzstd.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libzstd.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libzstd.xcframework"; sourceTree = "<group>"; };
|
||||
A3680F594905261290AEDB79 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
|
||||
A9FD2FF109F8EDD63D2DAB37 /* libutils.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libutils.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libutils.xcframework"; sourceTree = "<group>"; };
|
||||
AC02B019CB36611A7BCE5773 /* Resources.S */ = {isa = PBXFileReference; path = Resources.S; sourceTree = "<group>"; };
|
||||
ADF252527D202BB9D53E29C8 /* clear_coat.mat */ = {isa = PBXFileReference; path = clear_coat.mat; sourceTree = "<group>"; };
|
||||
B35CDFC5B6E5142B5E57BE33 /* FilamentApp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FilamentApp.h; sourceTree = "<group>"; };
|
||||
B3DAD80BE7693C1D70E06675 /* libfilameshio.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libfilameshio.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libfilameshio.xcframework"; sourceTree = "<group>"; };
|
||||
C379E4CC0D2A41B53A494804 /* libgeometry.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libgeometry.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libgeometry.xcframework"; sourceTree = "<group>"; };
|
||||
CE479671EAC6847969DCCA35 /* libbackend.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libbackend.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libbackend.xcframework"; sourceTree = "<group>"; };
|
||||
CE951DB3A83CC5BD589751BC /* libfilabridge.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libfilabridge.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libfilabridge.xcframework"; sourceTree = "<group>"; };
|
||||
D2E61F2554690ADAD89442FA /* libktxreader.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libktxreader.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libktxreader.xcframework"; sourceTree = "<group>"; };
|
||||
D57C53C47A84D05D23B65278 /* CameraManipulator.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CameraManipulator.cpp; sourceTree = "<group>"; };
|
||||
DA4939E8DA8B4093E147961B /* libfilaflat.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libfilaflat.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libfilaflat.xcframework"; sourceTree = "<group>"; };
|
||||
DACB12BFCAAA3222E7D1E9BB /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = "<group>"; };
|
||||
E176563EAAB0B36EFA7D67FD /* CameraManipulator.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CameraManipulator.h; sourceTree = "<group>"; };
|
||||
EC2A85E8863E17F68089B198 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
|
||||
ED2321CED4601521B7D1D849 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
|
||||
F01D34676A81F3F367B9F6AF /* FilamentApp.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = FilamentApp.cpp; sourceTree = "<group>"; };
|
||||
FB7CEED84501DA291C801893 /* libimage.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libimage.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libimage.xcframework"; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
464CABCAA933FAA2A5568882 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
FAF09598FE02F9B10459EB34 /* libfilament.xcframework in Frameworks */,
|
||||
909A5210FF76323C0162AC03 /* libbackend.xcframework in Frameworks */,
|
||||
CD584D8F302B74996AB93340 /* libfilaflat.xcframework in Frameworks */,
|
||||
9ADC886BBE230370776B1CF3 /* libktxreader.xcframework in Frameworks */,
|
||||
253D85057959A92D9C3FF638 /* libfilabridge.xcframework in Frameworks */,
|
||||
3D7229A87468A795596F67E5 /* libutils.xcframework in Frameworks */,
|
||||
80797782FC992AB6AC57F689 /* libsmol-v.xcframework in Frameworks */,
|
||||
4E2366C19FC594E529713AFD /* libgeometry.xcframework in Frameworks */,
|
||||
4E4E761A4D37F2479672E9CB /* libibl.xcframework in Frameworks */,
|
||||
9FB8B786881C0C4C0CFBC55D /* libabseil.xcframework in Frameworks */,
|
||||
774BE86075C3087EE3E973F2 /* libzstd.xcframework in Frameworks */,
|
||||
3386B37A2A36AAE2D1A7EEA3 /* libfilameshio.xcframework in Frameworks */,
|
||||
BD8BEB81AFF4F10D2CC14D3D /* libmeshoptimizer.xcframework in Frameworks */,
|
||||
3F24E10B5F119498FEC839BD /* libimage.xcframework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
4A44033C70281A0FC58A64FE /* hello-pbr */ = {
|
||||
isa = PBXGroup;
|
||||
@@ -54,21 +147,43 @@
|
||||
4618C7511DE661F89B114734 /* FilamentView.h */,
|
||||
42B9073CE652C53E7F0A4602 /* FilamentView.mm */,
|
||||
EC2A85E8863E17F68089B198 /* Info.plist */,
|
||||
45C71AD43B55E58E07243647 /* LaunchScreen.storyboard */,
|
||||
A17327655C031D575A522AD1 /* main.m */,
|
||||
43FDC2D4E6776749006FF5E8 /* Main.storyboard */,
|
||||
AC02B019CB36611A7BCE5773 /* Resources.S */,
|
||||
17ADA23252FA61486B05D5BA /* ViewController.h */,
|
||||
DACB12BFCAAA3222E7D1E9BB /* ViewController.m */,
|
||||
45C71AD43B55E58E07243647 /* LaunchScreen.storyboard */,
|
||||
43FDC2D4E6776749006FF5E8 /* Main.storyboard */,
|
||||
);
|
||||
path = "hello-pbr";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
6CD8748D8B4DAD182A726DC0 /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
3FC6071B5A7CDAE7AC8F9F6A /* libabseil.xcframework */,
|
||||
CE479671EAC6847969DCCA35 /* libbackend.xcframework */,
|
||||
CE951DB3A83CC5BD589751BC /* libfilabridge.xcframework */,
|
||||
DA4939E8DA8B4093E147961B /* libfilaflat.xcframework */,
|
||||
35C7020A906FD87045CA9188 /* libfilament.xcframework */,
|
||||
B3DAD80BE7693C1D70E06675 /* libfilameshio.xcframework */,
|
||||
C379E4CC0D2A41B53A494804 /* libgeometry.xcframework */,
|
||||
37522F0B15C029FD4127180C /* libibl.xcframework */,
|
||||
FB7CEED84501DA291C801893 /* libimage.xcframework */,
|
||||
D2E61F2554690ADAD89442FA /* libktxreader.xcframework */,
|
||||
6BBA4C3095CCF35600F500B8 /* libmeshoptimizer.xcframework */,
|
||||
503D2F0E98B22FD99D9C4B32 /* libsmol-v.xcframework */,
|
||||
A9FD2FF109F8EDD63D2DAB37 /* libutils.xcframework */,
|
||||
A1DC71CABF5B4C9A99EA62D8 /* libzstd.xcframework */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
8B171658B4A1227B9CA44459 = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
4A44033C70281A0FC58A64FE /* hello-pbr */,
|
||||
D92946BE29B34E951A7E0714 /* Materials */,
|
||||
6CD8748D8B4DAD182A726DC0 /* Frameworks */,
|
||||
A90A4582D4144797492F5C08 /* Products */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
@@ -99,6 +214,8 @@
|
||||
18BC4E25ED5FC66EC7B77F97 /* Build Resources */,
|
||||
4EAE126B59B0A66AD866406A /* Sources */,
|
||||
4C132EE193B59194A5C7572B /* Resources */,
|
||||
464CABCAA933FAA2A5568882 /* Frameworks */,
|
||||
8E3DFDFC69EBD646F294582B /* Embed Frameworks */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
@@ -119,9 +236,10 @@
|
||||
attributes = {
|
||||
BuildIndependentTargetsInParallel = YES;
|
||||
LastUpgradeCheck = 1430;
|
||||
TargetAttributes = {
|
||||
};
|
||||
};
|
||||
buildConfigurationList = 0479354FB8D9A411347D91A6 /* Build configuration list for PBXProject "hello-pbr" */;
|
||||
compatibilityVersion = "Xcode 14.0";
|
||||
developmentRegion = en;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
@@ -130,7 +248,8 @@
|
||||
);
|
||||
mainGroup = 8B171658B4A1227B9CA44459;
|
||||
minimizedProjectReferenceProxies = 1;
|
||||
preferredProjectObjectVersion = 54;
|
||||
preferredProjectObjectVersion = 77;
|
||||
productRefGroup = A90A4582D4144797492F5C08 /* Products */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
@@ -169,7 +288,7 @@
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "#/usr/bin/env/bash\n\nset -e\n\n# Compile resources.\n\n# The hello-pbr app requires four resources:\n# 1. The material sphere mesh\n# 2. The Filament material definition\n# 3. The IBL image\n# 4. The skybox image\n# These will be compiled into the final binary via the resgen tool.\n\nHOST_TOOLS_PATH=\"${HOST_TOOLS_PATH:-../../../out/release/filament/bin}\"\n\nfilamesh_path=`find ${HOST_TOOLS_PATH} -name filamesh -type f | head -n 1`\nmatc_path=`find ${HOST_TOOLS_PATH} -name matc -type f | head -n 1`\nresgen_path=`find ${HOST_TOOLS_PATH} -name resgen -type f | head -n 1`\ncmgen_path=`find ${HOST_TOOLS_PATH} -name cmgen -type f | head -n 1`\n\n# Ensure that the required tools are present in the out/ directory.\n# These can be built by running ./build.sh -p desktop -i release at Filament's root directory.\n\nif [[ ! -e \"${filamesh_path}\" ]]; then\n echo \"No filamesh binary could be found in ${HOST_TOOLS_PATH}.\"\n echo \"Ensure Filament has been built/installed before building this app.\"\n exit 1\nfi\n\nif [[ ! -e \"${matc_path}\" ]]; then\n echo \"No matc binary could be found in ${HOST_TOOLS_PATH}.\"\n echo \"Ensure Filament has been built/installed before building this app.\"\n exit 1\nfi\n\nif [[ ! -e \"${resgen_path}\" ]]; then\n echo \"No resgen binary could be found in ${HOST_TOOLS_PATH}.\"\n echo \"Ensure Filament has been built/installed before building this app.\"\n exit 1\nfi\n\nif [[ ! -e \"${cmgen_path}\" ]]; then\n echo \"No cmgen binary could be found in ${HOST_TOOLS_PATH}.\"\n echo \"Ensure Filament has been built/installed before building this app.\"\n exit 1\nfi\n\n# The filamesh tool converts the .obj file into a Filament-specific filamesh file that has been\n# optimized for loading into Filament.\nmkdir -p \"${PROJECT_DIR}/generated/\"\n\"${filamesh_path}\" \\\n \"${PROJECT_DIR}/../../../assets/models/material_sphere/material_sphere.obj\" \\\n \"${PROJECT_DIR}/generated/material_sphere.filamesh\"\n\n# The matc tool compiles the clear_coat.mat material into a Filament material BLOB.\n\"${matc_path}\" \\\n --api all \\\n --platform mobile \\\n -o \"${PROJECT_DIR}/generated/clear_coat.filamat\" \\\n \"${PROJECT_DIR}/Materials/clear_coat.mat\"\n\n# cmgen consumes an HDR environment map and generates two mipmapped KTX files (IBL and skybox)\n\"${cmgen_path}\" \\\n --quiet \\\n --deploy=\"${PROJECT_DIR}/generated/venetian_crossroads_2k\" \\\n --format=ktx --size=256 --extract-blur=0.1 \\\n \"${PROJECT_DIR}/../../../third_party/environments/venetian_crossroads_2k.hdr\"\n\n# The resgen tool generates an assembly file, resources.apple.S that gets compiled and linked\n# into the final binary. It contains all the resources consumed by the app.\n\"${resgen_path}\" \\\n --deploy=\"${PROJECT_DIR}/generated\" \\\n \"${PROJECT_DIR}/generated/material_sphere.filamesh\" \\\n \"${PROJECT_DIR}/generated/clear_coat.filamat\" \\\n \"${PROJECT_DIR}/generated/venetian_crossroads_2k/venetian_crossroads_2k_ibl.ktx\" \\\n \"${PROJECT_DIR}/generated/venetian_crossroads_2k/venetian_crossroads_2k_skybox.ktx\"\n\n# FilamentApp.cpp and Resources.S include files generated by resgen.\n# Touch them to force Xcode to recompile.\ntouch \"${PROJECT_DIR}/hello-pbr/FilamentApp.cpp\"\ntouch \"${PROJECT_DIR}/hello-pbr/Resources.S\"\n";
|
||||
shellScript = "#/usr/bin/env/bash\n\nset -e\n\n# Compile resources.\n\n# The hello-pbr app requires four resources:\n# 1. The material sphere mesh\n# 2. The Filament material definition\n# 3. The IBL image\n# 4. The skybox image\n# These will be compiled into the final binary via the resgen tool.\n\nHOST_TOOLS_PATH=\"${HOST_TOOLS_PATH:-../../../out/release/filament/bin}\"\n\nfilamesh_path=`find -L ${HOST_TOOLS_PATH} -name filamesh -type f | head -n 1`\nmatc_path=`find -L ${HOST_TOOLS_PATH} -name matc -type f | head -n 1`\nresgen_path=`find -L ${HOST_TOOLS_PATH} -name resgen -type f | head -n 1`\ncmgen_path=`find -L ${HOST_TOOLS_PATH} -name cmgen -type f | head -n 1`\n\n# Ensure that the required tools are present in the out/ directory.\n# These can be built by running ./build.sh -p desktop -i release at Filament's root directory.\n\nif [[ ! -e \"${filamesh_path}\" ]]; then\n echo \"No filamesh binary could be found in ${HOST_TOOLS_PATH}.\"\n echo \"Ensure Filament has been built/installed before building this app.\"\n exit 1\nfi\n\nif [[ ! -e \"${matc_path}\" ]]; then\n echo \"No matc binary could be found in ${HOST_TOOLS_PATH}.\"\n echo \"Ensure Filament has been built/installed before building this app.\"\n exit 1\nfi\n\nif [[ ! -e \"${resgen_path}\" ]]; then\n echo \"No resgen binary could be found in ${HOST_TOOLS_PATH}.\"\n echo \"Ensure Filament has been built/installed before building this app.\"\n exit 1\nfi\n\nif [[ ! -e \"${cmgen_path}\" ]]; then\n echo \"No cmgen binary could be found in ${HOST_TOOLS_PATH}.\"\n echo \"Ensure Filament has been built/installed before building this app.\"\n exit 1\nfi\n\n# The filamesh tool converts the .obj file into a Filament-specific filamesh file that has been\n# optimized for loading into Filament.\nmkdir -p \"${PROJECT_DIR}/generated/\"\n\"${filamesh_path}\" \\\n \"${PROJECT_DIR}/../../../assets/models/material_sphere/material_sphere.obj\" \\\n \"${PROJECT_DIR}/generated/material_sphere.filamesh\"\n\n# The matc tool compiles the clear_coat.mat material into a Filament material BLOB.\n\"${matc_path}\" \\\n --api all \\\n --platform mobile \\\n -o \"${PROJECT_DIR}/generated/clear_coat.filamat\" \\\n \"${PROJECT_DIR}/Materials/clear_coat.mat\"\n\n# cmgen consumes an HDR environment map and generates two mipmapped KTX files (IBL and skybox)\n\"${cmgen_path}\" \\\n --quiet \\\n --deploy=\"${PROJECT_DIR}/generated/venetian_crossroads_2k\" \\\n --format=ktx --size=256 --extract-blur=0.1 \\\n \"${PROJECT_DIR}/../../../third_party/environments/venetian_crossroads_2k.hdr\"\n\n# The resgen tool generates an assembly file, resources.apple.S that gets compiled and linked\n# into the final binary. It contains all the resources consumed by the app.\n\"${resgen_path}\" \\\n --deploy=\"${PROJECT_DIR}/generated\" \\\n \"${PROJECT_DIR}/generated/material_sphere.filamesh\" \\\n \"${PROJECT_DIR}/generated/clear_coat.filamat\" \\\n \"${PROJECT_DIR}/generated/venetian_crossroads_2k/venetian_crossroads_2k_ibl.ktx\" \\\n \"${PROJECT_DIR}/generated/venetian_crossroads_2k/venetian_crossroads_2k_skybox.ktx\"\n\n# FilamentApp.cpp and Resources.S include files generated by resgen.\n# Touch them to force Xcode to recompile.\ntouch \"${PROJECT_DIR}/hello-pbr/FilamentApp.cpp\"\ntouch \"${PROJECT_DIR}/hello-pbr/Resources.S\"\n";
|
||||
};
|
||||
/* End PBXShellScriptBuildPhase section */
|
||||
|
||||
@@ -216,7 +335,7 @@
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
@@ -279,12 +398,17 @@
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
ENABLE_BITCODE = NO;
|
||||
FILAMENT_OUT_NAME = "ios-debug";
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"../../../out/$(FILAMENT_OUT_NAME)/filament/lib\"",
|
||||
);
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"FILAMENT_APP_USE_OPENGL=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"../../../out/ios-debug/filament/include",
|
||||
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
|
||||
generated,
|
||||
);
|
||||
INFOPLIST_FILE = "hello-pbr/Info.plist";
|
||||
@@ -293,26 +417,6 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"../../../out/ios-debug/filament/lib/$(CURRENT_ARCH)",
|
||||
"../../../out/ios-debug/filament/lib/universal",
|
||||
);
|
||||
OTHER_LDFLAGS = (
|
||||
"-lfilament",
|
||||
"-lbackend",
|
||||
"-lfilaflat",
|
||||
"-lktxreader",
|
||||
"-lfilabridge",
|
||||
"-lutils",
|
||||
"-lsmol-v",
|
||||
"-lgeometry",
|
||||
"-libl",
|
||||
"-labseil",
|
||||
"-lzstd",
|
||||
"-lfilameshio",
|
||||
"-lmeshoptimizer",
|
||||
"-limage",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "${SAMPLE_CODE_DISAMBIGUATOR}.google.filament.hello-pbr";
|
||||
SAMPLE_CODE_DISAMBIGUATOR = "${DEVELOPMENT_TEAM}";
|
||||
SDKROOT = iphoneos;
|
||||
@@ -327,12 +431,17 @@
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
ENABLE_BITCODE = NO;
|
||||
FILAMENT_OUT_NAME = "ios-release";
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"../../../out/$(FILAMENT_OUT_NAME)/filament/lib\"",
|
||||
);
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"FILAMENT_APP_USE_OPENGL=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"../../../out/ios-release/filament/include",
|
||||
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
|
||||
generated,
|
||||
);
|
||||
INFOPLIST_FILE = "hello-pbr/Info.plist";
|
||||
@@ -341,26 +450,6 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"../../../out/ios-release/filament/lib/$(CURRENT_ARCH)",
|
||||
"../../../out/ios-release/filament/lib/universal",
|
||||
);
|
||||
OTHER_LDFLAGS = (
|
||||
"-lfilament",
|
||||
"-lbackend",
|
||||
"-lfilaflat",
|
||||
"-lktxreader",
|
||||
"-lfilabridge",
|
||||
"-lutils",
|
||||
"-lsmol-v",
|
||||
"-lgeometry",
|
||||
"-libl",
|
||||
"-labseil",
|
||||
"-lzstd",
|
||||
"-lfilameshio",
|
||||
"-lmeshoptimizer",
|
||||
"-limage",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "${SAMPLE_CODE_DISAMBIGUATOR}.google.filament.hello-pbr";
|
||||
SAMPLE_CODE_DISAMBIGUATOR = "${DEVELOPMENT_TEAM}";
|
||||
SDKROOT = iphoneos;
|
||||
@@ -375,12 +464,17 @@
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
ENABLE_BITCODE = NO;
|
||||
FILAMENT_OUT_NAME = "ios-debug";
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"../../../out/$(FILAMENT_OUT_NAME)/filament/lib\"",
|
||||
);
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"FILAMENT_APP_USE_METAL=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"../../../out/ios-debug/filament/include",
|
||||
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
|
||||
generated,
|
||||
);
|
||||
INFOPLIST_FILE = "hello-pbr/Info.plist";
|
||||
@@ -389,26 +483,6 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"../../../out/ios-debug/filament/lib/$(CURRENT_ARCH)",
|
||||
"../../../out/ios-debug/filament/lib/universal",
|
||||
);
|
||||
OTHER_LDFLAGS = (
|
||||
"-lfilament",
|
||||
"-lbackend",
|
||||
"-lfilaflat",
|
||||
"-lktxreader",
|
||||
"-lfilabridge",
|
||||
"-lutils",
|
||||
"-lsmol-v",
|
||||
"-lgeometry",
|
||||
"-libl",
|
||||
"-labseil",
|
||||
"-lzstd",
|
||||
"-lfilameshio",
|
||||
"-lmeshoptimizer",
|
||||
"-limage",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "${SAMPLE_CODE_DISAMBIGUATOR}.google.filament.hello-pbr";
|
||||
SAMPLE_CODE_DISAMBIGUATOR = "${DEVELOPMENT_TEAM}";
|
||||
SDKROOT = iphoneos;
|
||||
@@ -422,7 +496,7 @@
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
@@ -477,7 +551,7 @@
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
@@ -533,12 +607,17 @@
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
ENABLE_BITCODE = NO;
|
||||
FILAMENT_OUT_NAME = "ios-release";
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"../../../out/$(FILAMENT_OUT_NAME)/filament/lib\"",
|
||||
);
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"FILAMENT_APP_USE_METAL=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"../../../out/ios-release/filament/include",
|
||||
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
|
||||
generated,
|
||||
);
|
||||
INFOPLIST_FILE = "hello-pbr/Info.plist";
|
||||
@@ -547,26 +626,6 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"../../../out/ios-release/filament/lib/$(CURRENT_ARCH)",
|
||||
"../../../out/ios-release/filament/lib/universal",
|
||||
);
|
||||
OTHER_LDFLAGS = (
|
||||
"-lfilament",
|
||||
"-lbackend",
|
||||
"-lfilaflat",
|
||||
"-lktxreader",
|
||||
"-lfilabridge",
|
||||
"-lutils",
|
||||
"-lsmol-v",
|
||||
"-lgeometry",
|
||||
"-libl",
|
||||
"-labseil",
|
||||
"-lzstd",
|
||||
"-lfilameshio",
|
||||
"-lmeshoptimizer",
|
||||
"-limage",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "${SAMPLE_CODE_DISAMBIGUATOR}.google.filament.hello-pbr";
|
||||
SAMPLE_CODE_DISAMBIGUATOR = "${DEVELOPMENT_TEAM}";
|
||||
SDKROOT = iphoneos;
|
||||
@@ -580,7 +639,7 @@
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
|
||||
@@ -6,9 +6,10 @@ targets:
|
||||
hello-pbr:
|
||||
templates:
|
||||
- FilamentApp
|
||||
settings:
|
||||
base:
|
||||
OTHER_LDFLAGS: ["-lfilameshio", "-lmeshoptimizer", "-limage"]
|
||||
dependencies:
|
||||
- framework: ../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libfilameshio.xcframework
|
||||
- framework: ../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libmeshoptimizer.xcframework
|
||||
- framework: ../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libimage.xcframework
|
||||
preBuildScripts:
|
||||
- path: build-resources.sh
|
||||
name: Build Resources
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# Compile bakedColor material.
|
||||
|
||||
HOST_TOOLS_PATH="${HOST_TOOLS_PATH:-../../../out/release/filament/bin}"
|
||||
matc_path=`find ${HOST_TOOLS_PATH} -name matc -type f | head -n 1`
|
||||
matc_path=`find -L ${HOST_TOOLS_PATH} -name matc -type f | head -n 1`
|
||||
|
||||
if [[ ! -e "${matc_path}" ]]; then
|
||||
echo "No matc binary could be found in ${HOST_TOOLS_PATH}."
|
||||
|
||||
@@ -3,35 +3,113 @@
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 54;
|
||||
objectVersion = 77;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
0A3A34EAB98A45D1D4355A52 /* libbackend.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3BA0FF5017E4FECD94CF3F2 /* libbackend.xcframework */; };
|
||||
0F0218402B9C73D7B3775497 /* libabseil.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = D0F16339A5D96AB6AAF03A4C /* libabseil.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
12A40CB70167F2609E428EC6 /* libbackend.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = F3BA0FF5017E4FECD94CF3F2 /* libbackend.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
1326DEBB610801CD041AE322 /* libibl.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = ED0BAF80B49E29533E492727 /* libibl.xcframework */; };
|
||||
291EA8BF9E335683AD324451 /* libfilabridge.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA668D9E9DC67AD1FA16422A /* libfilabridge.xcframework */; };
|
||||
2DE5F1C322D1B8288CF6F1A9 /* libgeometry.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 44224172FC58D500DEFE7A7D /* libgeometry.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
34826A3819309F25EAF82B78 /* libibl.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = ED0BAF80B49E29533E492727 /* libibl.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
371FE9F805A6B436B22EF70D /* libfilaflat.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = C4952E6805DB5E7B871DF61C /* libfilaflat.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
4715F63AF782F1A15A37EFA8 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 45FE9476D47ECFFEA65D7146 /* AppDelegate.m */; };
|
||||
4B0C2B6E7D4BF89D8EDEB84F /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2620C967534D81CFFAB5D3FF /* ViewController.m */; };
|
||||
5B76FEB9522BC17E14EF3270 /* libutils.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3604FD7E74C46AC4FAB12BFA /* libutils.xcframework */; };
|
||||
67B75B37DC3FFFE6BDD91455 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = DDE4A219AEB5B4507F51B873 /* Main.storyboard */; };
|
||||
68822E4B9059C8A1E67EF062 /* libfilament.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = E36164E9425CAABBE17EF153 /* libfilament.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
6BBD88355CE6932E706CE45C /* libzstd.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8D062C70EFE8916B7656BB4E /* libzstd.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
7A4FA872EA928DB67BBF9351 /* libfilaflat.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = C4952E6805DB5E7B871DF61C /* libfilaflat.xcframework */; };
|
||||
8897619E0912B69F232FCC88 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 524293A0A8CDE9047347EF48 /* Assets.xcassets */; };
|
||||
915E0D1FE043E873C17EB0AB /* libgeometry.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 44224172FC58D500DEFE7A7D /* libgeometry.xcframework */; };
|
||||
966626FAF79F36B16F9AE201 /* libabseil.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0F16339A5D96AB6AAF03A4C /* libabseil.xcframework */; };
|
||||
96FBF778C4E3563A7C8D3A47 /* libsmol-v.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 727785EA0395D939E6804AF4 /* libsmol-v.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
978AB6421E245452AD8D9AE0 /* libktxreader.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = AC6CC7E260B2F20D0EA171E2 /* libktxreader.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
A05C6F2172B5C29D9A056E39 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 46A2FAD3D476FDADF45F70F8 /* LaunchScreen.storyboard */; };
|
||||
AC1320F672694ABEF53EFAC8 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = E56C70616FF30C50DFA8238B /* main.m */; };
|
||||
AD9F281E6F4F05A4B98FD437 /* libutils.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3604FD7E74C46AC4FAB12BFA /* libutils.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
B156789E3EC8798928C58BD2 /* libsmol-v.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 727785EA0395D939E6804AF4 /* libsmol-v.xcframework */; };
|
||||
BED52BA49D882353BBCEA4F4 /* FilamentView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0CDCD26337640C57D07E41ED /* FilamentView.mm */; };
|
||||
CF4322AB55566F31A284739B /* libktxreader.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = AC6CC7E260B2F20D0EA171E2 /* libktxreader.xcframework */; };
|
||||
D5837AE122E300682E245E00 /* libfilament.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = E36164E9425CAABBE17EF153 /* libfilament.xcframework */; };
|
||||
ECA5B4596C78D6B18043153D /* libfilabridge.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = DA668D9E9DC67AD1FA16422A /* libfilabridge.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
ECE38C7FF5D52E4222C22216 /* libzstd.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8D062C70EFE8916B7656BB4E /* libzstd.xcframework */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXCopyFilesBuildPhase section */
|
||||
C514B8F3AF16FEA064256123 /* Embed Frameworks */ = {
|
||||
isa = PBXCopyFilesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
dstPath = "";
|
||||
dstSubfolderSpec = 10;
|
||||
files = (
|
||||
68822E4B9059C8A1E67EF062 /* libfilament.xcframework in Embed Frameworks */,
|
||||
12A40CB70167F2609E428EC6 /* libbackend.xcframework in Embed Frameworks */,
|
||||
371FE9F805A6B436B22EF70D /* libfilaflat.xcframework in Embed Frameworks */,
|
||||
978AB6421E245452AD8D9AE0 /* libktxreader.xcframework in Embed Frameworks */,
|
||||
ECA5B4596C78D6B18043153D /* libfilabridge.xcframework in Embed Frameworks */,
|
||||
AD9F281E6F4F05A4B98FD437 /* libutils.xcframework in Embed Frameworks */,
|
||||
96FBF778C4E3563A7C8D3A47 /* libsmol-v.xcframework in Embed Frameworks */,
|
||||
2DE5F1C322D1B8288CF6F1A9 /* libgeometry.xcframework in Embed Frameworks */,
|
||||
34826A3819309F25EAF82B78 /* libibl.xcframework in Embed Frameworks */,
|
||||
0F0218402B9C73D7B3775497 /* libabseil.xcframework in Embed Frameworks */,
|
||||
6BBD88355CE6932E706CE45C /* libzstd.xcframework in Embed Frameworks */,
|
||||
);
|
||||
name = "Embed Frameworks";
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXCopyFilesBuildPhase section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
0CDCD26337640C57D07E41ED /* FilamentView.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = FilamentView.mm; sourceTree = "<group>"; };
|
||||
2620C967534D81CFFAB5D3FF /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = "<group>"; };
|
||||
350DC65C7EE8D98D8FE181DC /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
|
||||
3604FD7E74C46AC4FAB12BFA /* libutils.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libutils.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libutils.xcframework"; sourceTree = "<group>"; };
|
||||
3BB2247EC7FE4EFB2C3ED10A /* hello-triangle.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = "hello-triangle.app"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
41033B581E89DF4B33A2EB53 /* bakedColor.mat */ = {isa = PBXFileReference; path = bakedColor.mat; sourceTree = "<group>"; };
|
||||
44224172FC58D500DEFE7A7D /* libgeometry.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libgeometry.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libgeometry.xcframework"; sourceTree = "<group>"; };
|
||||
45FE9476D47ECFFEA65D7146 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
|
||||
524293A0A8CDE9047347EF48 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
||||
727785EA0395D939E6804AF4 /* libsmol-v.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = "libsmol-v.xcframework"; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libsmol-v.xcframework"; sourceTree = "<group>"; };
|
||||
761A2C7D6295697614AD3434 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
|
||||
8D062C70EFE8916B7656BB4E /* libzstd.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libzstd.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libzstd.xcframework"; sourceTree = "<group>"; };
|
||||
AC6CC7E260B2F20D0EA171E2 /* libktxreader.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libktxreader.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libktxreader.xcframework"; sourceTree = "<group>"; };
|
||||
C16E9A84F33BDFAEDC1E4837 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
|
||||
C311F8DEBEFEB185F0A7E4CC /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = "<group>"; };
|
||||
C4952E6805DB5E7B871DF61C /* libfilaflat.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libfilaflat.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libfilaflat.xcframework"; sourceTree = "<group>"; };
|
||||
CDBB6BE341D1C708FCB68750 /* FilamentView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FilamentView.h; sourceTree = "<group>"; };
|
||||
D0F16339A5D96AB6AAF03A4C /* libabseil.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libabseil.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libabseil.xcframework"; sourceTree = "<group>"; };
|
||||
DA668D9E9DC67AD1FA16422A /* libfilabridge.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libfilabridge.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libfilabridge.xcframework"; sourceTree = "<group>"; };
|
||||
E36164E9425CAABBE17EF153 /* libfilament.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libfilament.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libfilament.xcframework"; sourceTree = "<group>"; };
|
||||
E36D17DB3F44ADF8EFBEDBAF /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
|
||||
E56C70616FF30C50DFA8238B /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
|
||||
ED0BAF80B49E29533E492727 /* libibl.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libibl.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libibl.xcframework"; sourceTree = "<group>"; };
|
||||
F3BA0FF5017E4FECD94CF3F2 /* libbackend.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libbackend.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libbackend.xcframework"; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
3691C25600B8D42B8E9BC308 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
D5837AE122E300682E245E00 /* libfilament.xcframework in Frameworks */,
|
||||
0A3A34EAB98A45D1D4355A52 /* libbackend.xcframework in Frameworks */,
|
||||
7A4FA872EA928DB67BBF9351 /* libfilaflat.xcframework in Frameworks */,
|
||||
CF4322AB55566F31A284739B /* libktxreader.xcframework in Frameworks */,
|
||||
291EA8BF9E335683AD324451 /* libfilabridge.xcframework in Frameworks */,
|
||||
5B76FEB9522BC17E14EF3270 /* libutils.xcframework in Frameworks */,
|
||||
B156789E3EC8798928C58BD2 /* libsmol-v.xcframework in Frameworks */,
|
||||
915E0D1FE043E873C17EB0AB /* libgeometry.xcframework in Frameworks */,
|
||||
1326DEBB610801CD041AE322 /* libibl.xcframework in Frameworks */,
|
||||
966626FAF79F36B16F9AE201 /* libabseil.xcframework in Frameworks */,
|
||||
ECE38C7FF5D52E4222C22216 /* libzstd.xcframework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
39FD47E0213E1FFE59609A06 /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
@@ -41,11 +119,30 @@
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
554175C148AC5EDE93591BB3 /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
D0F16339A5D96AB6AAF03A4C /* libabseil.xcframework */,
|
||||
F3BA0FF5017E4FECD94CF3F2 /* libbackend.xcframework */,
|
||||
DA668D9E9DC67AD1FA16422A /* libfilabridge.xcframework */,
|
||||
C4952E6805DB5E7B871DF61C /* libfilaflat.xcframework */,
|
||||
E36164E9425CAABBE17EF153 /* libfilament.xcframework */,
|
||||
44224172FC58D500DEFE7A7D /* libgeometry.xcframework */,
|
||||
ED0BAF80B49E29533E492727 /* libibl.xcframework */,
|
||||
AC6CC7E260B2F20D0EA171E2 /* libktxreader.xcframework */,
|
||||
727785EA0395D939E6804AF4 /* libsmol-v.xcframework */,
|
||||
3604FD7E74C46AC4FAB12BFA /* libutils.xcframework */,
|
||||
8D062C70EFE8916B7656BB4E /* libzstd.xcframework */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
5B3E3AAF5C75644908492410 = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
C54ABC8D31D1863EF16253A0 /* hello-triangle */,
|
||||
8F55D652979868A470D724FA /* Materials */,
|
||||
554175C148AC5EDE93591BB3 /* Frameworks */,
|
||||
39FD47E0213E1FFE59609A06 /* Products */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
@@ -67,11 +164,11 @@
|
||||
CDBB6BE341D1C708FCB68750 /* FilamentView.h */,
|
||||
0CDCD26337640C57D07E41ED /* FilamentView.mm */,
|
||||
761A2C7D6295697614AD3434 /* Info.plist */,
|
||||
46A2FAD3D476FDADF45F70F8 /* LaunchScreen.storyboard */,
|
||||
E56C70616FF30C50DFA8238B /* main.m */,
|
||||
DDE4A219AEB5B4507F51B873 /* Main.storyboard */,
|
||||
C311F8DEBEFEB185F0A7E4CC /* ViewController.h */,
|
||||
2620C967534D81CFFAB5D3FF /* ViewController.m */,
|
||||
46A2FAD3D476FDADF45F70F8 /* LaunchScreen.storyboard */,
|
||||
DDE4A219AEB5B4507F51B873 /* Main.storyboard */,
|
||||
);
|
||||
path = "hello-triangle";
|
||||
sourceTree = "<group>";
|
||||
@@ -86,6 +183,8 @@
|
||||
668105208CE7DFC4DC55F8EC /* Build Materials */,
|
||||
7B94E1FEEC48280815A91021 /* Sources */,
|
||||
471869BF4E82B6ADC791072D /* Resources */,
|
||||
3691C25600B8D42B8E9BC308 /* Frameworks */,
|
||||
C514B8F3AF16FEA064256123 /* Embed Frameworks */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
@@ -106,9 +205,10 @@
|
||||
attributes = {
|
||||
BuildIndependentTargetsInParallel = YES;
|
||||
LastUpgradeCheck = 1430;
|
||||
TargetAttributes = {
|
||||
};
|
||||
};
|
||||
buildConfigurationList = 69A012BABE82CB5D1986B1BB /* Build configuration list for PBXProject "hello-triangle" */;
|
||||
compatibilityVersion = "Xcode 14.0";
|
||||
developmentRegion = en;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
@@ -117,7 +217,8 @@
|
||||
);
|
||||
mainGroup = 5B3E3AAF5C75644908492410;
|
||||
minimizedProjectReferenceProxies = 1;
|
||||
preferredProjectObjectVersion = 54;
|
||||
preferredProjectObjectVersion = 77;
|
||||
productRefGroup = 39FD47E0213E1FFE59609A06 /* Products */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
@@ -156,7 +257,7 @@
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "# Compile bakedColor material.\n\nHOST_TOOLS_PATH=\"${HOST_TOOLS_PATH:-../../../out/release/filament/bin}\"\nmatc_path=`find ${HOST_TOOLS_PATH} -name matc -type f | head -n 1`\n\nif [[ ! -e \"${matc_path}\" ]]; then\n echo \"No matc binary could be found in ${HOST_TOOLS_PATH}.\"\n echo \"Ensure Filament has been built/installed before building this app.\"\n exit 1\nfi\n\nmkdir -p \"${PROJECT_DIR}/generated/\"\n\"${matc_path}\" \\\n --api all \\\n -f header \\\n -o \"${PROJECT_DIR}/generated/bakedColor.inc\" \\\n \"${PROJECT_DIR}/Materials/bakedColor.mat\"\n\n# FilamentView.mm includes bakedColor.filamat, so touch it to force Xcode to\n# recompile it.\ntouch \"${PROJECT_DIR}/hello-triangle/FilamentView.mm\"\n";
|
||||
shellScript = "# Compile bakedColor material.\n\nHOST_TOOLS_PATH=\"${HOST_TOOLS_PATH:-../../../out/release/filament/bin}\"\nmatc_path=`find -L ${HOST_TOOLS_PATH} -name matc -type f | head -n 1`\n\nif [[ ! -e \"${matc_path}\" ]]; then\n echo \"No matc binary could be found in ${HOST_TOOLS_PATH}.\"\n echo \"Ensure Filament has been built/installed before building this app.\"\n exit 1\nfi\n\nmkdir -p \"${PROJECT_DIR}/generated/\"\n\"${matc_path}\" \\\n --api all \\\n -f header \\\n -o \"${PROJECT_DIR}/generated/bakedColor.inc\" \\\n \"${PROJECT_DIR}/Materials/bakedColor.mat\"\n\n# FilamentView.mm includes bakedColor.filamat, so touch it to force Xcode to\n# recompile it.\ntouch \"${PROJECT_DIR}/hello-triangle/FilamentView.mm\"\n";
|
||||
};
|
||||
/* End PBXShellScriptBuildPhase section */
|
||||
|
||||
@@ -201,12 +302,17 @@
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
ENABLE_BITCODE = NO;
|
||||
FILAMENT_OUT_NAME = "ios-debug";
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"../../../out/$(FILAMENT_OUT_NAME)/filament/lib\"",
|
||||
);
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"FILAMENT_APP_USE_OPENGL=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"../../../out/ios-debug/filament/include",
|
||||
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
|
||||
generated,
|
||||
);
|
||||
INFOPLIST_FILE = "hello-triangle/Info.plist";
|
||||
@@ -215,23 +321,6 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"../../../out/ios-debug/filament/lib/$(CURRENT_ARCH)",
|
||||
"../../../out/ios-debug/filament/lib/universal",
|
||||
);
|
||||
OTHER_LDFLAGS = (
|
||||
"-lfilament",
|
||||
"-lbackend",
|
||||
"-lfilaflat",
|
||||
"-lktxreader",
|
||||
"-lfilabridge",
|
||||
"-lutils",
|
||||
"-lsmol-v",
|
||||
"-lgeometry",
|
||||
"-libl",
|
||||
"-labseil",
|
||||
"-lzstd",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "${SAMPLE_CODE_DISAMBIGUATOR}.google.filament.hello-triangle";
|
||||
SAMPLE_CODE_DISAMBIGUATOR = "${DEVELOPMENT_TEAM}";
|
||||
SDKROOT = iphoneos;
|
||||
@@ -245,7 +334,7 @@
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
@@ -308,12 +397,17 @@
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
ENABLE_BITCODE = NO;
|
||||
FILAMENT_OUT_NAME = "ios-release";
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"../../../out/$(FILAMENT_OUT_NAME)/filament/lib\"",
|
||||
);
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"FILAMENT_APP_USE_METAL=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"../../../out/ios-release/filament/include",
|
||||
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
|
||||
generated,
|
||||
);
|
||||
INFOPLIST_FILE = "hello-triangle/Info.plist";
|
||||
@@ -322,23 +416,6 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"../../../out/ios-release/filament/lib/$(CURRENT_ARCH)",
|
||||
"../../../out/ios-release/filament/lib/universal",
|
||||
);
|
||||
OTHER_LDFLAGS = (
|
||||
"-lfilament",
|
||||
"-lbackend",
|
||||
"-lfilaflat",
|
||||
"-lktxreader",
|
||||
"-lfilabridge",
|
||||
"-lutils",
|
||||
"-lsmol-v",
|
||||
"-lgeometry",
|
||||
"-libl",
|
||||
"-labseil",
|
||||
"-lzstd",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "${SAMPLE_CODE_DISAMBIGUATOR}.google.filament.hello-triangle";
|
||||
SAMPLE_CODE_DISAMBIGUATOR = "${DEVELOPMENT_TEAM}";
|
||||
SDKROOT = iphoneos;
|
||||
@@ -353,12 +430,17 @@
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
ENABLE_BITCODE = NO;
|
||||
FILAMENT_OUT_NAME = "ios-release";
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"../../../out/$(FILAMENT_OUT_NAME)/filament/lib\"",
|
||||
);
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"FILAMENT_APP_USE_OPENGL=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"../../../out/ios-release/filament/include",
|
||||
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
|
||||
generated,
|
||||
);
|
||||
INFOPLIST_FILE = "hello-triangle/Info.plist";
|
||||
@@ -367,23 +449,6 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"../../../out/ios-release/filament/lib/$(CURRENT_ARCH)",
|
||||
"../../../out/ios-release/filament/lib/universal",
|
||||
);
|
||||
OTHER_LDFLAGS = (
|
||||
"-lfilament",
|
||||
"-lbackend",
|
||||
"-lfilaflat",
|
||||
"-lktxreader",
|
||||
"-lfilabridge",
|
||||
"-lutils",
|
||||
"-lsmol-v",
|
||||
"-lgeometry",
|
||||
"-libl",
|
||||
"-labseil",
|
||||
"-lzstd",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "${SAMPLE_CODE_DISAMBIGUATOR}.google.filament.hello-triangle";
|
||||
SAMPLE_CODE_DISAMBIGUATOR = "${DEVELOPMENT_TEAM}";
|
||||
SDKROOT = iphoneos;
|
||||
@@ -397,7 +462,7 @@
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
@@ -452,7 +517,7 @@
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
@@ -508,12 +573,17 @@
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
ENABLE_BITCODE = NO;
|
||||
FILAMENT_OUT_NAME = "ios-debug";
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"../../../out/$(FILAMENT_OUT_NAME)/filament/lib\"",
|
||||
);
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"FILAMENT_APP_USE_METAL=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"../../../out/ios-debug/filament/include",
|
||||
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
|
||||
generated,
|
||||
);
|
||||
INFOPLIST_FILE = "hello-triangle/Info.plist";
|
||||
@@ -522,23 +592,6 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"../../../out/ios-debug/filament/lib/$(CURRENT_ARCH)",
|
||||
"../../../out/ios-debug/filament/lib/universal",
|
||||
);
|
||||
OTHER_LDFLAGS = (
|
||||
"-lfilament",
|
||||
"-lbackend",
|
||||
"-lfilaflat",
|
||||
"-lktxreader",
|
||||
"-lfilabridge",
|
||||
"-lutils",
|
||||
"-lsmol-v",
|
||||
"-lgeometry",
|
||||
"-libl",
|
||||
"-labseil",
|
||||
"-lzstd",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "${SAMPLE_CODE_DISAMBIGUATOR}.google.filament.hello-triangle";
|
||||
SAMPLE_CODE_DISAMBIGUATOR = "${DEVELOPMENT_TEAM}";
|
||||
SDKROOT = iphoneos;
|
||||
@@ -552,7 +605,7 @@
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# Compile bakedColor material.
|
||||
|
||||
HOST_TOOLS_PATH="${HOST_TOOLS_PATH:-../../../out/release/filament/bin}"
|
||||
matc_path=`find ${HOST_TOOLS_PATH} -name matc -type f | head -n 1`
|
||||
matc_path=`find -L ${HOST_TOOLS_PATH} -name matc -type f | head -n 1`
|
||||
|
||||
if [[ ! -e "${matc_path}" ]]; then
|
||||
echo "No matc binary could be found in ${HOST_TOOLS_PATH}."
|
||||
|
||||
@@ -3,34 +3,112 @@
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 54;
|
||||
objectVersion = 77;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
1277F800D6D46E364FC36888 /* libgeometry.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 567E8EB7B4914540B082DA80 /* libgeometry.xcframework */; };
|
||||
1E31EA1A79A550407E4A39BB /* libzstd.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = E2AF349D32EBA154923EABB5 /* libzstd.xcframework */; };
|
||||
23318D8F70A6E13214CF15E0 /* libutils.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 91DE2DCC79C7DD9D830D883B /* libutils.xcframework */; };
|
||||
243D3B219322B6BD829F39F8 /* libktxreader.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = A6D7469820FD760B1040BFD2 /* libktxreader.xcframework */; };
|
||||
3A1A568B3431D8FB66F60DB3 /* libabseil.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = B254EC414E4905EC4CA22173 /* libabseil.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
527FF7B484BA83BCC248B097 /* libfilabridge.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 393E02B47C7710AB8B1F257A /* libfilabridge.xcframework */; };
|
||||
593638720D5E6F09E52ECB01 /* libibl.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = E1C8DFBE4D515753D5B51FF1 /* libibl.xcframework */; };
|
||||
5F8AE993649815236EC665EB /* libibl.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = E1C8DFBE4D515753D5B51FF1 /* libibl.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
60C0A11E074409CE5F88B4FE /* libbackend.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6EB7C2D5C91942D2B1EA056D /* libbackend.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
616A1B9A177BA2F02C920165 /* libfilaflat.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0202CBA0AE1EAA3EE3DE0FFC /* libfilaflat.xcframework */; };
|
||||
643749757FD9F8A609A336C7 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = E749A05E4E5F36757FB9399C /* Assets.xcassets */; };
|
||||
65FE8CD16998C5D479C9858E /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = C8CF5D9EB8BA11B44F639DFE /* AppDelegate.m */; };
|
||||
6B53BDEF1DAB8E4AD8CE754B /* libfilabridge.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 393E02B47C7710AB8B1F257A /* libfilabridge.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
7032AB98BE03DFE8E3071FD0 /* libbackend.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6EB7C2D5C91942D2B1EA056D /* libbackend.xcframework */; };
|
||||
715FFF9658000B58BFEC22C6 /* libutils.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 91DE2DCC79C7DD9D830D883B /* libutils.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
740AB9277340CDD2222020E2 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = AA728ADDAAE09D3A5FD80C82 /* main.m */; };
|
||||
7F65E29DE4BF2CAA0D0759AA /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 959043C1F56EAAE872B0FF05 /* Main.storyboard */; };
|
||||
80F7D25E275FE8C31AF9196E /* libzstd.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = E2AF349D32EBA154923EABB5 /* libzstd.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
852D4BD096E865D7263928C8 /* libabseil.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = B254EC414E4905EC4CA22173 /* libabseil.xcframework */; };
|
||||
8DA900E9A495C25262F78773 /* libgeometry.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 567E8EB7B4914540B082DA80 /* libgeometry.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
9F3C8B197C22178413BBAA37 /* libfilaflat.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 0202CBA0AE1EAA3EE3DE0FFC /* libfilaflat.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
A0FCB25FCDAE129BB6369957 /* libfilament.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = DF18A248DCF11412DDFAB5AE /* libfilament.xcframework */; };
|
||||
A9C3D93FE47802953C8A0868 /* FilamentView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1A807B46A326F19ABCEE0D62 /* FilamentView.mm */; };
|
||||
BA514AFE134AFD317CD71AA1 /* libsmol-v.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 26B0C9089541BEB14FE28934 /* libsmol-v.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
C8F443E4A5064C2D1F755954 /* libsmol-v.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 26B0C9089541BEB14FE28934 /* libsmol-v.xcframework */; };
|
||||
CAB4734A7E608F3C36C4C9C8 /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E6D9072BB2A497EEE9A7B662 /* ViewController.m */; };
|
||||
CDF7D87AB0D036A143F37946 /* libfilament.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = DF18A248DCF11412DDFAB5AE /* libfilament.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
DF6374DDCFE55DD536B52033 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 96B770972E0F353852755AB3 /* LaunchScreen.storyboard */; };
|
||||
F6EEC66B42DF66E5C4CEC17C /* libktxreader.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = A6D7469820FD760B1040BFD2 /* libktxreader.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXCopyFilesBuildPhase section */
|
||||
89F6975F74EBC72BCCA1074F /* Embed Frameworks */ = {
|
||||
isa = PBXCopyFilesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
dstPath = "";
|
||||
dstSubfolderSpec = 10;
|
||||
files = (
|
||||
CDF7D87AB0D036A143F37946 /* libfilament.xcframework in Embed Frameworks */,
|
||||
60C0A11E074409CE5F88B4FE /* libbackend.xcframework in Embed Frameworks */,
|
||||
9F3C8B197C22178413BBAA37 /* libfilaflat.xcframework in Embed Frameworks */,
|
||||
F6EEC66B42DF66E5C4CEC17C /* libktxreader.xcframework in Embed Frameworks */,
|
||||
6B53BDEF1DAB8E4AD8CE754B /* libfilabridge.xcframework in Embed Frameworks */,
|
||||
715FFF9658000B58BFEC22C6 /* libutils.xcframework in Embed Frameworks */,
|
||||
BA514AFE134AFD317CD71AA1 /* libsmol-v.xcframework in Embed Frameworks */,
|
||||
8DA900E9A495C25262F78773 /* libgeometry.xcframework in Embed Frameworks */,
|
||||
5F8AE993649815236EC665EB /* libibl.xcframework in Embed Frameworks */,
|
||||
3A1A568B3431D8FB66F60DB3 /* libabseil.xcframework in Embed Frameworks */,
|
||||
80F7D25E275FE8C31AF9196E /* libzstd.xcframework in Embed Frameworks */,
|
||||
);
|
||||
name = "Embed Frameworks";
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXCopyFilesBuildPhase section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
0202CBA0AE1EAA3EE3DE0FFC /* libfilaflat.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libfilaflat.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libfilaflat.xcframework"; sourceTree = "<group>"; };
|
||||
023105B81B6C662A3BABDC92 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
|
||||
0A8B371B11D177469DFEBB86 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
|
||||
1A807B46A326F19ABCEE0D62 /* FilamentView.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = FilamentView.mm; sourceTree = "<group>"; };
|
||||
26B0C9089541BEB14FE28934 /* libsmol-v.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = "libsmol-v.xcframework"; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libsmol-v.xcframework"; sourceTree = "<group>"; };
|
||||
2F32AE4C99AA8AE39BB09F0A /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = "<group>"; };
|
||||
393E02B47C7710AB8B1F257A /* libfilabridge.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libfilabridge.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libfilabridge.xcframework"; sourceTree = "<group>"; };
|
||||
567E8EB7B4914540B082DA80 /* libgeometry.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libgeometry.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libgeometry.xcframework"; sourceTree = "<group>"; };
|
||||
6EB7C2D5C91942D2B1EA056D /* libbackend.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libbackend.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libbackend.xcframework"; sourceTree = "<group>"; };
|
||||
7ED3EBFE01876351CFF9AD1A /* transparent-rendering.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = "transparent-rendering.app"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
91DE2DCC79C7DD9D830D883B /* libutils.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libutils.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libutils.xcframework"; sourceTree = "<group>"; };
|
||||
952B0BE8EFAEF9B6FCB77798 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
|
||||
A5E8D7CA26C338BF3D9D1932 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
|
||||
A6D7469820FD760B1040BFD2 /* libktxreader.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libktxreader.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libktxreader.xcframework"; sourceTree = "<group>"; };
|
||||
AA728ADDAAE09D3A5FD80C82 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
|
||||
B254EC414E4905EC4CA22173 /* libabseil.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libabseil.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libabseil.xcframework"; sourceTree = "<group>"; };
|
||||
BD21E933E2F77EE5ACBCDD5F /* FilamentView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FilamentView.h; sourceTree = "<group>"; };
|
||||
C8CF5D9EB8BA11B44F639DFE /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
|
||||
DF18A248DCF11412DDFAB5AE /* libfilament.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libfilament.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libfilament.xcframework"; sourceTree = "<group>"; };
|
||||
E1C8DFBE4D515753D5B51FF1 /* libibl.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libibl.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libibl.xcframework"; sourceTree = "<group>"; };
|
||||
E2AF349D32EBA154923EABB5 /* libzstd.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libzstd.xcframework; path = "../../../out/$(FILAMENT_OUT_NAME)/filament/lib/libzstd.xcframework"; sourceTree = "<group>"; };
|
||||
E6D9072BB2A497EEE9A7B662 /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = "<group>"; };
|
||||
E749A05E4E5F36757FB9399C /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
9267558086B89E5F350ADDC4 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
A0FCB25FCDAE129BB6369957 /* libfilament.xcframework in Frameworks */,
|
||||
7032AB98BE03DFE8E3071FD0 /* libbackend.xcframework in Frameworks */,
|
||||
616A1B9A177BA2F02C920165 /* libfilaflat.xcframework in Frameworks */,
|
||||
243D3B219322B6BD829F39F8 /* libktxreader.xcframework in Frameworks */,
|
||||
527FF7B484BA83BCC248B097 /* libfilabridge.xcframework in Frameworks */,
|
||||
23318D8F70A6E13214CF15E0 /* libutils.xcframework in Frameworks */,
|
||||
C8F443E4A5064C2D1F755954 /* libsmol-v.xcframework in Frameworks */,
|
||||
1277F800D6D46E364FC36888 /* libgeometry.xcframework in Frameworks */,
|
||||
593638720D5E6F09E52ECB01 /* libibl.xcframework in Frameworks */,
|
||||
852D4BD096E865D7263928C8 /* libabseil.xcframework in Frameworks */,
|
||||
1E31EA1A79A550407E4A39BB /* libzstd.xcframework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
0B098038EF2CFAC88AFE0F18 /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
@@ -44,6 +122,7 @@
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
6E33B6C4EE9FFF8BBCE5DD20 /* transparent-rendering */,
|
||||
C5AF8AD86B58EF5D0BD7B0B2 /* Frameworks */,
|
||||
0B098038EF2CFAC88AFE0F18 /* Products */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
@@ -57,15 +136,33 @@
|
||||
BD21E933E2F77EE5ACBCDD5F /* FilamentView.h */,
|
||||
1A807B46A326F19ABCEE0D62 /* FilamentView.mm */,
|
||||
952B0BE8EFAEF9B6FCB77798 /* Info.plist */,
|
||||
96B770972E0F353852755AB3 /* LaunchScreen.storyboard */,
|
||||
AA728ADDAAE09D3A5FD80C82 /* main.m */,
|
||||
959043C1F56EAAE872B0FF05 /* Main.storyboard */,
|
||||
2F32AE4C99AA8AE39BB09F0A /* ViewController.h */,
|
||||
E6D9072BB2A497EEE9A7B662 /* ViewController.m */,
|
||||
96B770972E0F353852755AB3 /* LaunchScreen.storyboard */,
|
||||
959043C1F56EAAE872B0FF05 /* Main.storyboard */,
|
||||
);
|
||||
path = "transparent-rendering";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
C5AF8AD86B58EF5D0BD7B0B2 /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
B254EC414E4905EC4CA22173 /* libabseil.xcframework */,
|
||||
6EB7C2D5C91942D2B1EA056D /* libbackend.xcframework */,
|
||||
393E02B47C7710AB8B1F257A /* libfilabridge.xcframework */,
|
||||
0202CBA0AE1EAA3EE3DE0FFC /* libfilaflat.xcframework */,
|
||||
DF18A248DCF11412DDFAB5AE /* libfilament.xcframework */,
|
||||
567E8EB7B4914540B082DA80 /* libgeometry.xcframework */,
|
||||
E1C8DFBE4D515753D5B51FF1 /* libibl.xcframework */,
|
||||
A6D7469820FD760B1040BFD2 /* libktxreader.xcframework */,
|
||||
26B0C9089541BEB14FE28934 /* libsmol-v.xcframework */,
|
||||
91DE2DCC79C7DD9D830D883B /* libutils.xcframework */,
|
||||
E2AF349D32EBA154923EABB5 /* libzstd.xcframework */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
@@ -76,6 +173,8 @@
|
||||
31596072423F6FB0A84C97A0 /* Build Materials */,
|
||||
EE3B63E6A11EDDBC48502B27 /* Sources */,
|
||||
A676D3A853739CDAB454587E /* Resources */,
|
||||
9267558086B89E5F350ADDC4 /* Frameworks */,
|
||||
89F6975F74EBC72BCCA1074F /* Embed Frameworks */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
@@ -96,9 +195,10 @@
|
||||
attributes = {
|
||||
BuildIndependentTargetsInParallel = YES;
|
||||
LastUpgradeCheck = 1430;
|
||||
TargetAttributes = {
|
||||
};
|
||||
};
|
||||
buildConfigurationList = 8A22BD23DB15965551506480 /* Build configuration list for PBXProject "transparent-rendering" */;
|
||||
compatibilityVersion = "Xcode 14.0";
|
||||
developmentRegion = en;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
@@ -107,7 +207,8 @@
|
||||
);
|
||||
mainGroup = 4C27390036DEB15C67D5A664;
|
||||
minimizedProjectReferenceProxies = 1;
|
||||
preferredProjectObjectVersion = 54;
|
||||
preferredProjectObjectVersion = 77;
|
||||
productRefGroup = 0B098038EF2CFAC88AFE0F18 /* Products */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
@@ -146,7 +247,7 @@
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "# Compile bakedColor material.\n\nHOST_TOOLS_PATH=\"${HOST_TOOLS_PATH:-../../../out/release/filament/bin}\"\nmatc_path=`find ${HOST_TOOLS_PATH} -name matc -type f | head -n 1`\n\nif [[ ! -e \"${matc_path}\" ]]; then\n echo \"No matc binary could be found in ${HOST_TOOLS_PATH}.\"\n echo \"Ensure Filament has been built/installed before building this app.\"\n exit 1\nfi\n\nmkdir -p \"${PROJECT_DIR}/generated/\"\n\"${matc_path}\" \\\n --api all \\\n -f header \\\n -o \"${PROJECT_DIR}/generated/bakedColor.inc\" \\\n \"${PROJECT_DIR}/Materials/bakedColor.mat\"\n\n# FilamentView.mm includes bakedColor.filamat, so touch it to force Xcode to\n# recompile it.\ntouch \"${PROJECT_DIR}/transparent-rendering/FilamentView.mm\"\n";
|
||||
shellScript = "# Compile bakedColor material.\n\nHOST_TOOLS_PATH=\"${HOST_TOOLS_PATH:-../../../out/release/filament/bin}\"\nmatc_path=`find -L ${HOST_TOOLS_PATH} -name matc -type f | head -n 1`\n\nif [[ ! -e \"${matc_path}\" ]]; then\n echo \"No matc binary could be found in ${HOST_TOOLS_PATH}.\"\n echo \"Ensure Filament has been built/installed before building this app.\"\n exit 1\nfi\n\nmkdir -p \"${PROJECT_DIR}/generated/\"\n\"${matc_path}\" \\\n --api all \\\n -f header \\\n -o \"${PROJECT_DIR}/generated/bakedColor.inc\" \\\n \"${PROJECT_DIR}/Materials/bakedColor.mat\"\n\n# FilamentView.mm includes bakedColor.filamat, so touch it to force Xcode to\n# recompile it.\ntouch \"${PROJECT_DIR}/transparent-rendering/FilamentView.mm\"\n";
|
||||
};
|
||||
/* End PBXShellScriptBuildPhase section */
|
||||
|
||||
@@ -190,7 +291,7 @@
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
@@ -245,7 +346,7 @@
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
@@ -307,7 +408,7 @@
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
@@ -363,12 +464,17 @@
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
ENABLE_BITCODE = NO;
|
||||
FILAMENT_OUT_NAME = "ios-release";
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"../../../out/$(FILAMENT_OUT_NAME)/filament/lib\"",
|
||||
);
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"FILAMENT_APP_USE_OPENGL=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"../../../out/ios-release/filament/include",
|
||||
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
|
||||
generated,
|
||||
);
|
||||
INFOPLIST_FILE = "transparent-rendering/Info.plist";
|
||||
@@ -377,23 +483,6 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"../../../out/ios-release/filament/lib/$(CURRENT_ARCH)",
|
||||
"../../../out/ios-release/filament/lib/universal",
|
||||
);
|
||||
OTHER_LDFLAGS = (
|
||||
"-lfilament",
|
||||
"-lbackend",
|
||||
"-lfilaflat",
|
||||
"-lktxreader",
|
||||
"-lfilabridge",
|
||||
"-lutils",
|
||||
"-lsmol-v",
|
||||
"-lgeometry",
|
||||
"-libl",
|
||||
"-labseil",
|
||||
"-lzstd",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "${SAMPLE_CODE_DISAMBIGUATOR}.google.filament.transparent-rendering";
|
||||
SAMPLE_CODE_DISAMBIGUATOR = "${DEVELOPMENT_TEAM}";
|
||||
SDKROOT = iphoneos;
|
||||
@@ -408,12 +497,17 @@
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
ENABLE_BITCODE = NO;
|
||||
FILAMENT_OUT_NAME = "ios-debug";
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"../../../out/$(FILAMENT_OUT_NAME)/filament/lib\"",
|
||||
);
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"FILAMENT_APP_USE_METAL=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"../../../out/ios-debug/filament/include",
|
||||
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
|
||||
generated,
|
||||
);
|
||||
INFOPLIST_FILE = "transparent-rendering/Info.plist";
|
||||
@@ -422,23 +516,6 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"../../../out/ios-debug/filament/lib/$(CURRENT_ARCH)",
|
||||
"../../../out/ios-debug/filament/lib/universal",
|
||||
);
|
||||
OTHER_LDFLAGS = (
|
||||
"-lfilament",
|
||||
"-lbackend",
|
||||
"-lfilaflat",
|
||||
"-lktxreader",
|
||||
"-lfilabridge",
|
||||
"-lutils",
|
||||
"-lsmol-v",
|
||||
"-lgeometry",
|
||||
"-libl",
|
||||
"-labseil",
|
||||
"-lzstd",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "${SAMPLE_CODE_DISAMBIGUATOR}.google.filament.transparent-rendering";
|
||||
SAMPLE_CODE_DISAMBIGUATOR = "${DEVELOPMENT_TEAM}";
|
||||
SDKROOT = iphoneos;
|
||||
@@ -453,12 +530,17 @@
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
ENABLE_BITCODE = NO;
|
||||
FILAMENT_OUT_NAME = "ios-debug";
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"../../../out/$(FILAMENT_OUT_NAME)/filament/lib\"",
|
||||
);
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"FILAMENT_APP_USE_OPENGL=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"../../../out/ios-debug/filament/include",
|
||||
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
|
||||
generated,
|
||||
);
|
||||
INFOPLIST_FILE = "transparent-rendering/Info.plist";
|
||||
@@ -467,23 +549,6 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"../../../out/ios-debug/filament/lib/$(CURRENT_ARCH)",
|
||||
"../../../out/ios-debug/filament/lib/universal",
|
||||
);
|
||||
OTHER_LDFLAGS = (
|
||||
"-lfilament",
|
||||
"-lbackend",
|
||||
"-lfilaflat",
|
||||
"-lktxreader",
|
||||
"-lfilabridge",
|
||||
"-lutils",
|
||||
"-lsmol-v",
|
||||
"-lgeometry",
|
||||
"-libl",
|
||||
"-labseil",
|
||||
"-lzstd",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "${SAMPLE_CODE_DISAMBIGUATOR}.google.filament.transparent-rendering";
|
||||
SAMPLE_CODE_DISAMBIGUATOR = "${DEVELOPMENT_TEAM}";
|
||||
SDKROOT = iphoneos;
|
||||
@@ -498,12 +563,17 @@
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
ENABLE_BITCODE = NO;
|
||||
FILAMENT_OUT_NAME = "ios-release";
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"../../../out/$(FILAMENT_OUT_NAME)/filament/lib\"",
|
||||
);
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"FILAMENT_APP_USE_METAL=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"../../../out/ios-release/filament/include",
|
||||
"$(SRCROOT)/../../../out/$(FILAMENT_OUT_NAME)/filament/include",
|
||||
generated,
|
||||
);
|
||||
INFOPLIST_FILE = "transparent-rendering/Info.plist";
|
||||
@@ -512,23 +582,6 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"../../../out/ios-release/filament/lib/$(CURRENT_ARCH)",
|
||||
"../../../out/ios-release/filament/lib/universal",
|
||||
);
|
||||
OTHER_LDFLAGS = (
|
||||
"-lfilament",
|
||||
"-lbackend",
|
||||
"-lfilaflat",
|
||||
"-lktxreader",
|
||||
"-lfilabridge",
|
||||
"-lutils",
|
||||
"-lsmol-v",
|
||||
"-lgeometry",
|
||||
"-libl",
|
||||
"-labseil",
|
||||
"-lzstd",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "${SAMPLE_CODE_DISAMBIGUATOR}.google.filament.transparent-rendering";
|
||||
SAMPLE_CODE_DISAMBIGUATOR = "${DEVELOPMENT_TEAM}";
|
||||
SDKROOT = iphoneos;
|
||||
@@ -542,7 +595,7 @@
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
|
||||
@@ -50,7 +50,7 @@ install(DIRECTORY ${PUBLIC_HDR_DIR}/camutils DESTINATION include)
|
||||
# ==================================================================================================
|
||||
# Tests
|
||||
# ==================================================================================================
|
||||
if (FILAMENT_BUILD_TESTING AND NOT ANDROID AND NOT WEBGL AND NOT IOS)
|
||||
if (FILAMENT_BUILD_TESTING AND NOT ANDROID AND NOT WASM AND NOT IOS)
|
||||
add_executable(test_${TARGET} tests/test_camutils.cpp)
|
||||
target_link_libraries(test_${TARGET} PRIVATE camutils gtest)
|
||||
set_target_properties(test_${TARGET} PROPERTIES FOLDER Tests)
|
||||
|
||||
@@ -37,7 +37,7 @@ install(FILES ${DIST_HDRS} DESTINATION include/${TARGET})
|
||||
# ==================================================================================================
|
||||
# Tests
|
||||
# ==================================================================================================
|
||||
if (FILAMENT_BUILD_TESTING AND NOT IOS AND NOT WEBGL AND NOT ANDROID)
|
||||
if (FILAMENT_BUILD_TESTING AND NOT IOS AND NOT WASM AND NOT ANDROID)
|
||||
add_executable(test_${TARGET} tests/test_filamesh.cpp )
|
||||
target_link_libraries(test_${TARGET} PRIVATE filameshio gtest)
|
||||
set_target_properties(test_${TARGET} PROPERTIES FOLDER Tests)
|
||||
|
||||
@@ -46,7 +46,7 @@ if (MSVC)
|
||||
set(OPTIMIZATION_FLAGS
|
||||
/fp:fast
|
||||
)
|
||||
elseif(WEBGL)
|
||||
elseif (WASM)
|
||||
# Avoid strict-vtable-pointers here, it is broken in WebAssembly.
|
||||
set(OPTIMIZATION_FLAGS -fvisibility-inlines-hidden)
|
||||
else()
|
||||
|
||||
@@ -73,7 +73,7 @@ install(FILES "${GEOMETRY_COMBINED_OUTPUT}" DESTINATION lib/${DIST_DIR} RENAME $
|
||||
# ==================================================================================================
|
||||
# Tests
|
||||
# ==================================================================================================
|
||||
if (FILAMENT_BUILD_TESTING AND NOT ANDROID AND NOT WEBGL AND NOT IOS)
|
||||
if (FILAMENT_BUILD_TESTING AND NOT ANDROID AND NOT WASM AND NOT IOS)
|
||||
set(TARGET test_transcoder)
|
||||
add_executable(${TARGET} tests/test_transcoder.cpp)
|
||||
target_link_libraries(${TARGET} PRIVATE geometry gtest)
|
||||
|
||||
@@ -198,13 +198,13 @@ set_target_properties(gltfio_core PROPERTIES FOLDER Libs)
|
||||
target_compile_definitions(gltfio_core PUBLIC -DGLTFIO_DRACO_SUPPORTED=1)
|
||||
target_link_libraries(gltfio_core PUBLIC dracodec meshoptimizer ${WEBP_DECODER_LIB_TARGET})
|
||||
|
||||
if (WEBGL_PTHREADS)
|
||||
if (WASM_PTHREADS)
|
||||
target_compile_definitions(gltfio_core PUBLIC -DFILAMENT_WASM_THREADS)
|
||||
endif()
|
||||
|
||||
target_compile_options(gltfio_core PRIVATE ${FILAMENT_WARNINGS})
|
||||
|
||||
if (NOT WEBGL AND NOT ANDROID AND NOT IOS)
|
||||
if (NOT WASM AND NOT ANDROID AND NOT IOS)
|
||||
|
||||
# ==================================================================================================
|
||||
# Link the core library with additional dependencies to create the "full" library
|
||||
@@ -246,7 +246,7 @@ if (FILAMENT_BUILD_TESTING)
|
||||
|
||||
# The following tests rely on private APIs that are stripped
|
||||
# away in Release builds
|
||||
if (TNT_DEV AND NOT WEBGL AND NOT ANDROID AND NOT IOS)
|
||||
if (TNT_DEV AND NOT WASM AND NOT ANDROID AND NOT IOS)
|
||||
set(TEST_TARGET test_gltfio)
|
||||
|
||||
add_executable(${TEST_TARGET} test/gltfio_test.cpp)
|
||||
|
||||
@@ -99,7 +99,7 @@ if (MSVC)
|
||||
set(OPTIMIZATION_FLAGS
|
||||
/fp:fast
|
||||
)
|
||||
elseif(WEBGL)
|
||||
elseif (WASM)
|
||||
# Avoid strict-vtable-pointers here, it is broken in WebAssembly.
|
||||
set(OPTIMIZATION_FLAGS -fvisibility-inlines-hidden)
|
||||
else()
|
||||
|
||||
@@ -53,7 +53,7 @@ install(DIRECTORY ${PUBLIC_HDR_DIR}/image DESTINATION include)
|
||||
# ==================================================================================================
|
||||
# Tests
|
||||
# ==================================================================================================
|
||||
if (FILAMENT_BUILD_TESTING AND NOT ANDROID AND NOT WEBGL AND NOT IOS AND NOT FILAMENT_SKIP_SDL2)
|
||||
if (FILAMENT_BUILD_TESTING AND NOT ANDROID AND NOT WASM AND NOT IOS AND NOT FILAMENT_SKIP_SDL2)
|
||||
add_executable(test_${TARGET} tests/test_image.cpp)
|
||||
target_link_libraries(test_${TARGET} PRIVATE imageio gtest)
|
||||
set_target_properties(test_${TARGET} PROPERTIES FOLDER Tests)
|
||||
|
||||
@@ -17,9 +17,9 @@ target_link_libraries(imagediff PRIVATE
|
||||
)
|
||||
|
||||
|
||||
if (NOT ANDROID AND NOT WEBGL AND NOT IOS)
|
||||
if (NOT ANDROID AND NOT WASM AND NOT IOS)
|
||||
add_executable(test_imagediff tests/test_ImageDiff.cpp)
|
||||
target_link_libraries(test_imagediff PRIVATE imagediff gtest image utils)
|
||||
endif()
|
||||
|
||||
install(TARGETS imagediff ARCHIVE DESTINATION lib/${DIST_ARCH} LIBRARY DESTINATION lib/${DIST_ARCH})
|
||||
install(TARGETS imagediff ARCHIVE DESTINATION lib/${DIST_DIR} LIBRARY DESTINATION lib/${DIST_DIR})
|
||||
|
||||
@@ -45,7 +45,7 @@ install(DIRECTORY ${PUBLIC_HDR_DIR}/imageio-lite DESTINATION include)
|
||||
# ==================================================================================================
|
||||
# Tests
|
||||
# ==================================================================================================
|
||||
if (NOT ANDROID AND NOT WEBGL AND NOT IOS)
|
||||
if (NOT ANDROID AND NOT WASM AND NOT IOS)
|
||||
add_executable(test_${TARGET} tests/test_imageio-lite.cpp)
|
||||
target_link_libraries(test_${TARGET} PRIVATE ${TARGET} image gtest)
|
||||
set_target_properties(test_${TARGET} PROPERTIES FOLDER Tests)
|
||||
|
||||
@@ -60,7 +60,7 @@ endfunction()
|
||||
add_testfile(color_grid_uastc_zstd.ktx2)
|
||||
add_testfile(lightroom_ibl.ktx)
|
||||
|
||||
if (FILAMENT_BUILD_TESTING AND NOT ANDROID AND NOT WEBGL AND NOT IOS)
|
||||
if (FILAMENT_BUILD_TESTING AND NOT ANDROID AND NOT WASM AND NOT IOS)
|
||||
add_executable(test_ktxreader tests/test_ktxreader.cpp ${TESTFILES})
|
||||
target_link_libraries(test_ktxreader PRIVATE ${TARGET} gtest)
|
||||
set_target_properties(test_ktxreader PROPERTIES FOLDER Tests)
|
||||
|
||||
@@ -115,7 +115,7 @@ if (APPLE)
|
||||
list(APPEND SRCS src/darwin/Systrace.cpp)
|
||||
list(APPEND SRCS src/darwin/Tracing.cpp)
|
||||
endif()
|
||||
if (WEBGL)
|
||||
if (WASM)
|
||||
list(APPEND SRCS src/web/Path.cpp)
|
||||
endif()
|
||||
|
||||
@@ -208,12 +208,12 @@ if (FILAMENT_BUILD_TESTING)
|
||||
test/test_Status.cpp
|
||||
)
|
||||
|
||||
if (WEBGL_PTHREADS)
|
||||
if (WASM_PTHREADS)
|
||||
target_compile_definitions(${TARGET} PUBLIC -DFILAMENT_WASM_THREADS)
|
||||
endif()
|
||||
|
||||
# The Path tests are platform-specific
|
||||
if (NOT WEBGL)
|
||||
if (NOT WASM)
|
||||
if (WIN32)
|
||||
list(APPEND TEST_SRCS test/test_WinPath.cpp)
|
||||
else()
|
||||
@@ -231,7 +231,7 @@ endif()
|
||||
# Benchmarks
|
||||
# ==================================================================================================
|
||||
|
||||
if (FILAMENT_BUILD_TESTING AND NOT WEBGL)
|
||||
if (FILAMENT_BUILD_TESTING AND NOT WASM)
|
||||
|
||||
add_library(benchmark_${TARGET}_callee SHARED benchmark/benchmark_callee.cpp)
|
||||
set_target_properties(benchmark_${TARGET}_callee PROPERTIES FOLDER Benchmarks)
|
||||
|
||||
@@ -57,7 +57,7 @@ install(DIRECTORY ${PUBLIC_HDR_DIR}/viewer DESTINATION include)
|
||||
# ==================================================================================================
|
||||
# Tests
|
||||
# ==================================================================================================
|
||||
if (FILAMENT_BUILD_TESTING AND NOT ANDROID AND NOT WEBGL AND NOT IOS)
|
||||
if (FILAMENT_BUILD_TESTING AND NOT ANDROID AND NOT WASM AND NOT IOS)
|
||||
add_executable(test_settings tests/test_settings.cpp)
|
||||
target_link_libraries(test_settings PRIVATE ${TARGET} gtest)
|
||||
set_target_properties(test_settings PROPERTIES FOLDER Tests)
|
||||
|
||||
2
third_party/clang/iOS.cmake
vendored
2
third_party/clang/iOS.cmake
vendored
@@ -21,6 +21,8 @@ if(PLATFORM_NAME STREQUAL "iphonesimulator")
|
||||
add_definitions(-DFILAMENT_IOS_SIMULATOR)
|
||||
# The simulator only supports iOS >= 13.0
|
||||
set(IOS_MIN_TARGET "13.0")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -target ${IOS_ARCH}-apple-ios${IOS_MIN_TARGET}-simulator")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -target ${IOS_ARCH}-apple-ios${IOS_MIN_TARGET}-simulator")
|
||||
endif()
|
||||
|
||||
SET(CMAKE_SYSTEM_NAME Darwin)
|
||||
|
||||
4
third_party/libwebp/tnt/CMakeLists.txt
vendored
4
third_party/libwebp/tnt/CMakeLists.txt
vendored
@@ -15,11 +15,11 @@ set(WEBP_BUILD_WEBPMUX OFF)
|
||||
set(WEBP_BUILD_EXTRAS OFF)
|
||||
set(WEBP_BUILD_FUZZTEST OFF)
|
||||
|
||||
if (WEBGL)
|
||||
if (WASM)
|
||||
set(WEBP_BUILD_WEBP_JS ON)
|
||||
set(WEBP_ENABLE_SIMD OFF)
|
||||
# ensure non-empty config var value
|
||||
if (WEBGL_PTHREADS)
|
||||
if (WASM_PTHREADS)
|
||||
set(WEBP_USE_THREAD ON)
|
||||
else()
|
||||
set(WEBP_USE_THREAD OFF)
|
||||
|
||||
@@ -5,7 +5,7 @@ This directory contains the web-based samples, tutorials, and the JavaScript wra
|
||||
## Structure
|
||||
|
||||
- `examples/`
|
||||
Contains the source for the WebGL tutorials, HTML samples, materials, and assets.
|
||||
Contains the source for the Web tutorials, HTML samples, materials, and assets.
|
||||
These examples use `filament.js` and `filament.wasm` to demonstrate various features of the engine.
|
||||
|
||||
- `filament-js/`
|
||||
@@ -13,7 +13,7 @@ This directory contains the web-based samples, tutorials, and the JavaScript wra
|
||||
|
||||
## Building the Web Examples
|
||||
|
||||
To build the WebGL targets and compile all required materials and assets, you will need the Emscripten SDK installed and activated.
|
||||
To build the Web targets and compile all required materials and assets, you will need the Emscripten SDK installed and activated.
|
||||
|
||||
1. **Activate Emscripten SDK:**
|
||||
Make sure you have `EMSDK` in your environment.
|
||||
@@ -24,15 +24,15 @@ To build the WebGL targets and compile all required materials and assets, you wi
|
||||
```
|
||||
|
||||
2. **Run the Build Script:**
|
||||
From the root directory of the repository, execute the build script targeting WebGL:
|
||||
From the root directory of the repository, execute the build script targeting Web:
|
||||
```bash
|
||||
./build.sh -p webgl release
|
||||
./build.sh -p wasm release
|
||||
```
|
||||
|
||||
This will:
|
||||
- Compile the C++ engine to `filament.wasm` and `filament.js`.
|
||||
- Build all materials (`.mat` to `.filamat`) and process textures required by the examples.
|
||||
- Output everything into `out/cmake-webgl-release/examples/`.
|
||||
- Output everything into `out/cmake-wasm-release/examples/`.
|
||||
|
||||
## Running the Examples
|
||||
|
||||
@@ -71,7 +71,7 @@ If you want your web sample or tutorial to appear on the official Filament docum
|
||||
Add your generated `.html` or `.md` file to the mapping in `docs_src/build/duplicates.json`. This
|
||||
tells the documentation build script to copy your sample into the `mdbook` structure.
|
||||
```json
|
||||
"out/cmake-webgl-release/web/examples/examples/your_sample/your_sample.html": {
|
||||
"out/cmake-wasm-release/web/examples/examples/your_sample/your_sample.html": {
|
||||
"dest": "samples/web/your_sample.md"
|
||||
}
|
||||
```
|
||||
|
||||
@@ -42,7 +42,7 @@ def find_examples_dir():
|
||||
examples_dir = find_examples_dir()
|
||||
|
||||
if not examples_dir:
|
||||
print("Could not find the built examples directory in out/. Please build the webgl target first.", file=sys.stderr)
|
||||
print("Could not find the built examples directory in out/. Please build the wasm target first.", file=sys.stderr)
|
||||
# fallback to web/examples for testing, though it won't have the built assets
|
||||
examples_dir = str(SCRIPT_DIR)
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ set(CPP_SRC
|
||||
# The emcc options are not documented well, the best place to find them is the source:
|
||||
# https://github.com/kripken/emscripten/blob/main/src/settings.js
|
||||
|
||||
if (WEBGL_PTHREADS)
|
||||
if (WASM_PTHREADS)
|
||||
set(COPTS "${COPTS} -pthread")
|
||||
set(LOPTS "${LOPTS} -pthread")
|
||||
endif()
|
||||
|
||||
@@ -22,7 +22,7 @@ To publish a new package to npm, do the following.
|
||||
3. Edit the version number in `package.json`. You cannot publish the same version more than once.
|
||||
4. From the root folder in your Filament repo, do:
|
||||
```
|
||||
./build.sh -ap webgl release
|
||||
./build.sh -ap wasm release
|
||||
./build.sh -ap all release
|
||||
```
|
||||
5. Make a commit and a tag whose label is the 3-tiered version number prefixed with a `v`:
|
||||
@@ -36,7 +36,7 @@ git commit && git tag -a v{XX}.{YY}.{ZZ}
|
||||
:---: | :---
|
||||
|
||||
```
|
||||
cd out/cmake-webgl-release/web/filament-js
|
||||
cd out/cmake-wasm-release/web/filament-js
|
||||
npm publish --dry-run
|
||||
```
|
||||
8. If the output of the dry run looks okay to you (double check the version number!), then finally
|
||||
|
||||
@@ -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 webgl release", or do:
|
||||
* invoke Filament's easy build script with "./build.sh -up wasm release", or do:
|
||||
*
|
||||
* npx tsc --noEmit \
|
||||
* ../../third_party/gl-matrix/gl-matrix.d.ts \
|
||||
|
||||
Reference in New Issue
Block a user