Skip to main content

Google Filament

v1.54.5

Real-time physically based rendering engine optimized for Android and mobile platforms

Rasterization
C++/Java/JavaScript
Apache-2.0
Active
GPU: Vulkan, Metal, WebGL
At a Glance
Technique
Rasterization
Language
C++/Java/JavaScript
License
Apache-2.0
Platforms
Linux
macOS
Windows
Android
iOS
Web
GPU Support
Yes (Vulkan, Metal, WebGL)
CPU Support
No
Scene Formats
glTF, GLB, OBJ, Filamesh
Output Formats
Framebuffer, PNG, EXR, HDR
First Release
Aug 2018
Best For
Mobile and embedded applications requiring high-fidelity physically based rendering with minimal overhead and cross-platform GPU support

Development Activity

Commit activity data is not available for this renderer.

Overview

Best for

Mobile and embedded applications requiring high-fidelity physically based rendering with minimal overhead and cross-platform GPU support

Not ideal for

Projects needing a full game engine with built-in physics, scripting, scene editing, or real-time global illumination

Strengths

  • Exceptional PBR material model with a thorough technical whitepaper documenting every rendering equation, approximation, and design trade-off
  • Mobile-first architecture with aggressive performance optimizations — clustered forward rendering, draw call batching, and dynamic resolution scaling
  • Comprehensive multi-backend support spanning Vulkan, OpenGL ES 3.x, Metal, desktop OpenGL 4.1, and WebGL 2.0 from a single codebase
  • Production-quality image-based lighting pipeline with precomputed irradiance maps, prefiltered specular environment maps, and a BRDF LUT
  • Mature material compiler (matc) generates optimized, platform-specific shaders from a high-level material definition language

Limitations

  • No built-in scene editor, visual authoring tool, or asset pipeline — requires custom application code for scene composition and interaction
  • Limited global illumination: supports screen-space ambient occlusion and baked lightmaps only, with no real-time GI solution
  • Steeper integration curve than higher-level engines like Godot or Babylon.js — designed as a rendering library, not a full engine
  • Clustered forward rendering architecture limits the number of dynamic lights compared to deferred rendering approaches
  • Community is smaller than three.js or Babylon.js despite Google backing, resulting in fewer third-party tutorials and integrations

Background

Google Filament is an open source, real-time physically based rendering engine designed with mobile-first priorities. Originally built to power 3D experiences on Android — including the Sceneform AR framework — Filament has grown into a cross-platform rendering library supporting Vulkan, OpenGL ES, Metal, WebGL 2.0, and desktop OpenGL. Its material system is grounded in a comprehensive PBR model documented in a widely-referenced technical whitepaper that details every approximation and design decision.

Filament's architecture is optimized for constrained hardware. Its rendering pipeline uses a clustered forward renderer with dynamic resolution scaling, aggressive draw call batching, and a material compiler (matc) that generates optimized GPU shaders for each backend. The engine provides high-quality image-based lighting with prefiltered environment maps, screen-space ambient occlusion, screen-space reflections, and post-processing effects including bloom, depth of field, motion blur, and temporal anti-aliasing.

As a rendering library rather than a game engine, Filament requires application-level code for scene management, input handling, and asset loading. It ships with gltfio, a glTF 2.0 loader, and filamat, a material definition system. Filament is used in production across Google products including Google Maps, Google Search AR, and third-party applications requiring high-fidelity mobile rendering. Its C++ core is complemented by Java/JNI bindings for Android and JavaScript bindings via WebAssembly.

Quick Start

git clone https://github.com/google/filament && cd filament && ./build.sh release

Community & Resources

Community

Paper & Citations

Performance Benchmarks

No benchmark data available for Google Filament yet.

Benchmarks will be added as more renderers are tested across our standard scene suite.

Learn about our methodology