Исторически сложилось, что кроссплатформенные фреймворки обеспечивали недостаточно высокое качество графики. Это было связано со сложностями при создании слоя абстракции. В Flutter используется принципиально иной подход: в наборе инструментов предусмотрен собственный слой визуализации, который обеспечивает аппаратное ускорение обработки графики, а изображение сохраняет высокое качество на любом устройстве. В планах инвестировать в обеспечение более высокой скорости обработки графики, что дополнительно расширит уже существующие преимущества Flutter в этом направлении.
На мероприятии Flutter Forward рассказали о новых успехах в области разработки Impeller, механизма визуализации Flutter следующего поколения. Технология Impeller оптимизирована для использования во Flutter. Это обеспечивает дополнительную гибкость работы, широкие возможности для управления графическим конвейером и целый ряд других преимуществ. Impeller дает более стабильную и предсказуемую скорость работы за счет использования предварительно скомпилированных шейдеров. Механизм визуализации использует преимущества примитивов Metal и Vulkan, современных низкоуровневых API платформы iOS и Android. При этом он эффективно использует многозадачный режим работы, распределяет по потокам рабочие нагрузки, которые связаны с обработкой одиночных кадров.
Одно из преимуществ разработки с нуля заключается в том, что архитектура может поддерживать совершенно новые сценарии использования. Недавно была реализована поддержка пользовательских шейдеров, и уже сейчас можно посмотреть примеры полноценной интеграции с иерархией виджетов Flutter. Однако работа в этом направлении не ограничивается только мобильными устройствами: уже реализована ранняя поддержка пользовательских шейдеров для веб‑приложений. Причем один и тот же код теперь отвечает за работу функций с аппаратным ускорением в iOS, Android и в браузере.
Сейчас начинается подготовительная работа над реализацией поддержки 3D‑изображений в Flutter. На Flutter Forward было показано, как можно импортировать модели, созданные в Blender, и даже использовать функцию горячего подключения для выполнения итераций в Blender в режиме реального времени и просмотра результатов непосредственном в работающем приложении. Это только начало. Добавление 3D‑изображений и пользовательских шейдеров позволяет поднять качество графики на новый уровень.