Filament هو محرك عرض فعلي في الوقت الفعلي لأنظمة Android وiOS وLinux وmacOS وWindows وWebGL. لقد تم تصميمه ليكون صغيرًا قدر الإمكان وفعالًا قدر الإمكان على Android.
قم بتنزيل إصدارات Filament للوصول إلى الإصدارات المستقرة. تحتوي أرشيفات إصدار الخيوط على أدوات من جانب المضيف مطلوبة لإنشاء الأصول.
تأكد من أنك تستخدم دائمًا الأدوات من نفس الإصدار مثل مكتبة وقت التشغيل. هذا مهم بشكل خاص لـ matc
(مترجم المواد).
إذا كنت تفضل إنشاء خيوط بنفسك، فيرجى الرجوع إلى دليل البناء الخاص بنا.
يمكن لمشاريع Android ببساطة الإعلان عن مكتبات Filament باعتبارها تبعيات لـ Maven:
المستودعات { // ... مافن سنترال () }التبعيات { التنفيذ "com.google.android.filament:filament-android:1.56.0"}
فيما يلي جميع المكتبات المتوفرة في المجموعة com.google.android.filament
:
قطعة أثرية | وصف |
---|---|
محرك تقديم الخيوط نفسه. | |
نسخة التصحيح من filament-android . | |
يعتمد مُحمل glTF 2.0 الخاص بـ Filament على filament-android . | |
يعتمد تحميل KTX ورياضيات Kotlin وأدوات الكاميرا المساعدة على gltfio-android . | |
منشئ/مترجم مواد وقت التشغيل. هذه المكتبة كبيرة ولكنها تحتوي على مترجم/مدقق/محسن كامل وتدعم كلاً من OpenGL وVulkan. | |
بديل أصغر بكثير لـ filamat-android يمكنه فقط إنشاء تظليل OpenGL. لا يوفر التحقق من الصحة أو التحسينات. |
يمكن لمشاريع iOS استخدام CocoaPods لتثبيت الإصدار الأحدث:
جراب "خيوط"، "~> 1.56.0"
Filament، شرح متعمق للعرض الفعلي الفعلي، وإمكانيات الرسومات وتنفيذ Filament. تشرح هذه الوثيقة الحسابات والأسباب الكامنة وراء معظم قراراتنا. تعتبر هذه الوثيقة مقدمة جيدة لـ PBR لمبرمجي الرسومات.
المواد، الوثائق المرجعية الكاملة لنظام المواد لدينا. يشرح هذا المستند نماذج المواد المختلفة لدينا، وكيفية استخدام أداة تجميع المواد matc
وكيفية كتابة مواد مخصصة.
خصائص المواد، ورقة مرجعية لنموذج المواد القياسي.
واجهة برمجة تطبيقات C++ الأصلية لأنظمة Android وiOS وLinux وmacOS وWindows
Java/JNI API لنظام Android
واجهة برمجة تطبيقات جافا سكريبت
OpenGL 4.1+ لأنظمة التشغيل Linux وmacOS وWindows
OpenGL ES 3.0+ لنظامي التشغيل Android وiOS
معدن لنظامي التشغيل MacOS وiOS
Vulkan 1.0 لأنظمة Android وLinux وmacOS وWindows
WebGL 2.0 لجميع المنصات
العارض الأمامي المجمع
كوك تورانس microfacet براق BRDF
لامبرت منتشر BRDF
الإضاءة المخصصة / تظليل السطح
HDR/الإضاءة الخطية
سير العمل المعدني
معطف واضح
الإضاءة متباين الخواص
المواد الشفافة (تحت السطح) التقريبية
تظليل القماش/القماش/اللمعان
رسم الخرائط العادية ورسم خرائط الانسداد المحيط
الإضاءة القائمة على الصور
الكاميرا الفعلية (سرعة الغالق والحساسية وفتحة العدسة)
وحدات الإضاءة المادية
أضواء النقطة، الأضواء الموضعية، والضوء الاتجاهي
براق مكافحة التعرج
ظلال الضوء النقطية والبقعية والاتجاهية
الظلال المتتالية
ظلال EVSM أو PCSS أو DPCF أو PCF
ظلال شفافة
ظلال الاتصال
انسداد مساحة الشاشة المحيطة
انعكاسات مساحة الشاشة
انكسار مساحة الشاشة
الضباب العالمي
دقة ديناميكية (مع دعم AMD FidelityFX FSR)
تقرير التنمية البشرية تزدهر
عمق البوكيه الميداني
مصممو خرائط النغمات المتعددة: عام (قابل للتخصيص)، ACES، فيلمي، إلخ.
إدارة الألوان والدرجات اللونية: قياس النصوع، ورسم خرائط التدرج اللوني
تدرج الألوان: التعرض، التكيف الليلي، توازن اللون الأبيض، خلاط القنوات، الظلال/الدرجات المتوسطة/الإبرازات، ASC CDL، التباين، التشبع، إلخ.
تا، فكسا، مسا
مشاعل عدسة مساحة الشاشة
الترميزات
مضمن
ثنائي
الأنواع البدائية
نقاط
خطوط
حلقة الخط
قطاع الخط
مثلثات
شريط المثلث
مروحة المثلث
الرسوم المتحركة
ملحق متناثر
تحويل الرسوم المتحركة
الاستيفاء الخطي
الرسوم المتحركة مورف
الرسوم المتحركة الجلد
الرسوم المتحركة المشتركة
ملحقات
KHR_draco_mesh_compression
KHR_lights_ppointal
KHR_materials_clearcoat
KHR_materials_emissive_strength
KHR_materials_ior
KHR_materials_pbrSpecularGlossiness
KHR_materials_sheen
KHR_materials_transmission
KHR_materials_unlit
KHR_materials_variants
KHR_materials_volume
KHR_materials_specular
KHR_mesh_quantization
KHR_texture_basisu
KHR_texture_transform
EXT_meshopt_compression
يجب عليك إنشاء Engine
Renderer
و SwapChain
. يتم إنشاء SwapChain
من مؤشر نافذة أصلي ( NSView
على macOS أو HWND
على Windows على سبيل المثال):
المحرك* المحرك = المحرك::إنشاء(); SwapChain* SwapChain = Engine->createSwapChain(nativeWindow); Renderer* renderer = Engine->createRenderer();
لتقديم إطار، يجب عليك بعد ذلك إنشاء View
Scene
Camera
:
الكاميرا* الكاميرا = المحرك->createCamera(EntityManager::get().create()); View* view = Engine->createView(); Scene* scene = Engine->createScene(); view->setCamera(camera); view->setScene(scene);
تتم إضافة Renderables إلى المشهد:
كيان قابل للعرض = EntityManager::get().create();// إنشاء QuadRenderableManager::Builder(1) .boundingBox({{ -1, -1, -1 }, { 1, 1, 1 }}) .material(0, MaterialInstance) .geometry(0, RenderableManager::PrimitiveType::TRIANGLES, vertexBuffer, IndexBuffer, 0, 6) .الإعدام (خطأ) .build(*engine, renderable); Scene->addEntity(renderable);
يتم الحصول على المثيل المادي من مادة، يتم تحميلها بنفسها من فقاعة ثنائية تم إنشاؤها بواسطة matc
:
المادة* المادة = المادة::Builder() .package((باطل*) BAKED_MATERIAL_PACKAGE، حجم(BAKED_MATERIAL_PACKAGE)) .build(*المحرك); MaterialInstance* MaterialInstance = Material->createInstance();
لمعرفة المزيد حول المواد matc
، يرجى الرجوع إلى وثائق المواد.
للعرض، ما عليك سوى تمرير View
إلى Renderer
:
// beginFrame() يُرجع خطأ إذا أردنا تخطي إطار if (renderer->beginFrame(swapChain)) { // لكل عرض render->render(view); العارض->endFrame(); }
للحصول على أمثلة كاملة لتطبيقات Linux وmacOS وWindows Filament، انظر إلى الملفات المصدر في دليل samples/
. تعتمد جميع هذه العينات على libs/filamentapp/
الذي يحتوي على الكود الذي ينشئ نافذة أصلية باستخدام SDL2 ويقوم بتهيئة محرك Filament والعارض وطرق العرض.
لمزيد من المعلومات حول كيفية إعداد خرائط البيئة للإضاءة المبنية على الصور، يرجى الرجوع إلى BUILDING.md.
راجع android/samples
للحصول على أمثلة حول كيفية استخدام Filament على Android.
يجب عليك دائمًا تهيئة Filament أولاً عن طريق استدعاء Filament.init()
.
يشبه العرض باستخدام Filament على Android العرض من التعليمات البرمجية الأصلية (واجهات برمجة التطبيقات هي نفسها إلى حد كبير عبر اللغات). يمكنك التصيير إلى Surface
عن طريق تمرير Surface
إلى طريقة createSwapChain
. يسمح لك هذا بالعرض على SurfaceTexture
أو TextureView
أو SurfaceView
. لتسهيل الأمور، نقدم واجهة برمجة تطبيقات خاصة بنظام التشغيل Android تسمى UiHelper
في الحزمة com.google.android.filament.android
. كل ما عليك فعله هو تعيين رد اتصال عرض على المساعد وإرفاق SurfaceView
أو TextureView
به. لا تزال مسؤولاً عن إنشاء سلسلة المبادلة في رد الاتصال onNativeWindowChanged()
.
يتم دعم Filament على نظام التشغيل iOS 11.0 والإصدارات الأحدث. راجع ios/samples
للحصول على أمثلة لاستخدام Filament على iOS.
يشبه Filament على iOS إلى حد كبير العرض الأصلي باستخدام C++. يتم تمرير CAEAGLLayer
أو CAMetalLayer
إلى طريقة createSwapChain
. يدعم Filament لنظام iOS كلاً من Metal (المفضل) وOpenGL ES.
للبدء، يمكنك استخدام الأنسجة وخرائط البيئة الموجودة على التوالي في third_party/textures
و third_party/environments
. هذه الأصول تخضع لترخيص CC0. يرجى الرجوع إلى ملفات URL.txt
الخاصة بهم لمعرفة المزيد عن المؤلفين الأصليين.
يجب معالجة البيئات مسبقًا باستخدام cmgen
أو باستخدام مكتبة libiblprefilter
.
يرجى قراءة واتباع الخطوات الواردة في CONTRIBUTING.md. تأكد من أنك على دراية بنمط الكود.
لا يحتوي هذا المستودع على محرك Filament الأساسي فحسب، بل يحتوي أيضًا على مكتباته وأدواته الداعمة.
android
: مكتبات ومشاريع Android
filamat-android
: مكتبة توليد المواد الفتيلية (AAR) لنظام Android
filament-android
: مكتبة الخيوط (AAR) لنظام Android
filament-utils-android
: أدوات مساعدة إضافية (محمل KTX، وأنواع الرياضيات، وما إلى ذلك)
gltfio-android
: مكتبة تحميل Filament glTF (AAR) لنظام Android
samples
: عينات خيوط خاصة بنظام Android
art
: مصدر لمختلف الأعمال الفنية (الشعارات، وأدلة PDF، وما إلى ذلك)
assets
: أصول ثلاثية الأبعاد لاستخدامها مع نماذج التطبيقات
build
: CMake بناء البرامج النصية
docs
: التوثيق
math
: دفاتر ملاحظات Mathematica المستخدمة لاستكشاف BRDFs والمعادلات وما إلى ذلك.
filament
: محرك تقديم خيوط (الحد الأدنى من التبعيات)
backend
: عرض الواجهات الخلفية/برامج التشغيل (Vulkan، Metal، OpenGL/ES)
ide
: ملفات التكوين الخاصة بـ IDEs (CLion، وما إلى ذلك)
ios
: نماذج من المشاريع لنظام iOS
libs
: المكتبات
bluegl
: روابط OpenGL لأنظمة التشغيل macOS وLinux وWindows
bluevk
: روابط Vulkan لأنظمة التشغيل macOS وLinux وWindows وAndroid
camutils
: أدوات مساعدة لمعالجة الكاميرا
filabridge
: مكتبة مشتركة بواسطة محرك Filament وأدوات المضيف
filaflat
: مكتبة التسلسل/إلغاء التسلسل المستخدمة للمواد
filagui
: مكتبة مساعدة لـ Dear ImGui
filamat
: مكتبة توليد المواد
filamentapp
: هيكل SDL2 لإنشاء نماذج من التطبيقات
filameshio
: مكتبة تحليل filamesh الصغيرة (انظر أيضًا tools/filamesh
)
geometry
: المرافق ذات الصلة بالشبكة
gltfio
: محمل لglTF 2.0
ibl
: أدوات إنشاء IBL
image
: تصفية الصور والتحويلات البسيطة
imageio
: قراءة/كتابة ملفات الصور، مخصصة للاستخدام الداخلي فقط
matdbg
: DebugServer لفحص التظليل في وقت التشغيل (إصدارات تصحيح الأخطاء فقط)
math
: مكتبة الرياضيات
mathio
: دعم أنواع الرياضيات لتدفقات الإخراج
utils
: مكتبة الأدوات المساعدة (الخيوط، الذاكرة، هياكل البيانات، إلخ.)
viewer
: مكتبة عارض glTF (يتطلب gltfio)
samples
: نماذج من تطبيقات سطح المكتب
shaders
: التظليل المستخدم بواسطة filamat
matc
third_party
: المكتبات والأصول الخارجية
environments
: خرائط البيئة بموجب ترخيص CC0 والتي يمكن استخدامها مع cmgen
models
: نماذج تحت تراخيص متساهلة
textures
: القوام تحت رخصة CC0
tools
: أدوات المضيف
cmgen
: مولد أصول الإضاءة القائم على الصور
filamesh
: محول شبكة
glslminifier
: يقلل من كود مصدر GLSL
matc
: مترجم المواد
يعرض matinfo
معلومات حول المواد المجمعة باستخدام matc
mipgen
ينشئ سلسلة من المستويات المتوسطة من الصورة المصدر
normal-blending
: أداة لمزج الخرائط العادية
يقوم resgen
بتجميع النقط الثنائية في موارد قابلة للتضمين
roughness-prefilter
: تقوم بالتصفية المسبقة لخريطة الخشونة من الخريطة العادية لتقليل التعرجات
specular-color
: يحسب اللون المرآوي للموصلات بناءً على البيانات الطيفية
web
: روابط جافا سكريبت والوثائق والعينات
يرجى الاطلاع على الترخيص.
هذا ليس أحد منتجات Google المدعومة رسميًا.