TGViewer
Flutter Pulse Flutter Pulse @flutterpulse · 1.01K subscribers
Post #3065 380
Свет в конце пайплайна: 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
  • ❤ 2
More from @flutterpulse
  1. Sep 30, 2026Как теплотехник в 50 лет стер границу между КИПиА и IT: пишем универсальный Android‑SCADA…
  2. Sep 30, 2026Обновлённые пакеты за последние 24 часа Bones_API 1.17.0 Фреймворк для создания API-бэкенд…
  3. Sep 30, 2026photo post
  4. Sep 29, 2026👣 Как встроить Unity игру во Flutter приложение Flutter — это король интерфейсов, навигац…
  5. Sep 29, 2026Обзор пакетов на тему Machine Learning, OCR & Computer Vision google_mlkit_commons 0.13.0…
  6. Sep 29, 2026Добавляем 3D в игру на Flame, не переписывая её 3D-графика в 2D-играх без переписывания ко…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →