À propos du projet

Filament est un moteur de rendu temps réel basé sur la physique (PBR) développé par Google, ciblant Android, iOS, Linux, macOS, Windows et le web via WebGL 2.0/WASM. Il est conçu pour être compact et efficace, en particulier sur Android, et est distribué sous forme d'archives de versions stables contenant à la fois la bibliothèque d'exécution et les outils d'assets côté hôte. Liaisons de langages et API : - API C++ native pour Android, iOS, Linux, macOS et Windows - API Java/JNI pour Android - API JavaScript pour le web Les backends graphiques incluent OpenGL 4.1+ (bureau), OpenGL ES 3.0+ (mobile), Metal (macOS/iOS), Vulkan 1.0, WebGPU et WebGL 2.0. Les capacités de rendu couvrent un renderer forward clusterisé, les BRDF spéculaire Cook-Torrance et diffuse lambertienne, l'éclairage/ombrage de surface personnalisé, l'éclairage HDR/linéaire, le workflow métallique, le clear coat, l'éclairage anisotrope, les matériaux subsurface/translucides approximés, l'ombrage tissu/sheen, le normal mapping et l'ambient occlusion mapping, l'éclairage basé sur l'image, une caméra physiquement réaliste, les unités de lumière physiques, les lumières ponctuelles/spot/directionnelles, l'anti-aliasing spéculaire, diverses techniques d'ombres (PCF, DPCF, PCSS, EVSM, cascaded, contact, transparentes), l'occlusion ambiante en espace écran, les réflexions et la réfraction, le brouillard global et la résolution dynamique avec prise en charge d'AMD FidelityFX FSR. Les fonctionnalités de post-traitement incluent le bloom HDR, le bokeh de profondeur de champ, plusieurs tone mappers (GT7, PBR Neutral, AgX, ACES, filmique, générique), la gestion et l'étalonnage des couleurs/tonalités, l'anti-aliasing TAA/FXAA/MSAA et les lens flares en espace écran. Le moteur inclut un chargeur glTF 2.0 prenant en charge les encodages embarqués et binaires, les primitives points/lignes/triangles, l'animation de transformation/morph/skin/joint, et de nombreuses extensions telles que KHR_draco_mesh_compression, KHR_lights_punctual, KHR_materials_clearcoat, KHR_materials_transmission, KHR_materials_volume, KHR_texture_basisu, KHR_texture_transform et EXT_meshopt_compression. Les matériaux sont créés via un système de matériaux compilé par le compilateur de matériaux `matc`, avec une documentation couvrant les modèles de matériaux et la création de matériaux personnalisés. Le dépôt fournit également des bibliothèques et outils de support, notamment `cmgen` pour la génération d'éclairage basé sur l'image, `filamesh` pour la conversion de maillages, `mipgen`, `matinfo`, `matedit`, `glslminifier`, `resgen` et `libiblprefilter`. Des applications d'exemple pour bureau, Android et iOS démontrent l'initialisation du moteur, la création de swap chains, la configuration scène/vue/caméra et les boucles de rendu. Des assets tels que des textures CC0 et des cartes d'environnement sont fournis pour démarrer.