TGStat
TGStat
Введите текст для поиска
Расширенный поиск каналов
  • flag Russian
    Язык сайта
    flag Russian flag English flag Uzbek
  • Вход на сайт
  • Каталог
    Каталог каналов и чатов Региональные подборки Тематические подборки Платные каналы Поиск каналов
    Добавить канал/чат
  • Рейтинги
    Рейтинг каналов Рейтинг чатов Рейтинг публикаций
    Рейтинги брендов и персон
  • Аналитика
  • Поиск по публикациям
  • Мониторинг Telegram
  • Продвижение
    Реклама через Яндекс Бизнес Реклама в каналах через TGStat Agency Реклама на сайте TGStat.ru
Flutter Pulse

9 Sep, 18:05

Открыть в Telegram Поделиться Пожаловаться

Свет в конце пайплайна: 3D-движок на чистом Dart (+gpu)

flutter3d — это полноценный 3D-движок, написанный на чистом Dart. Никакого FFI, никаких нативных библиотек для физики или звука. Всё работает через новый API Flutter GPU, который дает прямой доступ к Metal и Vulkan. Проект уже включает физику, коллизии, аудио-микшер и три играбельные игры, доступные прямо в браузере.

Архитектура построена вокруг слоя аппаратной абстракции (HAL). Это позволяет использовать три взаимозаменяемых бэкенда: Impeller (основной, через Flutter GPU), WebGL2 (для веба) и CPU-растеризатор (чистый Dart без GPU). Последний бэкенд служит эталоном: он позволяет запускать попиксельные тесты в CI без видеокарты, что выявило ошибку в WebGL-бэкенде, где 19% пикселей расходились с эталоном.

⚠️ Flutter GPU накладывает жесткие ограничения. Нет рантайм-компиляции шейдеров — все материалы должны быть известны на этапе сборки. Нельзя сэмплировать depth-текстуры, поэтому карты теней записываются в цветовые буферы. Также есть проблема «stale bindings»: при смене пайплайна старые привязки могут вызывать визуальные артефакты, что решается принудительной очисткой состояния.

💡 Инженерные решения здесь впечатляют. Вместо dirty-флагов используется версионирование трансформаций, что исключает ошибки при обновлении матриц. Горячий цикл кадра оптимизирован под сборщик мусора Dart: нет обхода дерева сцены, списки отрисовки переиспользуются, а ключи сортировки хранятся в типизированных массивах.

⚡️ Производительность на высоте. Десктопный шутер с шестью источниками света, PBR-материалами и эффектом bloom держит 120 FPS даже в debug-сборке на ноутбуке. Реализованы каскадные карты теней, HDR-конвейер с bloom и детерминированная симуляция с фиксированным шагом.

🎮 Практическое применение уже доказано. Игра Coin Climb написана всего на ~600 строк кода, из которых 36 строк — это описание уровня в JSON. Жанровая механика (двойной прыжок, coyote time) вынесена в отдельные пакеты, что позволяет создавать игры без изменения ядра движка.

Проект находится на версии 0.4.0 и активно ищет вкладчиков. Приоритетны новые жанровые пакеты и тестирование на разных GPU. Если вы хотите писать 3D-игры на Dart без выхода за пределы экосистемы Flutter — это стоит попробовать.

🔗 Полезные ссылки
flutter3d на pub.dev
Исходный код на GitHub
Документация и пакеты

🔗 Полезные ссылки
📦 flutter3d
💻 coin_climb
💻 flutter3d
📚 pleion.dev

📰 Читать оригинал на Habr

FlutterPulse — канал о мире Flutter!

#flutter #dart #flutterpulse #flutterpulsehabr

386 0 4 1 2
Каталог
Каталог каналов и чатов Подборки каналов Поиск каналов Добавить канал/чат
Рейтинги
Рейтинг каналов Telegram Рейтинг чатов Telegram Рейтинг публикаций Рейтинги брендов и персон
API
API статистики API поиска публикаций API Callback
Наши каналы
@TGStat @TGStat_Chat @telepulse @TGStatAPI
Почитать
Академия TGStat Исследование Telegram 2019 Исследование Telegram 2021 Исследование Telegram 2023
Контакты
Справочный центр Поддержка Почта Вакансии
Всякая всячина
Пользовательское соглашение Политика конфиденциальности Публичная оферта
Наши боты
@TGStat_Bot @SearcheeBot @TGAlertsBot @tg_analytics_bot @TGStatChatBot