1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors_trending-filament

Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Филамент

Статус сборки для Android Статус сборки для iOS Статус сборки для Linux Статус сборки для macOS Статус сборки для Windows Статус сборки для веб-платформы

Филамент — это движок рендеринга на основе физики для Android, iOS, Linux, macOS, Windows и WebGL. Он разработан для того, чтобы быть как можно более компактным и эффективным на платформе Android.

Скачивание

Скачайте релизы Filament, чтобы получить доступ к стабильным сборкам. Архивы релизов Filament содержат инструменты для хоста, которые необходимы для генерации активов.

Убедитесь, что вы всегда используете инструменты из того же релиза, что и библиотека выполнения. Это особенно важно для matc (компилятор материалов).

Если вы предпочитаете собрать Filament самостоятельно, обратитесь к нашей руководству по сборке.

Android

Проекты Android могут просто объявить библиотеки Filament как зависимости Maven:```gradle repositories { // ... mavenCentral() }

dependencies { implementation 'com.google.android.filament:filament-android:1.61.0' } ```Вот все доступные библиотеки в группе com.google.android.filament:

Артефакт Описание
[! filament-android](https://maven-badges.herokuapp.com/maven-central/com.google.android.filament/filament-android) Сам движок рендеринга Filament.
[! filament-android-debug](https://maven-badges.herokuapp.com/maven-central/com.google.android.filament/filament-android-debug) Отладочная версия filament-android.
[! gltfio-android](https://maven-badges.herokuapp.com/maven-central/com.google.android.filament/gltfio-android) Загрузчик glTF 2.0 для Filament, зависит от filament-android.
[! filament-utils-android](https://maven-badges.herokuapp.com/maven-central/com.google.android.filament/filament-utils-android) Загрузка KTX, математика на Kotlin и утилиты камеры, зависит от gltfio-android.
[! filamat-android](https://maven-badges.herokuapp.com/maven-central/com.google.android.filament/filamat-android) Билдер/компилятор материалов в режиме выполнения. Эта библиотека большая, но содержит полный компилятор шейдеров/валидатор/оптимизатор и поддерживает как OpenGL, так и Vulkan.
[! filamat-android-lite](https://maven-badges.herokuapp.com/maven-central/com.google.android.filament/filamat-android-lite) Упрощенная версия filamat-android.
pod 'Filament', '~> 1.61.0'

Документация

  • Filament — подробное объяснение реального времени физически базированного рендеринга, графических возможностей и реализации Filament. Этот документ объясняет математику и логику большинства наших решений. Этот документ является хорошим введением в физически базированный рендеринг для графических программистов.
  • Материалы — полное справочное руководство для нашей системы материалов. Этот документ объясняет наши различные модели материалов, как использовать компилятор материалов matc и как писать пользовательские материалы.
  • Свойства материалов, справочная таблица для стандартной модели материала.

Примеры

Ночной сцены Ночной сцены Материалы Материалы Шлем Screen-space refraction

Функции

API

  • Нативный C++ API для Android, iOS, Linux, macOS и Windows
  • Java/JNI API для Android
  • JavaScript API

Бэкенды

  • OpenGL 4.1+ для Linux, macOS и Windows

  • OpenGL ES 3.0+ для Android и iOS

  • Metal для macOS и iOS

  • Vulkan 1.0 для Android, Linux, macOS и Windows

  • WebGL 2.0 для всех платформ### Рендеринг

  • Кластерный фронтенд рендерер

  • Cook-Torrance микроповерхностный спекулятивный BRDF

  • Lambertian диффузный BRDF

  • Пользовательское освещение/поверхностное затенение

  • HDR/линейное освещение

  • Металлический рабочий процесс

  • Прозрачный слой

  • Анизотропное освещение

  • Приближенный транслюцированный (субповерхностный) материал

  • Рендеринг тканей/текстиля/блеска

  • Нормальное отображение и отображение окружения

  • Изображение-базированное освещение

  • Физически-базированный объектив (скорость затвора, чувствительность и диафрагма)

  • Физические единицы света

  • Точечные, направленные и сфокусированные источники света

  • Спекулятивное анти-алиасирование

  • Точечные, сфокусированные и направленные тени

  • Каскадные тени

  • EVSM, PCSS, DPCF или PCF тени

  • Прозрачные тени

  • Контактные тени

  • Screen-space ambient occlusion

  • Screen-space reflections

  • Screen-space refraction

  • Глобальная дымка

  • Динамическое разрешение (с поддержкой AMD FidelityFX FSR)

Постобработка

  • HDR размытие

  • Глубина резкости (боке)

  • Множественные карты тона: универсальная (настраиваемая), ACES, кинематографическая, и т.д.

  • Управление цветом и тоном: масштабирование яркости, отображение цветового пространства

  • Градация цвета: экспозиция, адаптация к ночному режиму, баланс белого, миксер каналов, тени/средние тона/высокие тона, ASC CDL, контраст, насыщенность, и т.д.

  • TAA, FXAA, MSAA

  • Эффекты линз на экране### glTF 2.0

  • Кодировки

    • Встроенные
    • Бинарные
  • Типы примитивов

    • Точки
    • Линии
    • Линии в кольце
    • Линии в полосе
    • Треугольники
    • Треугольники в полосе
    • Треугольники в венке
  • Анимация

    • Анимация трансформации
    • Линейная интерполяция
    • Анимация морфа
      • Спиральная доступность
    • Анимация скина
    • Анимация суставов
  • Расширения

    • KHR_draco_mesh_compression
    • KHR_lights_punctual
    • KHR_materials_clearcoat
    • KHR_materials_emissive_strength
    • KHR_materials_ior
    • KHR_materials_pbrSpecularGlossiness
    • KHR_materials_sheen
    • KHR_materials_transmission
    • KHR_materials_unlit
    • KHR_materials_variants
    • KHR_materials_volume
    • KHR_materials_specular
    • KHR_mesh_quantization
    • KHR_texture_basisu
    • KHR_texture_transform
    • EXT_meshopt_compression

Рендеринг с использованием Filament

Нативная Linux, macOS и Windows

Вы должны создать Engine, Renderer и SwapChain. SwapChain создается из указателя на нативное окно (например, NSView на macOS или HWND на Windows):

Engine* engine = Engine::create();
SwapChain* swapChain = engine->createSwapChain(nativeWindow);
Renderer* renderer = engine->createRenderer();

Чтобы отрендерить кадр, вам нужно создать View, Scene и Camera:

Camera* camera = engine->createCamera(EntityManager::get().create());
View* view = engine->createView();
Scene* scene = engine->createScene();

view->setCamera(camera);
view->setScene(scene);

Рендерабельные объекты добавляются в сцену:```c++ Entity renderable = EntityManager::get().create(); // создание квадрата RenderableManager::Builder(1) .boundingBox({{ -1, -1, -1 }, { 1, 1, 1 }}) .material(0, materialInstance) .geometry(0, RenderableManager::PrimitiveType::TRIANGLES, vertexBuffer, indexBuffer, 0, 6) .culling(false) .build(*engine, renderable); scene->addEntity(renderable);

Материальный экземпляр получается из материала, сам загруженного из двоичного блока, сгенерированного командой `matc`:```c++
Material* material = Material::Builder()
        .package((void*) BAKED_MATERIAL_PACKAGE, sizeof(BAKED_MATERIAL_PACKAGE))
        .build(*engine);
MaterialInstance* materialInstance = material->createInstance();

Для получения дополнительной информации о материалах и matc обратитесь к документации по материалам.

Для рендеринга просто передайте View в Renderer:

// beginFrame() возвращает false, если нам нужно пропустить кадр
if (renderer->beginFrame(swapChain)) {
    // для каждого View
    renderer->render(view);
    renderer->endFrame();
}

Для полных примеров приложений Filament для Linux, macOS и Windows просмотрите исходные файлы в директории samples/. Эти примеры основаны на libs/filamentapp/, который содержит код для создания нативного окна с помощью SDL2 и инициализации движка Filament, рендерера и представлений.

Для получения дополнительной информации о подготовке карт окружающей среды для освещения на основе изображений обратитесь к BUILDING.md.

Android

Для примеров использования Filament на Android просмотрите директорию android/samples.

Вы всегда должны инициализировать Filament вызовом Filament.init().Рендеринг с использованием Filament на Android похож на рендеринг из нативного кода (API в основном одинаковы для всех языков). Вы можете рендерить в Surface, передав Surface в метод createSwapChain. Это позволяет вам рендерить в SurfaceTexture, TextureView или SurfaceView. Для упрощения задачи мы предоставляем специфическую для Android API под названием UiHelper в пакете com.google.android.filament.android. Все, что вам нужно сделать, это установить обработчик рендера на помощнике и подключить ваш SurfaceView или TextureView к нему. Вы все равно отвечаете за создание цепочки обмена в методе onNativeWindowChanged().### iOS

Filament поддерживается на iOS 11.0 и выше. Для примеров использования Filament на iOS просмотрите директорию ios/samples.

Использование Filament на iOS в основном аналогично нативному рендерингу с использованием C++. CAEAGLLayer или CAMetalLayer передаются в метод createSwapChain. Filament для iOS поддерживает как Metal (предпочтительно), так и OpenGL ES.

Активы

Чтобы начать работу, вы можете использовать текстуры и карты окружения, найденные соответственно в директориях third_party/textures и third_party/environments. Эти активы находятся под лицензией CC0. Пожалуйста, см. соответствующие файлы URL.txt, чтобы узнать больше о первоначальных авторах.

Окружения должны быть предварительно обработаны с помощью cmgen или с помощью библиотеки libiblprefilter.

Как сделать вклады

Пожалуйста, прочитайте и следуйте шагам в CONTRIBUTING.md. Убедитесь, что вы знакомы с стилем кода.

Структура директорийЭтот репозиторий содержит не только ядро Filament, но и его поддерживаемые библиотеки и инструменты.

  • android: Библиотеки и проекты для Android
    • filamat-android: Библиотека для генерации материалов Filament (AAR) для Android
    • filament-android: Библиотека Filament (AAR) для Android
    • filament-utils-android: Дополнительные утилиты (KTX loader, математические типы данных и т. д.)
    • gltfio-android: Библиотека для загрузки glTF Filament (AAR) для Android
    • samples: Примеры для Filament, специфические для Android
  • art: Источник для различных произведений искусства (логотипы, PDF-руководства и т. д.)
  • assets: 3D-активы для использования с примерами приложений
  • build: Скрипты сборки CMake
  • docs: Документация
    • math: Mathematica-ноутбуки для исследования BRDF, уравнений и т. д.
  • filament: Ядро Filament (минимальные зависимости)
    • backend: Бэкенды рендеринга/драйверы (Vulkan, Metal, OpenGL/ES)
  • ide: Файлы конфигурации для IDE (CLion и т. д.)
  • ios: Примеры проектов для iOS
  • libs: Библиотеки
    • bluegl: Биндинги OpenGL для macOS, Linux и Windows
    • bluevk: Биндинги Vulkan для macOS, Linux, Windows и Android
    • camutils: Утилиты для манипуляции камерой
    • filabridge: Библиотека, используемая Filament engine и утилитами хоста
    • filaflat: Библиотека сериализации/десериализации для материалов
    • filagui: Помощник библиотеки для Dear ImGuicom/ocornut/imgui)
      • filamat: Библиотека для генерации материалов
      • filamentapp: Шаблон SDL2 для создания примеров приложений
      • filameshio: Маленькая библиотека для парсинга filamesh (см. также tools/filamesh)
      • geometry: Утилиты, связанные с сеткой
      • gltfio: Загрузчик для glTF 2.0
      • ibl: Утилиты для генерации IBL
      • image: Фильтрация изображений и простые трансформации
      • imageio: Чтение/запись файлов изображений, предназначенное только для внутреннего использования
      • matdbg: DebugServer для анализа шейдеров в режиме реального времени (только для отладочных сборок)
      • math: Математическая библиотека
      • mathio: Поддержка математических типов данных для выходных потоков
      • utils: Утилитная библиотека (потоки, память, структуры данных и т. д.)
      • viewer: Библиотека для просмотра glTF (требуется gltfio)
    • samples: Примеры десктопных приложений
    • shaders: Шейдеры, используемые в filamat и matc
    • third_party: Внешние библиотеки и активы
      • environments: Окружения-карты, лицензированные под CC0, которые можно использовать с cmgen
      • models: Модели под лицензиями с открытым доступом
      • textures: Текстуры, лицензированные под CC0
    • tools: Инструменты для хоста
      • cmgen: Генератор активов на основе изображений
      • filamesh: Конвертер сеток - glslminifier: Сжатие исходного кода GLSL
      • matc: Компилятор материалов
      • matinfo: Отображает информацию о материалах, скомпилированных с помощью matc
      • mipgen: Генерирует серию мип-уровней из исходного изображения
      • normal-blending: Инструмент для смешивания карт нормалей
      • resgen: Агрегирует двоичные блобы в встраиваемые ресурсы
      • roughness-prefilter: Предфильтрация карты шероховатости из карты нормалей для уменьшения алиасинга
      • specular-color: Вычисляет цвет спекуляции проводников на основе спектральных данных
    • web: JavaScript-биндинги, документация и примеры

ЛицензияПожалуйста, обратитесь к LICENSE.

Отказ от ответственности

Это не официально поддерживаемый продукт Google.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/mirrors_trending-filament.git
git@api.gitlife.ru:oschina-mirror/mirrors_trending-filament.git
oschina-mirror
mirrors_trending-filament
mirrors_trending-filament
main