Romain Guy, a developer on the Android graphics team, just released Filament, an open source Apache 2.0 licensed PBR based renderer for Android, Linux, MacOS and Windows. Filament was designed to be as small as possible and with optimal performance on Android.
The renderer currently possesses the following features:
APIs
- Native C++ API for Android, Linux, macOS and Windows
- Java/JNI API for Android, Linux, macOS and Windows
Backends
- OpenGL 4.1+ for Linux, macOS and Windows
- OpenGL ES 3.0+ for Android
- Vulkan 1.0 for Android, Linux, macOS (with MoltenVk) and Windows
Rendering
- Clustered forward renderer
- Cook-Torrance microfacet specular BRDF
- Lambertian diffuse BRDF
- HDR/linear lighting
- Metallic workflow
- Clear coat
- Anisotropic lighting
- Approximated translucent (subsurface) materials (direct and indirect lighting)
- Cloth shading
- Normal mapping & ambient occlusion mapping
- Image-based lighting
- Physically-based camera (shutter speed, sensitivity and aperture)
- Physical light units
- Point light, spot light and directional light
- ACES-like tone-mapping
- Temporal dithering
- FXAA or MSAA
- Dynamic resolution (on Android)
The Filament renderer is currently used in the Sceneform ARCore augmented reality framework. Filament is exceedingly well documented and is a great read for anyone working on a renderer, even if you have little interest in using Filament in your own project. The Github page contains documentation on getting started and the source contains several examples on how to use Filament.