A realtime 3D engine for Flutter
Website · Docs · Examples App · FAQ
- This package is in an early preview state. Things may break!
- Relies on Flutter GPU for rendering, which is also in preview state.
- On native platforms this package requires Impeller to be enabled. On the web it runs on a built-in WebGL2 backend instead.
- This package uses the experimental Dart "Native Assets" feature to automate some build tasks.
- Zero-manifest
.fmatmaterial builds use the experimental Dart DataAssets feature. On supported Flutter master builds, enable it withflutter config --enable-dart-data-assets. - Given the reliance on non-production features, Flutter Scene requires the Flutter master channel. Version 0.18.0 needs a master build from 2026-06-09 or later, which is when render-to-mip-level Flutter GPU support landed (flutter/flutter#187685). The
flutterlower bound inpubspec.yamlis set to the latest stable instead (so pub.dev can resolve and score the package), which is looser than the real requirement, so a recent master is what you actually want.
- glTF (.glb) asset import.
- PBR materials.
- Environment maps/image-based lighting.
- Blended animation system.
On native platforms flutter_scene runs anywhere Impeller does. On the web it runs on a built-in WebGL2 backend.
On iOS and Android, Impeller is Flutter's default production renderer. So on these platforms, flutter_scene works without any additional project configuration.
On MacOS, Windows, and Linux, Impeller is able to run, but is not on by default and must be enabled. When invoking flutter run, Impeller can be enabled by passing the --enable-impeller flag.
On the web, no flags are needed; it works under both the CanvasKit and Skwasm renderers.
| Platform | Status |
|---|---|
| iOS | 🟢 Supported |
| Android | 🟢 Supported |
| Web | 🟢 Supported |
| MacOS | 🟡 Preview |
| Windows | 🟡 Preview |
| Linux | 🟡 Preview |
| Custom embedders | 🟢 Supported |
Impeller and Flutter GPU aren't available on the web, so flutter_scene ships a built-in WebGL2 backend (a drop-in for flutter_gpu) and renders through it there. It works under both the CanvasKit and Skwasm web renderers. Web support is new and in preview, so expect rough edges.
This repository is a pub workspace containing the library and the example apps:
| Path | Description |
|---|---|
packages/flutter_scene |
The 3D rendering library, including the offline glTF importer and the web (WebGL2) backend. Published to pub.dev as flutter_scene. |
examples/flutter_app |
Runnable example app exercising the library. |
examples/flutter_gpu_shim_smoke |
Dev-only smoke test for the web backend. |
To run the example app from a fresh clone:
flutter pub get # resolves the workspace
flutter config --enable-native-assets # one-time setup
flutter config --enable-dart-data-assets # one-time setup for DataAssets-backed .fmat materials
cd examples/flutter_app
flutter create . --platforms=macos,ios,android,linux,windows,web # generate gitignored platform stubs
flutter run --enable-flutter-gpu --enable-impeller # native; add `-d <device>` if needed
flutter run -d chrome # web