A cross-platform C++17 UI framework with GLFW/SDL2 window backends and OpenGL/Vulkan rendering, built around a declarative DSL.
google/filament
A real-time physically based rendering engine for Android, iOS, Linux, macOS, Windows and WebGL2, designed to be small and efficient on Android.
- Stars
- 20,637
- Forks
- 2,283
- Open issues
- 209
- Last commit
- 3 hours ago
What is it?
Filament is a real-time physically based rendering (PBR) engine written in C++. It targets Android, iOS, Linux, macOS, Windows and WebAssembly/WebGL2, with APIs for native C++, Java/JNI on Android and JavaScript. Its backends include OpenGL, OpenGL ES, Metal, Vulkan and WebGPU, so the same scene can run across most mainstream graphics platforms.
The renderer is a clustered forward design with a physically based material model covering metallic workflow, clear coat, anisotropy, cloth and subsurface approximations. It includes image-based lighting, physical camera and light units, a range of shadow techniques, screen-space reflections and refraction, and a post-processing stack with tone mappers, color grading and anti-aliasing.
The project also ships a glTF 2.0 loader (gltfio) with many KHR and EXT extensions, plus host tools such as the material compiler matc and the cmgen environment preprocessor. Materials are compiled ahead of time into binary packages that the runtime loads.
Key features
- 01Native C++, Java/JNI and JavaScript APIs across major platforms
- 02Multiple backends including Vulkan, Metal, OpenGL ES and WebGPU
- 03Physically based materials with clear coat, anisotropy and cloth shading
- 04Shadows, screen-space reflections and refraction, and image-based lighting
- 05Built-in glTF 2.0 loader with many extensions
Use cases
- Adding 3D rendering to an Android app or game with a small footprint
- Building cross-platform real-time 3D viewers for glTF models
- Rendering product visualizations or scenes in a browser via WebGL2
- Experimenting with physically based shading and rendering techniques
Quick start
- 1
Add the Filament Android library via Gradle dependency
implementation 'com.google.android.filament:filament-android:1.78.1' - 2
Or add the iOS pod via CocoaPods
pod 'Filament', '~> 1.78.1' - 3
Download stable builds and host tools from the releases page, or build from source using the build manual
Things to know
- Native C++ builds require building from source following the separate build manual.
- Release tools such as matc must match the runtime library version.
Topics
FAQ
- What is filament?
- A real-time physically based rendering engine for Android, iOS, Linux, macOS, Windows and WebGL2, designed to be small and efficient on Android. Filament is a real-time physically based rendering (PBR) engine written in C++. It targets Android, iOS, Linux, macOS, Windows and WebAssembly/WebGL2, with APIs for native C++, Java/JNI on Android and JavaScript. Its backends include OpenGL, OpenGL ES, Metal, Vulkan and WebGPU, so the same scene can run across most mainstream graphics platforms.
- Is filament free to use? What license does it have?
- filament is open source under the Apache-2.0 license. Check the license terms before using it in commercial products.
- Is filament still maintained?
- Actively maintained. The last commit to filament was on Oct 22, 2026.
- What can I use filament for?
- Adding 3D rendering to an Android app or game with a small footprint Building cross-platform real-time 3D viewers for glTF models Rendering product visualizations or scenes in a browser via WebGL2 Experimenting with physically based shading and rendering techniques
- How do I install filament?
- Add the Filament Android library via Gradle dependency: implementation 'com.google.android.filament:filament-android:1.78.1' Or add the iOS pod via CocoaPods: pod 'Filament', '~> 1.78.1' Download stable builds and host tools from the releases page, or build from source using the build manual
- Where can I get filament?
- The source code and installation instructions are on GitHub: https://github.com/google/filament
Summary generated by AI from the project's README. GitHub stats refresh daily.
Related projects
A 2D/3D game engine written in Go on Vulkan, with a built-in editor that is itself a game running in the engine.
A JavaScript 3D library that makes it easier to build and render 3D scenes in the browser with WebGL and WebGPU.
An open machine learning compilation framework that lets developers customize compiler pipelines in Python and deploy models to many hardware targets.
An open-source, MIT-licensed C++20 game engine with a Vulkan/Metal/WebGPU renderer, an ECS, a cross-platform editor and a WebGPU build for the browser.
A collection of Claude Code skills and plugins teaching Claude about Three.js, GSAP, React Three Fiber, Framer Motion, Babylon.js and other web 3D and animation tools.