Home
Softono

React Native Filament

Open source MIT C++
1.3K
Stars
50
Forks
45
Issues
13
Watchers
2 months
Last Commit

 About React Native Filament

๐Ÿง A real-time physically based 3D rendering engine for React Native

Platforms

Web Self-hosted iOS Android

Languages

C++

Need Help Installing React Native Filament?

We provide expert installation service for this software. Our team will install, configure, and secure React Native Filament on your server. plans start at just $30.

React Native Filament

View on GitHub
react-native-filament

Features

react-native-filament is a powerful 3D rendering engine for React Native. It features:

  • ๐ŸงŠ Native C++ physically based rendering using filament
  • ๐Ÿ€ Native C++ physics using bullet3
  • ๐ŸŽ๏ธ GPU-accelerated by Metal and OpenGL/Vulkan
  • ๐Ÿ“น Renders on separate Threads
  • ๐Ÿ“ฆ Easy to use reactive declarative API
  • ๐Ÿ“š Well documented
  • โœ… Supports old and new arch

Installation

See the installation guide in the docs.

Example

import { FilamentScene, FilamentView, Model, Camera, DefaultLight } from 'react-native-filament'

function App() {
  return (
    <FilamentScene>
      <FilamentView
        style={{ width: 100, height: 100 }}
        model={model}
      >

        {/* Render with the default camera and light: */}
        <Camera />
        <DefaultLight >

        {/* Add a model to the scene (only glb supported yet): */}
        <Model source={require('./duck.glb')}>

      </FilamentView>
    </FilamentScene>
  )
}

See the example app

Comparison with other libraries

One library to render 3D content is expo-gl usually used together with expo-three. react-native-filament has a few advantages over expo-gl:

  • Supports using glb files out of the box
  • On iOS react-native-filament uses Metal, where expo-gl is using the deprecated OpenGL ES apple framework
  • The rendering happens on the JS thread for expo-three, where react-native-filament uses a separate thread (and filament processes the rendering commands in a pool of different threads)
  • filament is battle tested and react-native-filament is used in production apps with millions of users already, proven to be highly stable

Contributing

We welcome contributions to react-native-filament! ๐ŸŽ‰

After cloning the repo make sure you have the submodules clones as well:

git submodule update --init --recursive --depth 1

Install all node modules (including the examples)

cd package
bun i

And finally build filament and bullet3:

# Inside ./package
bun build-bullet3
bun build-filament:release # or yarn build-filament:debug

You can then build one of the example apps in package/example/AppExamplePaper or package/example/AppExampleFabric.

Note: If building filament fails for you, you can download the pre-built binaries from the npm package. Simply run bun setup-filament-quick. The binaries will be in release build and any edits in /filament will be ignored (as you're not building from source in this case).

Adopting at scale

react-native-filament is provided as is.

If you need help with integrating react-native-filament in your app or have additional bugfixing or feature requests, reach out to us at margelo.com.

Socials

Attributions & thanks

Slay

react-native-filament was built for- and mostly funded by Slay - the creators of Pengu! ๐Ÿง Without them, react-native-filament wouldn't exist, so thanks Slay! โค๏ธ

Filament and Bullet3

react-native-filament uses filament (an amazing library by Google), and bullet3 (an amazing physics library by Bullet Physics). Without those core libraries and the geniuses behind them, react-native-filament wouldn't exist - so thanks Google & Bullet! โค๏ธ

Copyrights

The example app in this project uses several free assets: