Introduction
Filament is an open-source real-time physically based rendering (PBR) engine created by Google. It targets mobile platforms first but runs on Android, iOS, Linux, macOS, Windows, and WebGL2, making it a versatile choice for 3D applications and visualization.
What Filament Does
- Renders physically based materials with image-based lighting
- Supports glTF 2.0 model loading out of the box
- Provides a material system with a custom shading language
- Offers post-processing effects like bloom, SSAO, and tone mapping
- Includes tools for baking environment maps and compiling materials
Architecture Overview
Filament uses a retained-mode rendering architecture with a multithreaded backend. The engine abstracts GPU APIs (Vulkan, Metal, OpenGL ES, WebGL) behind a unified driver layer. The material system compiles shader code at build time into optimized per-platform binaries using the matc compiler.
Self-Hosting & Configuration
- Build from source using CMake on Linux/macOS/Windows
- Android builds use Gradle with bundled AAR artifacts
- iOS builds produce universal frameworks via CMake
- Configure rendering quality with Engine::Config at initialization
- Material definitions use .mat files compiled by the matc tool
Key Features
- Mobile-first design with low overhead and small binary size
- Full PBR pipeline conforming to the Google Filament design document
- Multithreaded rendering with automatic GPU command batching
- Built-in glTF viewer (gltf_viewer) for rapid asset preview
- Java/Kotlin bindings for native Android integration
Comparison with Similar Tools
- Three.js — web-only, JavaScript; Filament is native C++ with WebGL export
- Babylon.js — browser-focused; Filament prioritizes mobile native performance
- bgfx — lower-level rendering abstraction without a built-in PBR pipeline
- Ogre3D — general 3D engine; Filament is leaner with a PBR-first approach
- wgpu — Rust GPU abstraction layer; Filament ships a full rendering pipeline
FAQ
Q: Does Filament include a scene graph or ECS? A: No. Filament provides rendering primitives; scene management is left to higher-level frameworks like Sceneform.
Q: Can I use Filament for games? A: Yes, though it focuses on rendering. You would pair it with a separate physics and audio engine.
Q: What shading models are supported? A: Lit (standard PBR), subsurface, cloth, and unlit models are available.
Q: Is Filament used in production? A: Google uses Filament in the Android Scene Viewer and Google Maps 3D features.