A Former Impeller Engineer Built a Full 3D Engine Inside Flutter
Flutter teams that needed 3D previously had to embed Unity or a native engine via PlatformView, losing seamless compositing and adding platform-specific complexity. flutter_scene keeps everything inside Flutter's render tree, so 3D content can be mixed with standard UI, overlaid, clipped, and deployed across mobile, desktop, and even HarmonyOS through custom embedders.
flutter_scene implements its own scene graph, material system, animation blending, and a forward renderer with SSAO, SSR, cascaded shadow maps, and post-processing. It imports glTF models, compiles custom `.fmat` shaders, and runs physics via Rapier or Box3D backends. A BVH acceleration structure handles frustum culling and per-object light assignment, while a flat `RenderItem` list feeds the GPU instead of walking the scene tree every frame.
The engine composites directly into Flutter's Canvas, so 3D views participate in standard layout, clipping, and overlay with 2D widgets. Each `SceneView` gets its own off-screen texture and RenderGraph, enabling picture-in-picture, split-screen cameras, and mixed 2D/3D UI. A standout feature places real Flutter widgets onto 3D surfaces, though the current CPU readback path makes high-resolution dynamic panels expensive.
Built by a former Impeller engineer after leaving Google, the project ships with a scene editor, MCP agent interface, and build-time asset preprocessing. It already runs a Minecraft-style demo entirely on Flutter GPU, filling a gap the official framework never addressed.
A former Impeller engineer leaving Google and then shipping the 3D engine Flutter never had is a sharp data point on how organizational constraints, not technical impossibility, often block platform features.
The decision to keep the RenderGraph as a simple ordered pass list rather than a full graph compiler is pragmatic for a still-evolving GPU API, but it will become a bottleneck if the pass count grows significantly.
Embedding Flutter widgets into 3D scenes is the project's most distinctive capability and its biggest performance trap: the CPU round-trip per capture makes high-frequency dynamic UI impractical until a zero-copy path exists.
Object-level forward rendering with BVH-based light assignment sidesteps the complexity of clustered deferred shading while still avoiding per-fragment light loops, a sensible tradeoff for mobile-first targets.
The discussion orbits around flutter_scene's debut at FlutterCon USA 2026, with one person noting the project's long development arc before its polished conference reveal. A separate thread laments the absence of YouTube recordings from the event, singling out multi-window support as a topic of interest. The sheer ambition of a full 3D engine inside Flutter draws a mix of disbelief and amusement, while a lone question asks whether Toyota's own game engine effort has stalled.
This is insane. I wake up and Flutter has become a game engine.