Чтобы собрать Filament, вам необходимо сначала установить следующие инструменты:
Дополнительные зависимости могут потребоваться для вашей операционной системы. Пожалуйста, обратитесь к соответствующему разделу ниже.
Чтобы собрать Filament для Android, вам также необходимо установить следующее:
Чтобы собрать Filament для Android, убедитесь, что переменная окружения ANDROID_HOME
указывает на расположение вашего Android SDK.
При сборке для WebGL вам также потребуется установить EMSDK
. См. WebAssembly.
Мы рекомендуем использовать CLion для разработки Filament. Просто откройте файл CMakeLists.txt корневого каталога в CLion, чтобы получить рабочий проект.
После установки необходимых зависимостей для вашей операционной системы, вы можете использовать скрипт, расположенный в build.sh
, чтобы легко собрать Filament на macOS и Linux.
Этот скрипт можно запустить из любого места, и он будет создавать сборочные артефакты в директории out/
внутри дерева исходного кода Filament.Чтобы запустить ускоренную отладочную сборку:
./build.sh debug
Чтобы запустить ускоренную релизную сборку:
./build.sh release
Чтобы запустить как ускоренную отладочную, так и релизную сборки:
./build.sh debug release
Если сборка не удалась по каким-либо причинам, она может оставить директорию out/
в нерабочем состоянии. Вы можете принудительно выполнить чистую сборку, добавив флаг -c
в этом случае.
Чтобы установить библиотеки и исполняемые файлы в out/debug/
и out/release/
, добавьте флаг -i
. Скрипт предлагает больше функций, описанных выполнением build.sh -h
.
Следующие опции CMake являются булевыми опциями, специфичными для Filament:
FILAMENT_ENABLE_LTO
: Включить оптимизацию времени связи, если это поддерживается компиляторомFILAMENT_BUILD_FILAMAT
: Собрать filamat и JNI сборкиFILAMENT_SUPPORTS_OPENGL
: Включить бэкенд OpenGLFILAMENT_SUPPORTS_METAL
: Включить бэкенд MetalFILAMENT_SUPPORTS_VULKAN
: Включить бэкенд VulkanFILAMENT_INSTALL_BACKEND_TEST
: Установить библиотеку тестирования бэкенда, чтобы она могла использоваться на iOSFILAMENT_USE_EXTERNAL_GLES3
: Экспериментальная: Скомпилировать Filament против OpenGL ES 3FILAMENT_SKIP_SAMPLES
: Не собирать образцы приложенийЧтобы включить или отключить опцию:
cd <cmake-build-directory>
cmake . -DOPTION=ON # Замените OPTION на имя опции, установите ON / OFF
```Опции также могут быть установлены с помощью графического интерфейса CMake.
### Linux
Убедитесь, что у вас установлены следующие зависимости:
- `clang-14` или более поздняя версия
- `libglu1-mesa-dev`
- `libc++-14-dev` (`libcxx-devel` и `libcxx-static` на Fedora) или более поздняя версия
- `libc++abi-14-dev` (`libcxxabi-static` на Fedora) или более поздняя версия
- `ninja-build`
- `libxi-dev`
- `libxcomposite-dev` (`libXcomposite-devel` на Fedora)
- `libxxf86vm-dev` (`libXxf86vm-devel` на Fedora)
```shell
sudo apt install clang-14 libglu1-mesa-dev libc++-14-dev libc++abi-14-dev ninja-build libxi-dev libxcomposite-dev libxxf86vm-dev -y
После установки зависимостей мы настоятельно рекомендуем использовать скрипт быстрой сборки.
Если вы хотите запустить cmake
напрямую, а не использовать скрипт сборки, его можно вызвать следующим образом, с некоторыми оговорками, которые объясняются ниже.
mkdir out/cmake-release
cd out/cmake-release
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=../release/filament ../..
Ваша дистрибутив Linux может по умолчанию использовать gcc
вместо clang
. В этом случае вызов cmake
следует выполнить следующей командой:
mkdir out/cmake-release
cd out/cmake-release
# Или используйте конкретную версию clang, например /usr/bin/clang-14
CC=/usr/bin/clang CXX=/usr/bin/clang++ CXXFLAGS=-stdlib=libc++ \
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=../release/filament ../..
Вы также можете экспортировать переменные окружения CC
и CXX
, чтобы они всегда указывали на clang
. Другим решением является использование update-alternatives
, чтобы изменить стандартный компилятор и указать на конкретную версию clang:```shell
update-alternatives --install /usr/bin/clang clang /usr/bin/clang-14 100
update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-14 100
update-alternatives --install /usr/bin/cc cc /usr/bin/clang 100
update-alternatives --install /usr/bin/c++ c++ /usr/bin/clang++ 100
Наконец, запустите `ninja`:
```shell
ninja
Это соберет Filament, его тесты и образцы, а также различные утилиты для хоста.
Чтобы скомпилировать Filament, вам необходимо установить последнюю версию Xcode и убедиться, что инструменты командной строки настроены, запустив:
xcode-select --install
Если вы хотите запустить бэкенд Vulkan вместо стандартного бэкенда Metal, вам необходимо установить LunarG SDK, включить "System Global Components" и перезагрузить вашу машину.
Затем запустите cmake
и ninja
для запуска сборки:
mkdir out/cmake-release
cd out/cmake-release
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=../release/filament ../..
ninja
Наиболее простым способом сборки Filament для iOS является использование build.sh
и флага -p ios
. Например, чтобы собрать отладочную цель:
./build.sh -p ios debug
Дополнительная информация доступна в ios/samples/README.md.
Установите следующие компоненты:
По умолчанию Windows рассматривает файловую систему как нечувствительную к регистру. Пожалуйста, не включайте чувствительность к регистру в вашем репозитории, так как это не соответствует ожиданиям CMake. Это можно проверить с помощью fsutil.exe file queryCaseSensitiveInfo
.
Затем откройте x64 Native Tools Command Prompt for VS 2019
, создайте рабочую директорию и запустите CMake в ней:
mkdir out
cd out
cmake ..
Откройте сгенерированный файл решения TNT.sln
в Visual Studio.
Чтобы собрать все цели, выполните Сборка решения из меню Сборка. В качестве альтернативы, щелкните правой кнопкой мыши на цели в Solution Explorer и выберите Сборка для сборки конкретной цели.
Например, соберите образец material_sandbox
и запустите его из директории out
с помощью:
samples\Debug\material_sandbox.exe ..\assets\models\monkey\monkey.obj
Вы также можете использовать CMake для запуска сборки без открытия Visual Studio. Например, из директории out
выполните следующую команду.
cmake --build . --target gltf_viewer --config Release
Filament может быть собран для следующих архитектур:
arm64-v8a
)armeabi-v7a
)x86_64
)x86
)Обратите внимание, что основная цель — это архитектура ARM 64-бит. Наша реализация оптимизирована в первую очередь для arm64-v8a
.Чтобы собрать Android на Windows-машинах, см. android/Windows.md.
Легкий способ сборки Filament для Android — использовать build.sh
и флаг -p android
. Например, чтобы собрать целевой объект release:
./build.sh -p android release
Вызовите build.sh -h
для получения дополнительной информации.
Вызовите CMake в директории сборки по вашему выбору, внутри директории filament. Команды ниже показывают, как собрать Filament для ARM 64-бит (aarch64
).
mkdir out/android-build-release-aarch64
cd out/android-build-release-aarch64
cmake -G Ninja -DCMAKE_TOOLCHAIN_FILE=../../build/toolchain-aarch64-linux-android.cmake \
-DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=../android-release/filament ../..
Затем вызовите ninja
:
ninja install
или
ninja install/strip
Это сгенерирует Android-бинарники Filament в out/android-release
. Это местоположение важно для сборки проектов Android Studio, расположенных в filament/android
. После установки библиотечные бинарники должны быть найдены в out/android-release/filament/lib/arm64-v8a
.
Перед попыткой сборки AAR убедитесь, что вы скомпилировали и установили native библиотеки, как описано в разделах выше. Вы должны иметь следующие ABI, собранные в out/android-release/filament/lib/
:
arm64-v8a
armeabi-v7a
x86_64
x86
Чтобы собрать AAR Filament, просто открыть проект Android Studio в android/
. AAR — это универсальный AAR, содержащий все поддерживаемые целевые объекты сборки:- arm64-v8a
armeabi-v7a
x86_64
x86
Чтобы исключить ненужные ABI, полагайтесь на abiFilters
проекта, который ссылается на AAR Filament.
В качестве альтернативы вы можете собрать AAR из командной строки, выполнив следующее в директории android/
:```shell
./gradlew -Pcom.google.android.filament.dist-dir=../../out/android-release/filament assembleRelease
Параметр `-Pcom.google.android.filament.dist-dir` можно использовать для указания другого каталога установки (он должен соответствовать префиксу установки CMake, использованному в предыдущих шагах).
#### Использование AAR Filament
Создайте новый модуль в вашем проекте и выберите _Импорт .JAR или .AAR пакета_ при запросе. Убедитесь, что добавили только что созданный модуль как зависимость к вашему приложению.
Если вы не хотите включать все поддерживаемые ABIs, убедитесь, что создали соответствующие вкусы в вашем файле сборки Gradle. Например:
```gradle
flavorDimensions 'cpuArch'
productFlavors {
arm8 {
dimension 'cpuArch'
ndk {
abiFilters 'arm64-v8a'
}
}
arm7 {
dimension 'cpuArch'
ndk {
abiFilters 'armeabi-v7a'
}
}
x86_64 {
dimension 'cpuArch'
ndk {
abiFilters 'x86_64'
}
}
x86 {
dimension 'cpuArch'
ndk {
abiFilters 'x86'
}
}
universal {
dimension 'cpuArch'
}
}
Основная библиотека Filament может быть перекомпилирована в WebAssembly с macOS или Linux. Чтобы начать, следуйте инструкциям по сборке Filament на вашей платформе (macOS или linux), что обеспечит наличие необходимых зависимостей.Затем вам нужно установить Emscripten SDK. Следующие инструкции показывают, как установить ту же версию, что и наша непрерывная сборка.
cd <ваш выбранный родительский каталог для Emscripten SDK>
curl -L https://github.com/emscripten-core/emsdk/archive/refs/tags/3.1.60.zip > emsdk.zip
unzip emsdk.zip ; mv emsdk-* emsdk ; cd emsdk
python ./emsdk.py install latest
python ./emsdk.py activate latest
source ./emsdk_env.sh
В качестве альтернативы вы можете попробовать запустить скрипт build/common/get-emscripten.sh
.
После этого вы можете вызвать скрипт easy build следующим образом:
export EMSDK=<ваш выбранный каталог для Emscripten SDK>
./build.sh -p webgl release
Переменная EMSDK
обязательна, чтобы скрипт сборки мог найти Emscripten SDK. Сборка создает папку samples
, которая может быть использована как корневая папка для простого статического веб-сервера. Обратите внимание, что вы не можете открыть HTML напрямую из файловой системы из-за CORS. Мы рекомендуем использовать инструмент emrun
для создания быстрого локального сервера localhost:
emrun out/cmake-webgl-release/web/samples --no_browser --port 8000
Вы можете открыть http://localhost:8000/suzanne.html в своем веб-браузере.
В качестве альтернативы, если у вас установлена Node.js, вы можете использовать пакет live-server, который автоматически обновляет веб-страницу при обнаружении изменений.
Каждое приложение-пример имеет свой собственный вручную написанный HTML-файл. Дополнительно, папка сервера содержит ресурсы, такие как меши, текстуры и материалы.## Запуск локальных примеров
Папка samples/
содержит несколько примеров использования Filament с SDL2.
Некоторые примеры принимают FBX/OBJ меши, в то время как другие зависят от формата файла filamesh
. Чтобы сгенерировать файл filamesh
из FBX/OBJ активов, запустите инструмент filamesh
(./tools/filamesh/filamesh
в вашей папке сборки):
filamesh ./assets/models/monkey/monkey.obj monkey.filamesh
Большинство примеров принимают IBL, который должен быть сгенерирован с помощью инструмента cmgen
(./tools/filamesh/cmgen
в вашей папке сборки). Эти приложения-примеры ожидают путь к папке, содержащей файлы .rgb32f
для IBL (которые являются PNG-файлами, содержащими данные R11F_G11F_B10F
) или путь к папке, содержащей два файла .ktx
(один для IBL, один для кубической оболочки). Чтобы сгенерировать IBL, просто используйте следующую команду:
cmgen -f ktx -x ./ibls/ my_ibl.exr
Исходная карта окружения может быть PNG (8 или 16 бит), PSD (16 или 32 бит), HDR или файл OpenEXR. Карта окружения может быть равносторонней проекцией, горизонтальным крестом, вертикальным крестом или списком граней кубической карты (горизонтальным или вертикальным).cmgen
автоматически создает папку на основе имени исходной карты окружения. В приведенном выше примере, конечная папка будет ./ibls/my_ibl/
. Эта папка должна содержать предфильтрованную карту окружения (один файл на каждую грань кубической карты и каждый уровень мип-карты), текстуру карты окружения для кубической оболочки и текстовый файл, содержащий гармонические уровни для диффузного отражения света.Если вы предпочитаете размытое фоновое изображение, запустите cmgen
с этим флагом: --extract-blur=0.1
. Числовое значение представляет желаемую степень шероховатости от 0 до 1.
Чтобы сгенерировать документацию, вам сначала нужно установить doxygen
и graphviz
, затем выполните следующие команды:
cd filament/filament
doxygen docs/doxygen/filament.doxygen
Наконец, просто откройте docs/html/index.html
в вашем веб-браузере.
Мы протестировали swiftshader и Mesa для ПО-уровенной растризации на backend'ах Vulkan/GL.
Чтобы использовать это для Vulkan, убедитесь сначала, что SDK Vulkan установлен на вашем компьютере. Если вы выполняете ручную установку SDK на Linux, вам нужно будет запустить setup-env.sh
в корневом каталоге SDK, чтобы убедиться, что загрузчик Vulkan является первой библиотекой, загруженной.
Сначала соберите SwiftShader
git clone https://github.com/google/swiftshader.git
cd swiftshader/build
cmake .. && make -j
и затем установите VK_ICD_FILENAMES
на ICD json, сгенерированный в процессе сборки. Например,
export VK_ICD_FILENAMES=/Users/user/swiftshader/build/Darwin/vk_swiftshader_icd.json
Соберите и запустите Filament как обычно и укажите backend Vulkan при создании Engine.
git clone https://gitlab.freedesktop.org/mesa/mesa.git
sudo apt-get build-dep mesa
Чтобы собрать как GL, так и Vulkan растризаторы,
cd mesa
mkdir -p out
meson setup builddir/ -Dprefix=$(pwd)/out -Dglx=xlib -Dgallium-drivers=swrast -Dvulkan-drivers=swrast
meson install -C builddir/
Для GL нам нужно убедиться, что мы загружаем библиотеку GL из каталога выходных данных mesa. Например, чтобы запустить отладочный gltf_viewer
, мы бы выполнили
LD_LIBRARY_PATH=/пользователь/путь/к/каталогу/выходных/данных/mesa/out/lib/x86_64-linux-gnu \
./out/cmake-debug/samples/gltf_viewer -a opengl
Для Vulkan нам нужно установить путь к ICD json, который указывает загрузчику, где найти библиотеку драйвера. Чтобы запустить gltf_viewer
, мы бы выполнили
VK_ICD_FILENAMES=/пользователь/путь/к/каталогу/выходных/данных/mesa/out/share/vulkan/icd.d/lvp_icd.x86_64.json \
./out/cmake-debug/samples/gltf_viewer -a vulkan
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )