About this project

Filament is a real-time physically based rendering (PBR) engine developed by Google, targeting Android, iOS, Linux, macOS, Windows and the web via WebGL 2.0/WASM. It is designed to be small and efficient, particularly on Android, and is distributed as stable release archives containing both the runtime library and host-side asset tools. Language bindings and APIs: - Native C++ API for Android, iOS, Linux, macOS and Windows - Java/JNI API for Android - JavaScript API for the web Graphics backends include OpenGL 4.1+ (desktop), OpenGL ES 3.0+ (mobile), Metal (macOS/iOS), Vulkan 1.0, WebGPU and WebGL 2.0. Rendering capabilities cover a clustered forward renderer, Cook-Torrance specular and Lambertian diffuse BRDFs, custom lighting/surface shading, HDR/linear lighting, metallic workflow, clear coat, anisotropic lighting, approximated subsurface/translucent materials, cloth/sheen shading, normal and ambient occlusion mapping, image-based lighting, a physically-based camera, physical light units, point/spot/directional lights, specular anti-aliasing, various shadow techniques (PCF, DPCF, PCSS, EVSM, cascaded, contact, transparent), screen-space ambient occlusion, reflections and refraction, global fog, and dynamic resolution with AMD FidelityFX FSR support. Post-processing features include HDR bloom, depth-of-field bokeh, multiple tone mappers (GT7, PBR Neutral, AgX, ACES, filmic, generic), color/tone management and grading, TAA/FXAA/MSAA anti-aliasing, and screen-space lens flares. The engine includes a glTF 2.0 loader supporting embedded and binary encodings, points/lines/triangles primitives, transform/morph/skin/joint animation, and many extensions such as KHR_draco_mesh_compression, KHR_lights_punctual, KHR_materials_clearcoat, KHR_materials_transmission, KHR_materials_volume, KHR_texture_basisu, KHR_texture_transform and EXT_meshopt_compression. Materials are authored through a material system compiled by the `matc` material compiler, with documentation covering material models and custom material authoring. The repository also ships supporting libraries and tools, including `cmgen` for image-based lighting generation, `filamesh` for mesh conversion, `mipgen`, `matinfo`, `matedit`, `glslminifier`, `resgen`, and `libiblprefilter`. Sample applications for desktop, Android and iOS demonstrate engine initialization, swap chain creation, scene/view/camera setup, and rendering loops. Assets such as CC0 textures and environment maps are provided for getting started.