[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-71533":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":23,"hasPages":25,"topics":26,"createdAt":10,"pushedAt":10,"updatedAt":40,"readmeContent":41,"aiSummary":42,"trendingCount":16,"starSnapshotCount":16,"syncStatus":43,"lastSyncTime":44,"discoverSource":45},71533,"filament","google\u002Ffilament","google","Filament is a real-time physically based rendering engine for Android, iOS, Windows, Linux, macOS, and WebGL2","https:\u002F\u002Fgoogle.github.io\u002Ffilament\u002F",null,"C++",20130,2184,381,165,0,17,33,85,51,45,"Apache License 2.0",false,"main",true,[27,28,29,30,31,32,33,34,35,36,37,38,39],"3d-graphics","android","gltf","gltf-viewer","graphics","metal","opengl","opengl-es","pbr","real-time","vulkan","wasm","webgl","2026-06-12 02:02:53","# Filament\n\n[![Android Build Status](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Ffilament\u002Factions\u002Fworkflows\u002Fstatus-android.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Ffilament\u002Factions\u002Fworkflows\u002Fstatus-android.yml)\n[![iOS Build Status](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Ffilament\u002Factions\u002Fworkflows\u002Fstatus-ios.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Ffilament\u002Factions\u002Fworkflows\u002Fstatus-ios.yml)\n[![Linux Build Status](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Ffilament\u002Factions\u002Fworkflows\u002Fstatus-linux.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Ffilament\u002Factions\u002Fworkflows\u002Fstatus-linux.yml)\n[![macOS Build Status](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Ffilament\u002Factions\u002Fworkflows\u002Fstatus-macos.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Ffilament\u002Factions\u002Fworkflows\u002Fstatus-macos.yml)\n[![Windows Build Status](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Ffilament\u002Factions\u002Fworkflows\u002Fstatus-windows.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Ffilament\u002Factions\u002Fworkflows\u002Fstatus-windows.yml)\n[![Web Build Status](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Ffilament\u002Factions\u002Fworkflows\u002Fstatus-web.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Ffilament\u002Factions\u002Fworkflows\u002Fstatus-web.yml)\n\nFilament is a real-time physically based rendering engine for Android, iOS, Linux, macOS, Windows,\nand WASM. It is designed to be as small as possible and as efficient as possible on Android.\n\n## Download\n\n[Download Filament releases](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Ffilament\u002Freleases) to access stable builds.\nFilament release archives contains host-side tools that are required to generate assets.\n\nMake sure you always use tools from the same release as the runtime library. This is particularly\nimportant for `matc` (material compiler).\n\nIf you'd rather build Filament yourself, please refer to our [build manual](\u002FBUILDING.md).\n\n### Android\n\nAndroid projects can simply declare Filament libraries as Maven dependencies:\n\n```gradle\nrepositories {\n    \u002F\u002F ...\n    mavenCentral()\n}\n\ndependencies {\n    implementation 'com.google.android.filament:filament-android:1.71.4'\n}\n```\n\nHere are all the libraries available in the group `com.google.android.filament`:\n\n| Artifact      | Description   |\n| ------------- | ------------- |\n| [![filament-android](https:\u002F\u002Fimg.shields.io\u002Fmaven-central\u002Fv\u002Fcom.google.android.filament\u002Ffilament-android?label=filament-android&color=green)](https:\u002F\u002Fmvnrepository.com\u002Fartifact\u002Fcom.google.android.filament\u002Ffilament-android)  | The Filament rendering engine itself. |\n| [![filament-android-debug](https:\u002F\u002Fimg.shields.io\u002Fmaven-central\u002Fv\u002Fcom.google.android.filament\u002Ffilament-android-debug?label=filament-android-debug&color=green)](https:\u002F\u002Fmvnrepository.com\u002Fartifact\u002Fcom.google.android.filament\u002Ffilament-android-debug)  | Debug version of `filament-android`. |\n| [![gltfio-android](https:\u002F\u002Fimg.shields.io\u002Fmaven-central\u002Fv\u002Fcom.google.android.filament\u002Fgltfio-android?label=gltfio-android&color=green)](https:\u002F\u002Fmvnrepository.com\u002Fartifact\u002Fcom.google.android.filament\u002Fgltfio-android) | A glTF 2.0 loader for Filament, depends on `filament-android`. |\n| [![filament-utils-android](https:\u002F\u002Fimg.shields.io\u002Fmaven-central\u002Fv\u002Fcom.google.android.filament\u002Ffilament-utils-android?label=filament-utils-android&color=green)](https:\u002F\u002Fmvnrepository.com\u002Fartifact\u002Fcom.google.android.filament\u002Ffilament-utils-android) | KTX loading, Kotlin math, and camera utilities, depends on `gltfio-android`. |\n| [![filamat-android](https:\u002F\u002Fimg.shields.io\u002Fmaven-central\u002Fv\u002Fcom.google.android.filament\u002Ffilamat-android?label=filamat-android&color=green)](https:\u002F\u002Fmvnrepository.com\u002Fartifact\u002Fcom.google.android.filament\u002Ffilamat-android) | A runtime material builder\u002Fcompiler. This library is large but contains a full shader compiler\u002Fvalidator\u002Foptimizer and supports both OpenGL and Vulkan. |\n\n### iOS\n\niOS projects can use CocoaPods to install the latest release:\n\n```shell\npod 'Filament', '~> 1.71.4'\n```\n\n## Documentation\n\n- [Filament](https:\u002F\u002Fgoogle.github.io\u002Ffilament\u002FFilament.html), an in-depth explanation of\n  real-time physically based rendering, the graphics capabilities and implementation of Filament.\n  This document explains the math and reasoning behind most of our decisions. This document is a\n  good introduction to PBR for graphics programmers.\n- [Materials](https:\u002F\u002Fgoogle.github.io\u002Ffilament\u002FMaterials.html), the full reference\n  documentation for our material system. This document explains our different material models, how\n  to use the material compiler `matc` and how to write custom materials.\n- [Material Properties](https:\u002F\u002Fgoogle.github.io\u002Ffilament\u002Fnotes\u002Fmaterial_properties.html), a reference\n  sheet for the standard material model.\n\n## Examples\n\n![Night scene](docs\u002Fimages\u002Fsamples\u002Fexample_bistro1.jpg)\n![Night scene](docs\u002Fimages\u002Fsamples\u002Fexample_bistro2.jpg)\n![Materials](docs\u002Fimages\u002Fsamples\u002Fexample_materials1.jpg)\n![Materials](docs\u002Fimages\u002Fsamples\u002Fexample_materials2.jpg)\n![Helmet](docs\u002Fimages\u002Fsamples\u002Fexample_helmet.jpg)\n![Screen-space refraction](docs\u002Fimages\u002Fsamples\u002Fexample_ssr.jpg)\n\n## Features\n\n### APIs\n\n- Native C++ API for Android, iOS, Linux, macOS and Windows\n- Java\u002FJNI API for Android\n- JavaScript API\n\n### Backends\n\n- OpenGL 4.1+ for Linux, macOS and Windows\n- OpenGL ES 3.0+ for Android and iOS\n- Metal for macOS and iOS\n- Vulkan 1.0 for Android, Linux, macOS, and Windows\n- WebGPU for Android, Linux, macOS, and Windows\n- WebGL 2.0 for all browsers supporting it\n\n### Rendering\n\n- Clustered forward renderer\n- Cook-Torrance microfacet specular BRDF\n- Lambertian diffuse BRDF\n- Custom lighting\u002Fsurface shading\n- HDR\u002Flinear lighting\n- Metallic workflow\n- Clear coat\n- Anisotropic lighting\n- Approximated translucent (subsurface) materials\n- Cloth\u002Ffabric\u002Fsheen shading\n- Normal mapping & ambient occlusion mapping\n- Image-based lighting\n- Physically-based camera (shutter speed, sensitivity and aperture)\n- Physical light units\n- Point lights, spot lights, and directional light\n- Specular anti-aliasing\n- Point, spot, and directional light shadows\n- Cascaded shadows\n- EVSM, PCSS, DPCF, or PCF shadows\n- Transparent shadows\n- Contact shadows\n- Screen-space ambient occlusion\n- Screen-space reflections\n- Screen-space refraction\n- Global fog\n- Dynamic resolution (with support for AMD FidelityFX FSR)\n\n### Post processing\n\n- HDR bloom\n- Depth of field bokeh\n- Multiple tone mappers: PBR Neutral, AgX, generic (customizable), ACES, filmic, etc.\n- Color and tone management: luminance scaling, gamut mapping\n- Color grading: exposure, night adaptation, white balance, channel mixer,\n  shadows\u002Fmid-tones\u002Fhighlights, ASC CDL, contrast, saturation, etc.\n- TAA, FXAA, MSAA\n- Screen-space lens flares\n\n### glTF 2.0\n\n- Encodings\n  - [x] Embeded\n  - [x] Binary\n\n- Primitive Types\n  - [x] Points\n  - [x] Lines\n  - [ ] Line Loop\n  - [x] Line Strip\n  - [x] Triangles\n  - [x] Triangle Strip\n  - [ ] Triangle Fan\n\n- Animation\n  - [x] Transform animation\n  - [x] Linear interpolation\n  - [x] Morph animation\n    - [x] Sparse accessor\n  - [x] Skin animation\n  - [x] Joint animation\n\n- Extensions\n  - [x] KHR_draco_mesh_compression\n  - [x] KHR_lights_punctual\n  - [x] KHR_materials_clearcoat\n  - [x] KHR_materials_dispersion\n  - [x] KHR_materials_emissive_strength\n  - [x] KHR_materials_ior\n  - [x] KHR_materials_pbrSpecularGlossiness\n  - [x] KHR_materials_sheen\n  - [x] KHR_materials_specular\n  - [x] KHR_materials_transmission\n  - [x] KHR_materials_unlit\n  - [x] KHR_materials_variants\n  - [x] KHR_materials_volume\n  - [x] KHR_mesh_quantization\n  - [x] KHR_texture_basisu\n  - [x] KHR_texture_transform\n  - [x] EXT_meshopt_compression\n\n\n## Rendering with Filament\n\n### Native Linux, macOS and Windows\n\nYou must create an `Engine`, a `Renderer` and a `SwapChain`. The `SwapChain` is created from a\nnative window pointer (an `NSView` on macOS or a `HWND` on Windows for instance):\n\n```c++\nEngine* engine = Engine::create();\nSwapChain* swapChain = engine->createSwapChain(nativeWindow);\nRenderer* renderer = engine->createRenderer();\n```\n\nTo render a frame you must then create a `View`, a `Scene` and a `Camera`:\n\n```c++\nCamera* camera = engine->createCamera(EntityManager::get().create());\nView* view = engine->createView();\nScene* scene = engine->createScene();\n\nview->setCamera(camera);\nview->setScene(scene);\n```\n\nRenderables are added to the scene:\n\n```c++\nEntity renderable = EntityManager::get().create();\n\u002F\u002F build a quad\nRenderableManager::Builder(1)\n        .boundingBox({{ -1, -1, -1 }, { 1, 1, 1 }})\n        .material(0, materialInstance)\n        .geometry(0, RenderableManager::PrimitiveType::TRIANGLES, vertexBuffer, indexBuffer, 0, 6)\n        .culling(false)\n        .build(*engine, renderable);\nscene->addEntity(renderable);\n```\n\nThe material instance is obtained from a material, itself loaded from a binary blob generated\nby `matc`:\n\n```c++\nMaterial* material = Material::Builder()\n        .package((void*) BAKED_MATERIAL_PACKAGE, sizeof(BAKED_MATERIAL_PACKAGE))\n        .build(*engine);\nMaterialInstance* materialInstance = material->createInstance();\n```\n\nTo learn more about materials and `matc`, please refer to the\n[materials documentation](https:\u002F\u002Fgoogle.github.io\u002Ffilament\u002FMaterials.html).\n\nTo render, simply pass the `View` to the `Renderer`:\n\n```c++\n\u002F\u002F beginFrame() returns false if we need to skip a frame\nif (renderer->beginFrame(swapChain)) {\n    \u002F\u002F for each View\n    renderer->render(view);\n    renderer->endFrame();\n}\n```\n\nFor complete examples of Linux, macOS and Windows Filament applications, look at the source files\nin the `samples\u002F` directory. These samples are all based on `libs\u002Ffilamentapp\u002F` which contains the\ncode that creates a native window with SDL2 and initializes the Filament engine, renderer and views.\n\nFor more information on how to prepare environment maps for image-based lighting please refer to\n[BUILDING.md](\u002FBUILDING.md#running-the-native-samples).\n\n### Android\n\nSee `android\u002Fsamples` for examples of how to use Filament on Android.\n\nYou must always first initialize Filament by calling `Filament.init()`.\n\nRendering with Filament on Android is similar to rendering from native code (the APIs are largely\nthe same across languages). You can render into a `Surface` by passing a `Surface` to the\n`createSwapChain` method. This allows you to render to a `SurfaceTexture`, a `TextureView` or\na `SurfaceView`. To make things easier we provide an Android specific API called `UiHelper` in the\npackage `com.google.android.filament.android`. All you need to do is set a render callback on the\nhelper and attach your `SurfaceView` or `TextureView` to it. You are still responsible for\ncreating the swap chain in the `onNativeWindowChanged()` callback.\n\n### iOS\n\nFilament is supported on iOS 11.0 and above. See `ios\u002Fsamples` for examples of using Filament on\niOS.\n\nFilament on iOS is largely the same as native rendering with C++. A `CAEAGLLayer` or `CAMetalLayer`\nis passed to the `createSwapChain` method. Filament for iOS supports both Metal (preferred) and\nOpenGL ES.\n\n## Assets\n\nTo get started you can use the textures and environment maps found respectively in\n`third_party\u002Ftextures` and `third_party\u002Fenvironments`. These assets are under CC0 license. Please\nrefer to their respective `URL.txt` files to know more about the original authors.\n\nEnvironments must be pre-processed using\n[`cmgen`](\u002FBUILDING.md#running-the-native-samples) or\nusing the `libiblprefilter` library.\n\n## How to make contributions\n\nPlease read and follow the steps in [CONTRIBUTING.md](\u002FCONTRIBUTING.md). Make sure you are\nfamiliar with the [code style](\u002FCODE_STYLE.md).\n\n## Directory structure\n\nThis repository not only contains the core Filament engine, but also its supporting libraries\nand tools.\n\n- `android`:                  Android libraries and projects\n  - `filamat-android`:        Filament material generation library (AAR) for Android\n  - `filament-android`:       Filament library (AAR) for Android\n  - `filament-utils-android`: Extra utilities (KTX loader, math types, etc.)\n  - `gltfio-android`:         Filament glTF loading library (AAR) for Android\n  - `samples`:                Android-specific Filament samples\n- `art`:                      Source for various artworks (logos, PDF manuals, etc.)\n- `assets`:                   3D assets to use with sample applications\n- `build`:                    CMake build scripts\n- `docs`:                     Documentation\n  - `math`:                   Mathematica notebooks used to explore BRDFs, equations, etc.\n- `filament`:                 Filament rendering engine (minimal dependencies)\n  - `backend`:                Rendering backends\u002Fdrivers (Vulkan, Metal, OpenGL\u002FES)\n- `ide`:                      Configuration files for IDEs (CLion, etc.)\n- `ios`:                      Sample projects for iOS\n- `libs`:                     Libraries\n  - `bluegl`:                 OpenGL bindings for macOS, Linux and Windows\n  - `bluevk`:                 Vulkan bindings for macOS, Linux, Windows and Android\n  - `camutils`:               Camera manipulation utilities\n  - `filabridge`:             Library shared by the Filament engine and host tools\n  - `filaflat`:               Serialization\u002Fdeserialization library used for materials\n  - `filagui`:                Helper library for [Dear ImGui](https:\u002F\u002Fgithub.com\u002Focornut\u002Fimgui)\n  - `filamat`:                Material generation library\n  - `filamentapp`:            SDL2 skeleton to build sample apps\n  - `filameshio`:             Tiny filamesh parsing library (see also `tools\u002Ffilamesh`)\n  - `geometry`:               Mesh-related utilities\n  - `gltfio`:                 Loader for glTF 2.0\n  - `ibl`:                    IBL generation tools\n  - `image`:                  Image filtering and simple transforms\n  - `imageio`:                Image file reading \u002F writing, only intended for internal use\n  - `matdbg`:                 DebugServer for inspecting shaders at run-time (debug builds only)\n  - `math`:                   Math library\n  - `mathio`:                 Math types support for output streams\n  - `utils`:                  Utility library (threads, memory, data structures, etc.)\n  - `viewer`:                 glTF viewer library (requires gltfio)\n- `samples`:                  Sample desktop applications\n- `shaders`:                  Shaders used by `filamat` and `matc`\n- `third_party`:              External libraries and assets\n  - `environments`:           Environment maps under CC0 license that can be used with `cmgen`\n  - `models`:                 Models under permissive licenses\n  - `textures`:               Textures under CC0 license\n- `tools`:                    Host tools\n  - `cmgen`:                  Image-based lighting asset generator\n  - `filamesh`:               Mesh converter\n  - `glslminifier`:           Minifies GLSL source code\n  - `matc`:                   Material compiler\n  - `matedit`:                Material editor for compiled materials\n  - `matinfo`                 Displays information about materials compiled with `matc`\n  - `mipgen`                  Generates a series of miplevels from a source image\n  - `normal-blending`:        Tool to blend normal maps\n  - `resgen`                  Aggregates binary blobs into embeddable resources\n  - `roughness-prefilter`:    Pre-filters a roughness map from a normal map to reduce aliasing\n  - `specular-color`:         Computes the specular color of conductors based on spectral data\n- `web`:                      JavaScript bindings, documentation, and samples\n\n## License\n\nPlease see [LICENSE](\u002FLICENSE).\n\n## Disclaimer\n\nThis is not an officially supported Google product.\n","Filament 是一个跨平台的实时物理渲染引擎，支持 Android、iOS、Windows、Linux、macOS 以及 WebGL2。它采用 C++ 开发，具备强大的材质编译器 `matc` 和 glTF 2.0 加载功能，能够高效地处理复杂的图形渲染任务，并且在设计上特别优化了在 Android 平台上的性能与体积。此外，Filament 支持多种图形API如OpenGL、Vulkan和Metal等，使得开发者可以根据具体需求灵活选择。该项目适用于需要高质量视觉效果的应用场景，比如游戏开发、虚拟现实(VR)、增强现实(AR)项目以及任何对3D图形渲染有高要求的软件产品。",2,"2026-06-11 03:38:22","high_star"]