باختصار
- ينشئ Runtime Virtual Texturing (RVT) بيانات الأنسجة على GPU أثناء التشغيل، ويخزّن بيانات التظليل مؤقتًا للمساحات الواسعة.
- يتطلب الإعداد الأساسي تجهيز أصل RVT، وRVT Volume في المشهد، ومواد مناسبة، وإسناد المكونات.
- تُعد مكونات Landscape وLandscape Splines وStatic Mesh وInstanced Static Mesh من الخيارات المناسبة وفقًا للتوثيق.
- قد يقلل نوع المادة المستند إلى YCoCg بعض التشوهات في تدرجات الألوان، لكنه يضيف 25 بالمئة إلى استهلاك الذاكرة وتكلفة أخذ العينات.
Runtime Virtual Texturing (RVT)، كما يرد في التوثيق الرسمي لـ Unreal Engine، أسلوب ينشئ بيانات الأنسجة على GPU عند الحاجة ويخزّن معلومات التظليل مؤقتًا للأسطح الواسعة. ويمكن الاستفادة منه في مشاريع التصيير المعماري، ولا سيما عند العمل مع أسطح Landscape والمواد الملتصقة بالتضاريس وspline. تستند الخطوات أدناه إلى وثائق إعداد RVT من Epic. لا تستهدف الوثائق إصدارًا محددًا من Unreal Engine للإعداد العام؛ لكن ملاحظة التوافق تشير إلى أن نوع المادة القديم “Base Color, Normal” كان متاحًا في UE 4.23، وأنه حُوّل تلقائيًا إلى نوع آخر في UE 4.24.
متى يكون RVT مناسبًا للمشهد؟
يمكن استخدام RVT عند تطبيق مواد معقدة أو متعددة الطبقات أو إجرائية على أسطح واسعة. ويذكر التوثيق الرسمي من بين أبرز الاستخدامات تظليل Landscape، وLandscape Splines، ومواد شبيهة بالملصقات على المجسمات، ومزج العناصر مع التضاريس. وبما أن النظام يستطيع تخزين بيانات التظليل في مساحات كبيرة، فقد يسهم في سير العمل مع التضاريس والأسطح المشابهة في المشاهد الخارجية.
لا ينبغي الخلط بين RVT وStreaming Virtual Texturing (SVT). يرتبط كلا الأسلوبين بدقات أنسجة كبيرة وبتحميل البيانات إلى الذاكرة عند الحاجة. لكن GPU ينشئ بيانات texel الخاصة بـ RVT أثناء التشغيل، بينما تُجهّز بيانات SVT على القرص ثم تُحمّل. وتصف Epic تقنية SVT بأنها خيار مناسب للبيانات التي يستغرق إنتاجها وقتًا، مثل خرائط الإضاءة والأنسجة الكبيرة والمفصلة التي يعدّها الفنانون.
إعداد RVT: خمس خطوات أساسية
أنشئ أصل RVT. استخدم زر Add New في Content Browser أو قائمة النقر بالزر الأيمن، ثم افتح خيار Runtime Virtual Texture ضمن فئة Materials & Textures. يربط هذا الأصل بين الأحجام في المشهد والمواد التي تكتب البيانات إلى RVT أو تقرؤها منه. افتح الأصل واضبط الحجم وحجم tile ونوع Material Attributes المطلوب دعمه.
أضف Runtime Virtual Texture Volume إلى المشهد. يضع الحجم أصل RVT الذي أنشأته في المشهد. وتشمل الخطوات الواردة في التوثيق إضافة الحجم من لوحة Modes أو سحبه إلى المشهد من لوحة Place Actors. يجب أن يحتوي الحجم على العنصر الذي ستُكتب بياناته إلى RVT؛ وغالبًا ما يكون هذا العنصر Landscape أو سطحًا شبيهًا بالتضاريس.
اضبط الحجم وفق حدود المصدر. عند تحديد RVT Volume، استخدم حقل Source Actor ضمن قسم Transform from Bounds في لوحة Details لتحديد العنصر المعني. بعد ذلك، يساعد زر Set Bounds على ضبط موضع الحجم ومقياسه ودورانه بما يتوافق مع العنصر. إذا كانت مكونات أخرى ستكتب إلى RVT، فتحقق مجددًا من أن الحجم يشملها.
جهّز المادة للكتابة وأخذ العينات. يُستخدم التعبير Runtime Virtual Texture Output في المادة لكتابة البيانات إلى RVT، بينما يُستخدم التعبير Runtime Virtual Texture Sample لقراءة البيانات من الأصل المعيّن. يجب أن تستخدم مواد المكونات التي ستكتب إلى RVT حقل Virtual Texture في المادة أو أن تتضمن RVT Material Expressions المناسبة. ويمكن استخدام Runtime Virtual Texture Sample Parameter لتغيير الأصل في مثيل مادة منفصل؛ ويجب أن يتطابق نوع المادة للأصل المحدد مع النوع الموجود في عقدة المعامل.
تحقق من إسناد المكونات. أضف أصل RVT المعني إلى مصفوفة Render to Virtual Textures في لوحة Details للمكوّن. يجب أن تكون المكونات التي تكتب إلى RVT أو تأخذ عينات منه داخل حدود الحجم. كما يجب إسناد أصل RVT إلى حجم في المشهد وإعداد المادة بالطريقة الصحيحة؛ فإذا غاب أحد هذه الشروط، فقد لا يتشكل تدفق البيانات المتوقع.
خيارات نوع المادة وخريطة الإضاءة
يحدد Material Type المحدد في أصل RVT نوع البيانات التي سيجري تخزينها. الخيارات التالية واردة في التوثيق؛ وهي أنواع تلبي احتياجات مختلفة للبيانات، وليست إعدادات موصى بها لكل مشروع.
| الإعداد | نوع المادة | البيانات المخزنة / ملاحظة |
|---|---|---|
| Material Type | Base Color | يخزن اللون الأساسي فقط؛ وتنسيق الضغط هو BC1. |
| Material Type | Base Color, Normal, Roughness, Specular | يخزن اللون الأساسي وبيانات الناظم والخشونة والانعكاس المرآوي؛ ويُستخدم نسيجا BC3 للضغط. |
| Material Type | YCoCg Base Color, Normal, Specular | يرمّز اللون الأساسي بتنسيق YCoCg؛ ويتضمن أيضًا بيانات الناظم والخشونة والانعكاس المرآوي. |
| Material Type | World Height | يخزن قيمة ارتفاع مطبّعة وفق إحداثيي Z الأدنى والأعلى داخل RVT Volume. |
| Material Type | Mask4 | يخزن قناعًا بأربع قنوات، تتراوح قيمة كل قناة فيه بين 0 و1. |
قد يساعد ترميز YCoCg على الحد من مشكلات مثل انحراف اللون والتدرج المتقطع التي تظهر في الانتقالات اللونية الناعمة ضمن بيانات اللون الأساسي. لكن ذلك يستهلك 25 بالمئة إضافية من الذاكرة، ويضيف تكلفة أداء عند أخذ عينات من بيانات النسيج الافتراضي وفك ترميزها، وفقًا للتوثيق. لذلك، راعِ أثر النوع على الذاكرة والأداء إلى جانب الجودة البصرية عند اختياره.
يمكن تفعيل دعم خرائط الإضاءة ذات الأنسجة الافتراضية من إعداد Enable virtual texture lightmaps في المسار Project Settings › Engine › Rendering. وتشير Epic إلى أن هذه الميزة قد تسهم في أداء وجودة بث عمليات bake لخرائط الإضاءة. يتحكم r.IncludeNonVirtualTexturedLightmaps في إنشاء خرائط الإضاءة غير الافتراضية وحفظها. أما r.VT.EnableLossyCompressLightmaps فيفعّل الضغط مع فقدان البيانات لخرائط الإضاءة؛ ويشير التوثيق إلى أن هذا الخيار يقلل جودة أنسجة خرائط الإضاءة.
سير عمل التصيير المعماري والأخطاء الشائعة
يمكن النظر في استخدام RVT، خصوصًا في المشاهد المعمارية التي تضم أسطحًا واسعة من المناظر الطبيعية ومواد Landscape ومكونات ثابتة يُراد دمجها مع التضاريس. وإلى جانب Landscape وLandscape Splines، تُذكر مكونات Static Mesh وInstanced Static Mesh ضمن الخيارات المناسبة. في المقابل، لا تُعد المجسمات الهيكلية والمتحركة خيارات جيدة. ولأن محتوى RVT لا يُحدّث بالكامل في كل إطار، يُتوقع عمومًا أن تكون العناصر التي تكتب إلى النظام Static.
من أخطاء الإعداد الشائعة:
ألا يشمل RVT Volume المكونات التي تكتب إلى RVT أو تأخذ عينات منه.
توقع ظهور نتيجة قبل إعداد المادة أو إسناد أصل RVT الصحيح إلى المكوّن.
استخدام المجسمات المتحركة والمتحركة بالتحريك كما لو كانت ذاكرة تخزين مؤقت للتظليل تُحدّث بانتظام.
اختيار YCoCg من دون احتساب تكلفة الذاكرة وأخذ العينات الإضافية.
تجاهل تأثير الضغط مع فقدان البيانات لخرائط الإضاءة على الجودة.
يمكن إعداد مسار بديل للمنصات التي لا تدعم الأنسجة الافتراضية باستخدام Virtual Texture Feature Switch في مادة المشهد. عمليًا، افحص أصل RVT وحدود الحجم وعقد المادة وإسناد المكونات كلًّا على حدة أولًا. ثم قارن النتيجة البصرية والأداء في مشهدك. لا يحدد التوثيق متطلبات عتاد بعينها أو قيمة إعداد واحدة تصلح لكل مشروع؛ لذلك من المهم التحقق من الخيارات وفقًا لظروف المشروع.
المصادر
2 مصادرلا نعيد نشر نصوص المصادر؛ الاقتباسات القصيرة مشار إليها، وما تبقى ملخص وتعليق من إعدادنا.
بالنسبة إلى مكاتب التصيير المعماري في تركيا، يستحق RVT التجربة في المشاهد التي تضم مساحات واسعة من المناظر الطبيعية وهندسة ثابتة مندمجة مع التضاريس. وتعتمد النتيجة على الإعداد الصحيح للأصل والحجم والمادة وإسناد المكونات معًا؛ لذلك يساعد الاختبار أولًا على جزء نموذجي من المشهد على كشف المشكلات المحتملة قبل تعميم النظام على المشروع بأكمله.
لا تحدد المصادر متطلبات معينة لبطاقة الرسوميات أو الذاكرة. لذا ينبغي للمكاتب قياس الأداء والجودة في مشاهدها، مع احتساب تكلفة الذاكرة وأخذ العينات الإضافية، ولا سيما مع YCoCg. كما ينبغي إدراج ملاءمة العناصر المتحركة وتأثير ضغط خرائط الإضاءة على الجودة ضمن قائمة الفحص قبل التسليم.
الأسئلة الشائعة
ما وظيفة Runtime Virtual Texturing في Unreal Engine؟
ينشئ RVT بيانات الأنسجة على GPU أثناء التشغيل، ويخزّن بيانات التظليل مؤقتًا للمساحات الواسعة. ويمكن استخدامه لتظليل Landscape وspline ومزج العناصر مع التضاريس.
كيف أضبط RVT Volume؟
أضف Runtime Virtual Texture Volume إلى المشهد. ومن قسم Transform from Bounds في لوحة Details، حدد Source Actor ثم استخدم زر Set Bounds لضبط الحجم وفقًا للعنصر.
ما العناصر غير المناسبة لـ RVT؟
لا يذكر التوثيق المجسمات الهيكلية والمتحركة ضمن الخيارات الجيدة. وبما أن محتوى RVT لا يُحدّث بالكامل في كل إطار، يُتوقع عمومًا أن تكون العناصر التي تكتب إلى RVT من نوع Static.



