Skip to content

Possibility of adding retained mode scenegraph API and PBR renderer to Flutter? #23690

@DrPaulT

Description

@DrPaulT

Hi,

I've been doing some work with Sceneform and SceneView on Android in Java, and these sort of projects usually involve an Android team using Sceneform and an iOS team creating the same app with SceneKit and ARKit.

As I understand the underpinnings on Android, Filament is the PBR renderer at the bottom of the stack that performs a similar function to Skia in 2D, putting pixels in the framebuffer.

On top of that you have SceneView, which implements a scenegraph API and is really nice to use compared to having to do everything in OpenGL.

Then if you want the integration with ARCore, you can use Sceneform to provide an AR view or fragment with a video background.

I have become interested in Flutter, because it has become clear that developing an app on each of the main platforms is becoming increasing expensive and not cost-effective. But I like doing the 3D stuff for apps and am looking for a cross-platform solution. Unity is not out of the question, but it isn't really suited to doing apps. Threejs is awesome on the web platform, but I really don't like Javascript. A Dart version of Three looked possible but it seems to have come to a stop.

We also heard recently that Filament can run on iOS. I don't know the details, but it looks like there is some automated conversion from Vulkan to Metal that is possible.

So I speculate that it might be possible to create a 3D rendering stack for Flutter that would not add too much size to the runtime and be very nice to use.

I guess the main driver for 3D in apps would probably be AR at the moment. But I'm also starting to see demand for 3D scanning and photogrammetry tech on mobile.

Anyway, let me create this ticket and see if anybody else thinks it might be a good idea 👍

Metadata

Metadata

Assignees

No one assigned

    Labels

    P3Issues that are less important to the Flutter projectc: new featureNothing broken; request for a new capabilityengineflutter/engine related. See also e: labels.frameworkflutter/packages/flutter repository. See also f: labels.team-engineOwned by Engine teamtriaged-engineTriaged by Engine team

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions