Skip to content

yicong123456/react-native-filament

ย 
ย 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

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
yarn

And finally build filament and bullet3:

# Inside ./package
yarn build-bullet3
yarn 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.

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.io.

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:

About

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

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 89.2%
  • TypeScript 6.4%
  • C 1.2%
  • Objective-C++ 1.0%
  • Java 0.9%
  • Objective-C 0.4%
  • Other 0.9%