| الوحدة النمطية | المكتبة الأساسية | يصف |
|---|---|---|
runtime | - | الوحدات الأساسية |
runtime/cgpu | - | عارضات فرعيات أساسية ، واجهة برمجية رسومات متعددة المنصات لمنصات GPU الحديثة |
runtime/sugoi | - | الجهاز الفرعي الأساسي ، نموذج كائن ECS برمجة تعتمد على البيانات حقًا |
runtime/math | realTimeMath | عارضات فرعية أساسية ، مكتبة الرياضيات |
runtime/io | - | الجهاز الفرعي الأساسي ، خدمات الإدخال/الإخراج المتزامنة/غير المتزامنة |
runtime/task | fibertaskinglib ، مارل | الجهاز الفرعي الأساسي ، وهو نظام مهام كثيف الحساب يعتمد على coroutine |
runtime/binary | - | الجهاز الفرعي الأساسي ، التسلسل الثنائي |
runtime/platform | - | الجهاز الفرعي الأساسي ، واجهة النظام |
runtime/resource | - | عارضات فرعية أساسية ، إدارة الموارد غير المتزامنة |
runtime/type | - | الجهاز الفرعي الأساسي ، وتوفير وظائف متعلقة بـ RTTI |
runtime/lua | لوا ، لوا | الجزيرة الفرعية الأساسية ، باستخدام لوا كلغة الغراء |
SkrScene | - | وحدة المشهد ، إدارة موارد المشهد |
SkrRenderer | - | وحدة العارض ، إدارة الموارد ، خط أنابيب تقديم القيادة |
SkrImgui | Imgui | واجهة المستخدم وقت التشغيل لتصحيح الأخطاء |
SkrRenderGraph | - | عرض الرسم البياني على أساس CGPU |
SkrLive2d | Live2D | Live2d تقديم الظهر |
SkrInputSystem | GainInput | الحزمة العليا من الإدخال |
SkrAnim | أوز | إدارة موارد الرسوم المتحركة ، الوظائف الأساسية لحوسبة الرسوم المتحركة |
devtime/tweak | - | يوفر حلول استبدال الحرارة الثابتة خفيفة الوزن |
devtime/inspect | - | يوفر تصور حالة متغير وقت التشغيل |
SkrToolCore | - | إدارة وقيادة عمليات الخبز الموارد |
SkrAnimTool | أوز | استيراد وخبز الموارد المتعلقة بالرسوم المتحركة |
SkrGLTFTool | CGLTF | استيراد نموذج GLTF واخبزه |
SkrTextureCompiler | ISPCTextUreCompressor | خرائط الاستيراد والخبز |
SkrShaderCompiler | - | موارد استيراد وخبز المواد |
codegen | libtooling ، mako-template | توفير توليد الرمز |
| منصة | CI (dev) |
|---|---|
| منصة | D3D12 | D3D11 | فولكان | معدن |
|---|---|---|---|---|
| النوافذ | ✔ | ✔ | ن/أ | |
| ماكوس | ن/أ | ن/أ | ✔ | ❗ |
| منصة | PNG | JPEG | BMP | ICO | exr | TGA |
|---|---|---|---|---|---|---|
| النوافذ | libpng (v1.5.2) | libjpeg-turbo | ❗ | ❗ | ❗ | ❗ |
| ماكوس | libpng (v1.5.27) | libjpeg-turbo | ❗ | ❗ | ❗ | ❗ |
لعبة متعددة اللاعبين القائمة على ECS.
الجيل التالي من الواجهة الرسومية CGPU باستخدام StateBuffer. التخلي عن مفهوم PSO واستخدام StateBuffer كوصف الحالة لخط أنابيب الرسومات. غالبًا ما تستخدم واجهات برمجة تطبيقات خطوط أنابيب الرسومات التقليدية PSO ، والتي تحزم جميع حالات خطوط الأنابيب وتظليل ISA وتحميلها إلى وحدة معالجة الرسومات ككل:
يتكون StateBuffer من سلسلة من Statechunks ، ويصف كل Statechunk حالة خط أنابيب الرسوم ، ويصف StateBuffer الحالة الكاملة لخط أنابيب الرسوم من خلال مجموعة من Statechunks. بالمقارنة مع التدفق الكامل لـ PSO ، يمكن لـ StateBuffer إعداد مقاعد الحالة في موقع الرسم ودفع مفتاح الحالة إلى مجموعة سجل حالة GPU عند إنشاء DrawCall.
يمكن لـ StateBuffer تخفيف مشكلات الانتفاخ في الذاكرة بشكل كبير الناجم عن الانفجارات في مجموعات خطوط الأنابيب والتظليل ، وسيؤدي PSO إلى تفاقم هذه المشكلة بدلاً من ذلك.
WIP ...
تحتوي طبقة Rendertree الخاصة بـ GUI على وظائف الطباعة وتقديم كائنات العرض. يدعم البدائية الأساسية ، والمواد ، وفرش الألوان والفقرات النصية.
مثال على البرنامج الذي يدمج SDK Cubism Native ويستخدم الرسم البياني للرسم الفعال لنماذج Live2D.
يجمع نموذج Live2D بين أنواع بيانات المصدر المتعددة ، ويتم تحميل جميع أنواع البيانات وتحليلها بشكل غير متزامن. تجمع عملية تحميل النموذج بأكملها بين قراءة القرص الصلب ، وتدفق الذاكرة إلى ذاكرة الفيديو ، ودفق إلغاء الضغط على الملفات إلى ذاكرة الفيديو ، وتحميل الملفات المباشرة إلى ذاكرة الفيديو. يضمن العرض التوضيحي أن جميع أنواع عمليات الإدخال/الإخراج تظل فعالة في نطاق النطاق الترددي ، حيث لا يحتوي الخيط الرئيسي الذي يبدأ الطلب على توقف أو إيقاف مؤقت. يحتوي طراز Live2D غير المعالج على العشرات من ملفات JSON الصغيرة الحجم ، والعديد من ملفات قمة النماذج متوسطة الحجم ، وخرائط PNG 4K التي يجب فك تشفيرها ، وتشكيل مخطط ملف تعريف خط أنابيب I/O في الشكل أدناه.
يمكن لعدد الإطارات النهائي في Build في Build Build أن يكسر بسهولة آلاف الإطارات ، وهو ما يزيد عن عشرة أضعاف معايير التكوين الرسمية.
يوضح هذا العرض التوضيحي كيفية استخدام RenderGraph لتقديم مؤجل ، حيث جزء حساب الإضاءة هو تطبيقان: ComputeShdaer و Pixelshader. لم يتم إكمال تأثير تظليل الإضاءة الفعلي في العرض التوضيحي ، والتركيز على التحقق من جدوى عملية التأخير. يوضح هذا العرض التوضيحي أيضًا كيفية استخدام profiler المخصصة لتحديد تفاصيل تنفيذ RenderGraph.
يوضح هذا العرض التوضيحي كيفية استخدام RenderGraph لتقديم مثلث.
يوضح هذا العرض التوضيحي كيفية استخدام أخذ العينات الملمس في CGPU ، ويوضح العرض التوضيحي أيضًا كيفية تمكين عينات ثابتة/غير قابلة للتغيير في CGPU.
لقد انتهى الأمر بالتخلي عن النتائج التي اكتشفناها. لا يعني التخلي عن أن هذه التقنيات سيئة أو غير متوفرة ، لكننا تخلينا عنها بشكل انتقائي بعد النظر الشامل.
هذا هو مثلث الرسم متعدد الظهر.
تجميع الأمر التالي
> xmake l setup.lua
> xmake f -m debug -c
> xmake
نصائح:
/build يتسبب فشل الإصدار الحالي في مقاطعة Codegen أو مشاكل غير .xmake . إذا كانت هناك مشكلة أخرى ، فيرجى التأكد من الإبلاغ عن المشكلات؟xmake f -m debug -c -v في المقاطعة ؛xrepo remove --all -y يمكن استخدامه لتنظيف المستودع المثبت بشكل خاطئ ثم إعادة بنائه. يوصى باستخدام VSCode + Clangd كبيئة التحرير ، واستخدام Command xmake project -k compile_commands لإنشاء مجموعة البيانات المطلوبة بواسطة Clangd