باختصار
- ينشئ RVT الأنسجة على GPU أثناء التشغيل، ويمكن استخدامه مع المواد الإجرائية أو متعددة الطبقات.
- يحمّل SVT الأجزاء الظاهرة على الشاشة من الأنسجة المخزنة على القرص إلى ذاكرة GPU على هيئة tiles.
- يجب أن تستخدم عقد Texture Sample في المواد التي تستعمل أنسجة SVT نوع Virtual sampler مناسبًا.
- يمكن فحص تكلفة الأنسجة الافتراضية باستخدام الأمرين `stat virtualtexturing` و`stat virtualtexturememory`.
تشرح الوثائق الرسمية لـ Unreal Engine من Epic Games أن الأنسجة الافتراضية وسيلة لمعالجة الأنسجة الكبيرة أثناء التشغيل مع استخدام أقل للذاكرة وأكثر اتساقًا. ويتألف النظام من طريقتين: Runtime Virtual Texturing (RVT) وStreaming Virtual Texturing (SVT). يوضح هذا الدليل مجالات استخدام كل منهما في التصيير المعماري والمشاهد الآنية، وكيفية ربط أنسجة SVT بالمواد، وطرق التحقق من الأداء. ولا تحدد الوثائق المصدر إصدارًا معينًا من Unreal Engine تنطبق عليه هذه المعلومات.
1. RVT أم SVT؟ الاختيار بحسب الغرض من الاستخدام
في RVT، تنشئ GPU بيانات النسيج أثناء التشغيل. وتصف وثائق Epic هذه الطريقة بأنها مناسبة للأنسجة الإجرائية والمواد متعددة الطبقات واستخدام المواد المعقدة في المناظر الطبيعية. ومن الأمثلة الأخرى التي قد تكون فيها RVT مفيدة مسارات عمل Landscape Spline، واستخدام decal مع mesh، والمزج العام بين المناظر الطبيعية والعناصر. ولا يعني هذا الوصف أن decal تُدمج مباشرةً مع المناظر الطبيعية أو العناصر.
أما SVT فتستخدم أنسجة مجهزة مسبقًا على القرص. يقسّم النظام مستويات mip للأنسجة إلى tiles ثابتة الحجم؛ وتحدد GPU الأجزاء اللازمة للبكسلات الظاهرة على الشاشة، ثم تُحمّل هذه tiles إلى ذاكرة التخزين المؤقت في GPU. وهكذا، عند التعامل مع الأنسجة عالية الدقة، تُعالج المناطق اللازمة بدلًا من تحميل الأجزاء غير المرئية كلها. وتناسب SVT البيانات التي يستغرق إنتاجها وقتًا، مثل خرائط الإضاءة والأنسجة الكبيرة التي يجهزها الفنانون.
| الطريقة | تدفق البيانات | الاستخدامات المذكورة في الوثائق |
|---|---|---|
| RVT | تُنشأ بيانات النسيج على GPU أثناء التشغيل. | المواد الإجرائية أو متعددة الطبقات، ومواد المناظر الطبيعية المعقدة |
| SVT | تُحمّل بيانات النسيج من القرص، وتُخزّن tiles اللازمة في الذاكرة. | خرائط الإضاءة والأنسجة الكبيرة الغنية بالتفاصيل |
2. تحويل أنسجة SVT والمواد
عند استخدام SVT، يجب تفعيل Virtual Texture Streaming في Texture Asset. كما يجب أن تستخدم عقد Texture Sample في المواد التي تستعين بهذا النسيج نوع Virtual مناسبًا من sampler. ويمكن لخيار التحويل في Content Browser إضافة الأنسجة المحددة والمواد التي تشير إليها إلى قائمة التحويل.
حدد Texture Asset المراد تحويله إلى SVT في Content Browser.
انقر بزر الفأرة الأيمن على الأصل واختر
Convert to Virtual Texture.في نافذة التحويل، تحقق من الأنسجة المدرجة والمواد التي تشير إليها.
اضغط
Okلبدء التحويل.بعد ذلك، تحقق من أن عقد Texture Sample في المواد المعنية تستخدم نوع Virtual sampler الصحيح.
يمكن أيضًا تحويل النسيج يدويًا. افتح Texture Asset، ثم فعّل Virtual Texture Streaming ضمن قسم Texture في لوحة Details. بعد هذه الخطوة، قد تصبح المواد الحالية التي تستخدم النسيج غير صالحة. لذا ينبغي تغيير عقدة Texture Sample في المواد المعنية إلى نوع Virtual sampler مناسب. ويستخدم المثال في الوثائق Virtual Color لنسيج لون افتراضي؛ أما نوع sampler Color فلا يطابقه.
عند إضافة نسيج افتراضي إلى مخطط مادة، يعيّن Unreal Engine نوع Virtual sampler المناسب تلقائيًا. لكن إذا أُنشئ Texture Sample Parameter لاستخدامه في Material Instances، يصبح نوع sampler في المادة الأساسية مهمًا: إذ تستخدم العينات التابعة النوع المحدد في المادة الأساسية. ولا يمكن تعيين نسيج افتراضي إلى خانة parameter في مادة أساسية لا تستخدم نوع Virtual.
3. UDIM وخرائط الإضاءة ذات الأنسجة الافتراضية
يمكن لـ Unreal Engine استيراد الصور التي تتبع نمط تسمية UDIM على هيئة Virtual Texture Asset واحدة. ويجب أن تحمل الملفات الاسم الأساسي نفسه ورقم إحداثيات من أربعة أرقام. وتستخدم الوثائق الصيغة التالية:
BaseName.####.[Support Image Format]على سبيل المثال، يؤدي الملف MyTexture.1001.png إلى البحث عن صور أخرى تحمل الاسم الأساسي نفسه وأرقام إحداثيات مختلفة. ويمكن أن تختلف دقة صور UDIM. وفي المثال الوارد في المصدر، تُؤخذ عينتان بحجم 2048x2048 وعينتان بحجم 128x128 ضمن ترتيب 2x2 وتُستخدم كأنها نسيج افتراضي واحد. ووفقًا لتوضيح المصدر، فإن ملء الصور الصغيرة لمساحة أكبر في هذا الترتيب لا يزيد استخدام الذاكرة على القرص أو أثناء التشغيل.
لتفعيل خرائط الإضاءة ذات الأنسجة الافتراضية، افتح المسار Engine › Rendering ضمن Project Settings، ثم استخدم خيار Enable virtual texture lightmaps. وتشير Epic إلى أن هذه الميزة قد تحسّن جودة إنشاء خرائط الإضاءة وأداء بثّها. كما تشرح الوثائق متغيرَي وحدة التحكم r.IncludeNonVirtualTexturedLightmaps وr.VT.EnableLossyCompressLightmaps. يفعّل الثاني الضغط مع فقدان البيانات في خرائط الإضاءة ذات الأنسجة الافتراضية؛ وتشير الملاحظة إلى أن ذلك قد يقلل جودة أنسجة خرائط الإضاءة.
4. قياس الأداء والأخطاء الشائعة
تكون تكلفة أخذ عينات الأنسجة الافتراضية أعلى من تكلفة أخذ عينات الأنسجة التقليدية. وينشئ كل مثال Virtual Texture في مخطط المادة عملية lookup. ويمكن دمج stacks للعينات التي تستخدم قيم UV ومصدر Sampler Source نفسيهما؛ إذ يمكن جمع ما يصل إلى 8 عينات تشترك في الشروط نفسها ضمن stack واحد. أما إذا اختلفت قيم UV، فقد تبقى stacks منفصلة، ما يؤدي إلى عمليات وصول إضافية إلى النسيج.
لفحص التكلفة في المشهد، افتح وحدة التحكم ونفّذ الأمر التالي:
stat virtualtexturingيعرض هذا الأمر تكلفة الأنسجة الافتراضية في المشهد بالمللي ثانية، إلى جانب العدادات المتعلقة بجداول الصفحات. ولعرض عدادات الذاكرة:
stat virtualtexturememoryلفتح شبكة عرض mip للمواد التي تستخدم SVT:
r.VT.Borders 1أوقف الشبكة بعد الانتهاء من الفحص:
r.VT.Borders 0أخطاء شائعة
عدم تصحيح نوع sampler: قد يؤدي التحويل اليدوي إلى جعل المواد غير صالحة. تحقق من اختيار نوع Virtual المناسب لعقد Texture Sample.
اعتبار النسيج الافتراضي بلا تكلفة: لا تلغي ميزة الذاكرة تكلفة أخذ العينات. قِس المشهد باستخدام أوامر الإحصاءات.
تجاهل اختلاف استخدام UV: قد يتعذر دمج stacks للعينات التي تستخدم قيم UV مختلفة، ما قد يرفع تكلفة المادة.
إغفال عيوب الصورة: قد تؤدي قيود mip منخفضة الدقة في الأنسجة المليئة بالضوضاء أو بالتفاصيل الدقيقة إلى ظهور aliasing أو تأثيرات Moiré. وقد يتسبب التحميل التفاعلي في SVT أيضًا في وصول بعض tiles متأخرة أثناء حركة الكاميرا، فتظهر بوضوح بعد ذلك.
في أعمال الهندسة المعمارية والتصميم الداخلي وarchviz، يمكن للفرق التي تعمل على المناظر الطبيعية الإجرائية والأسطح متعددة الطبقات والانتقالات بين العناصر والمناظر الطبيعية أن تضع RVT ضمن خياراتها. أما SVT فقد تساعد على إدارة استخدام الذاكرة في المشاهد التي تحتوي على أنسجة كبيرة أو مجموعات UDIM أو خرائط إضاءة. وقبل إدراجها في سير العمل، تحقق من توافق المواد وتكلفة GPU وتحميل tiles مع حركة الكاميرا. وبما أن الوثائق لا تذكر معلومات عن الإصدار، ينبغي التحقق من النتائج أيضًا في إصدار Unreal Engine المستخدم.
المصادر
2 مصادرلا نعيد نشر نصوص المصادر؛ الاقتباسات القصيرة مشار إليها، وما تبقى ملخص وتعليق من إعدادنا.
قد تساعد الأنسجة الافتراضية مكاتب الهندسة المعمارية والتصميم المعماري في تركيا على إدارة الذاكرة عند التعامل مع مجموعات أنسجة كبيرة ومشاهد تهيمن عليها المناظر الطبيعية. لكن هذا لا يعني الحصول تلقائيًا على تصيير أسرع في كل مشروع؛ إذ يجب أخذ التكلفة الإضافية لأخذ عينات الأنسجة الافتراضية وتأثير استخدام قيم UV مختلفة في الحسبان.
النهج الأكثر أمانًا هو تجربة الطريقة في مشهد نموذجي قبل تعميمها على المشروع بأكمله. ينبغي التحقق معًا من توافق المواد بعد التحويل، وعدادات ذاكرة GPU، وجودة الصورة في التفاصيل الدقيقة، وكيفية تحميل tiles أثناء حركة الكاميرا. كما ينبغي أن يتضمن قائمة التحقق لدى الفرق التأكد من سلوك الميزة في إصدار Unreal Engine المستخدم.
الأسئلة الشائعة
ما الفرق بين RVT وSVT في Unreal Engine؟
تنشئ RVT بيانات النسيج على GPU أثناء التشغيل. أما SVT فتحمّل الأجزاء الظاهرة من الأنسجة المخزنة على القرص على هيئة tiles.
كيف تُستخدم أنسجة SVT في المواد؟
يجب تفعيل Virtual Texture Streaming على النسيج، وأن تستخدم عقد Texture Sample في المادة نوع Virtual sampler مناسبًا. وتعرض قائمة التحويل الأنسجة والمواد التي تشير إليها.
كيف يُقاس أداء الأنسجة الافتراضية في Unreal Engine؟
يعرض `stat virtualtexturing` تكلفة المشهد والعدادات المتعلقة بجداول الصفحات. أما `stat virtualtexturememory` فيعرض عدادات ذاكرة الأنسجة الافتراضية في المشهد.



