الواقع الافتراضي انفيديا GameWorks VR..هل يستحق التجربة؟
بدأنا مؤخرا نعيش الحلم الذي لم نكن نتوقع أن يتحقق, وهو تجربة أجهزة الواقع الافتراضي الذي يعتبر اليوم التجربة الأكثرة متعة في عالم الألعاب الذي يضيف إليه الكثير من التجربة الواقعية. والكثير من الشركات في هذا المجال بدأت تكشف عن ما في جعبتها وكلن ينافس الأخر فيما يقدمه, ويبدو أن انفيديا أيضا مصممة على تقديم تجربة خاصة من قبلها تنافس فيه الأخرين بما تقدمه. انفيديا تطلق ما تسميه تظليل متعدد الدقة لتحسين أداء الواقع الافتراضي وإنشاء تلك القدرة مع مجموعة أدوات GameWorks خاصتها لتقدم تجربة مغايرة نوعا ما عن الحلول الأخرى الموجهة لمطوري الألعاب.
ماهي المشكلة التي جعلت انفيديا تطور حلول مساعدة أخرى؟
أحد المشاكل مع الواقع الافتراضي مقارنة مع تصيير الشاشة القياسية هو أن العدسات التي ننظر من خلالها من أجل تجربة الواقع الافتراضي تتطلب صور ملتفة تقابل بصريات الشاشة. إذا قمت بتصيير اللعبة كما لو أنها تعرض على شاشة LCD تقليدية، ومن ثم حجمت الصورة كي تقابل مجال المشاهدة، سوف ينتهي بك الأمر إلى تصيير العديد من البكسلات التي لن تتم عرضها أبدا. والمشكلة الأخرى هي أن التفاصيل تصب في حواف الشاشة التي لاتحتاج إليها عند المشاهدة, أي أن العين البشرية ترى تفاصيل أكثر بكثير بالنظر مباشرة في الوسط من ثم حول حوافها.
الواقع الافتراضي متطلب للغاية فيما يخص أداء التصيير. حيث كل من أجهزة Oculus Rift و HTC تتطلب 90Hz، وهذا معدل إطار عالي جدا للعب على الشاشة. كما نحتاج أيضا إلى الوصول إلى معدل الإطار هذا وبنفس الوقت الحافظ على خمول قليل بين حركة الرأس وتحديثات العرض التي نشاهدها.بدوره قام السيد مايك أبراش في Oculus ببعض الأبحاث حول هذا الأمر، وشارك نتائجه مع الجميع التي تظهر أن الحركة نحو خمول ينبغي أن تكون عند معدل 20 جزء من الثانية لضمان تحقيق تجربة مريحة للاعبين.
المشكلة كما يقال هي أن لدينا مسار طويل، حيث ينبغي أولا أن تعالج وأن يتم تقديم الإطار الجديد من خلال المعالج المركزي، من ثم ينبغي للصورة أن يتم تصييرها بواسطة المعالج الرسومي، وأخيرا يتم مسحها وتقديمها نحو جهاز العرض. كل هذه الخطوات تضيف خمول إضافي. لذلك فإن مسارات التصيير التقليدية بالوقت الفعلي لم يتم تحسينها كي تقلل بالحد الأدنى من الخمول، بالتالي هذا يتطلب تغير في كيفية معالجة التصيير نوعا ما.
الأمر الآخر الذي يجعل أداء تصيير الواقع الافتراضي صعبا هو أنه يحتاج الى أن يصير المشهد مرتين. الآن كي نحقق مشاهدة العين النموذجية التي تمنح عوالم الواقع الافتراضي إحساس بالعمق المطلوب, فإن هذا يميل تقريبا ليضاعف حجم العمل الذي ينبغي القيام به لتصيير كل إطار، على كل من المعالج المركزي والمعالج الرسومي، وهذا بالتأكيد يأتي مع تكلفة أداء شديدة, أي نحن نحتاج الى منصة قوية جدا جدا جدا.
إذا الحقيقة الرئيسية حول التصيير النموذجي هو أن كل العينين تنظر إلى نفس المشهد. إنها ترى نفس الأشياء، من معظم وجهة النظر نفسها. وينبغي للحلول القادمة العثور على وسائل لإنجاز هذا الأمر بشكل موحد لتقليل تكلفة التصيير لتوليد هذه المشاهدة النموذجية.
هل وجدت انفيديا الحل إذا مع GameWorksVR؟
لن أستبق الأمر وأقول نعم ولكن هنا يأتي دور GameWorksVR لحل هذه المعضلة. الواقع الافتراضي من انفيديا مع مجموعة ادوات GameWorksVR تشير إلى حزمة تقنيات الهاردوير والسوفتوير التي أنشأتها انفيديا لمعالجة هاتين المشكلتين اللتان تم ذكرهما في كلامي السابق, وذلك لتقليل الخمول، وتسريع أداء التصيير النموذجي, لتحسين في النهاية من تجربة الواقع الافتراضي. بالنظر إلى أن كلا المشهدين النموذجين مستقلان عن بعضهما، فمن الواضح بديهيا أنك تستطيع موازاة تصييرها عبر اثنين من البطاقات الرسومية للحصول على تحسين هائل في الأداء.
قبل أن نتعمق في VRSLI، يجب أن تعرف كيف يعمل SLI عادة. على مدى سنوات، كان لدى انفيديا تصيير إطار بديل، أو AFR SLI. وفي حالة وجود اثنين من البطاقات الرسومية، كانت البطاقة الأولى تصير الإطارات الزوجية والأخرى تصير الإطارات الفردية. والطريقة الأفضل لإستخدام اثنين من البطاقات الرسومية من أجل تصيير الواقع الافتراضي هو قسم عمل سحب الإطار على نحو خاص عبر تصيير كل عين على بطاقة رسومية واحدة. هذا له خاصية جيدة تحسن من كل من معدلات الإطارات والخمول المتعلق بنظام البطاقة الرسومية الواحدة.
بعض الميزات الرئيسية للـ VR SLI API الخاصه بانفيديا, هو أن ذلك التطبيق يقدم بث أمر واحد الذي يتم نشره نحو كلا البطاقتين الرسوميتين. بينما امتلاك بث أمر مشترك لا يعتبر الطريقة الوحيدة لاستخدام الـ API، لكنه يعتبر الأكثر فعالية وفقا لوجهة نظر انفيديا. لذلك فإن امتلاك بث أمر مشترك يعني أن كل تغيرات الحاصلة و drawcalls سوف يتم تنفيذها على كلا البطاقتين. بالتالي النتيجة هي تصير المشهدة مرة واحدة، وذلك يتضمن كل الأغراض الظاهرة أمام كلتا العينين، بدلا من تقديم drawcalls منفصلة لكل عين مما يعني مجهود تصيير أكبر.
كما يمكن أن تجهز تخزين مؤقت ثابت واحد يحتوي على مصفوفة مشاهدة العين اليسرى، والتخزين الآخر من أجل مصفوفة مشاهدة العين اليمنى. بالتالي مع API الخاصه بانفيديا تقوم بعملية استدعاء لـ SetConstantBuffers الذي يأخذ كل من التخزينات المؤقتة المتواصلة للعين اليمنى واليسرى دفعة واحدة ويرسلها إلى البطاقات الرسومية المعينة.
الناحية السلبية الوحيدة هي أن المطورين سوف يدفعون تكلفة الاستدعاءات المنفصلة لكل مشهد. حيث إذا حولو المحرك لديهم كي يصير المشهد مرة واحدة، باستخدام نمط البث حينها يمكنهم أن يقتطعو الاستدعاءات لديهم إلى النصف وبالتالي تخفيض عبء المعالج المركزي بالنصف. مع العلم أن الاستدعاء الذي يتوجه إلى كلا البطاقات الرسومية ليس مكلفا من الاستدعاء الذي يتوجه إلى بطاقة واحدة فقط.
بالمناسبة، ذكرت انفيديا أن كل ذلك يمتد إلى العديد من البطاقات الرسومية لديك، وليس فقط اثنين. لذا يمكن للمطورين أن يستخدمو الـ affinity masking للتحكم بشكل واضح لكيفية تقسيم العمل عبر 4 أو 8 بطاقات رسومية أيضا.
وبالطبع يحتاج المطورين إلى أن يكونو قادرين على نقل البيانات بين البطاقات الرسومية. على سبيل المثال وبشكل تقني أكثر، بعد أن نقوم بتصيير كلا stereo pair، علينا أن نعيدهم إلى بطاقة رسومية واحدة لتنتجها إلى أجهزة العرض. بالتالي استدعاء API لنسخ التخزين المؤقت بين اثنين من البطاقات الرسومية المحددة، باستخدام ناقل PCI Express هو الحل هنا.
لكن المشكلة الأخرى هو أن ناقل PCI Express بحد ذاته في الواقع بطيء نوعا ما. الـ PCIe2.0 x16 يمنحك فقط سرعة 8GB/sec من عرض النطاق الترددي، وهذا ليس بالشيء الكثير، وهو يعني أن نقل مشهد العين يتطلب حول جزء من الثانية. وهذا يعتبر كسر كبير لوقت الإطار عند 90Hz، بالتالي هذا أمر ينبغي أخذه بعين الاعتبار.
للمساعدة في إيجاد حل للمشكلة، فإن API الخاص بانفيديا يدعم النسخ الغير متزامن. حيث يمكن للنسخة أن يتم معالجتها في الخلفية بينما المعالج الرسومي يقوم ببعض أعمال التصيير الأخرى، ويمكن للمعالج الرسومي لاحقا الانتظار للنسخة كي تنتهي, وبالتالي يكون لدى المطور الفرصة لخفض خمول PCIe وحل هذه المشكلة.
تظليل متعدد الدقة ماذا يقدم؟
المشكلة الأساسية التي تريد انفيديا حلها هو أن الصورة التي نراها على جهاز واقع افتراضي ينبغي أن يكون ملتويا لمواجهة الأثار البصرية للعدسات. لاحظ في هذه الصورة، كل شيء يبدو منحنيا ومشوها، لكن أثناء مشاهدته عبر العدسات، فإن المشاهد يرى صورة غير مشوهة. منصات VR الحالية كلها تحل هذه المشكلة بتصيير الصورة الطبيعية أولا ومن ثم القيام بالعبور عبر معالجة مسبقة تشابه الصورة إلى العرض المشوه.
المشكلة الجوهرية في اللعب هو كيفية عمل التصيير بالارتباط مع البصريات التي تجري في جهاز الواقع الافتراضي. أجهزة الواقع الافتراضي تستخدم عدسات تساعد المستخدمين للتركيز على شاشة على بعد إنشات من أعينهم، للمساعدة في التعويض عن المجال الواسع لرؤية العين البشرية. بالرغم من القيام بذلك، فإن هذه العدسات تقدم أيضا بعض التشوه، التي بدورها ينبغي أن يتم تعويضها عند مرحلة التصيير كي تحول الصورة على نحو مشابه بحيث تبدو صحيحة للمستخدم بعد أن تمر عبر العدسات.
من أجل تظليل متعدد الدقة فإن انفيديا تقسم الصورة إلى بوابات مشاهد متعددة، وتقوم بتدريج المشاهدة الخارجية إلى دقات أقل بينما تصيير منفذ العرض الأكثر عمقا إلى الدقة الكاملة، مما ينتج عنه صورة بالإجمال مكونة من بكسل أقل وبالتالي أسرع بالتصيير. الـMPA بدوره يسمح لانفيديا من إنشاء هندسة مشهد لمرة واحدة وتسليطها إلى منافذ عرض متعددة في الوقت نفسه، مما يزيل الحاجة إلى الكثير من الأعباء الزائدة التي قد تجري في تصيير نفس المشهد عدة مرات إلى عدة منافذ عرض .
كل هذا الكلام ماذا يفيدنا بالمحصلة؟
النتيجة النهائية للتظليل المتعدد الدقة هو أن انفيديا تزعم أنها تستطيع أن تعرض زيادة من 1.3x الى 2x في أداء تظليل البكسل بدون مساومة ملحوظة لجودة الصورة, وهو ما يعني تجربة أفضل بكثير من السابق. مثل العديد من التقنيات الأخرى في مجموعة أدوات GameWorks VR تعتقد انفيديا أنها تمتلك أفضلية تقنية كبيرة في تنفيذ ذلك الأمر بفضل تسريع التسليط المتعدد. ومع MPA لتخفيض تكلفة التصيير إلى منافذ عرض متعددة، فإنه يمكن لهاردوير انفيديا من الاستفادة بشكل أفضل من أفضليات الأداء لنهج التصيير المتبع من قبلها، مما يجعله بشكل أكبر طريقة أكثر كفاءة من تصيير الواقع الافتراضي التقليدي.
أعود الى السؤال الذي طرحته في عنوان هذا المقال...هل يستحق التجربة؟ بالطبع في النهاية يعود الأمر للمطورين فيما إذا كانوا يريدون تنفيذه بهذه الطريقة أم لا، بالتالي استخدام هذه التقنية بشكل كبير يعود إلى مطوري الألعاب وبنفس الوقت ما إذا كانت تستحق الأداء الحاصل وجهد التطوير الضروري الذي تقدمه انفيديا اليوم لجميع مطوري الألعاب.
أخيرا يعمل GameWorksVR على نظام ويندوز 7 والإصدارات الأعلى، وفيما يخص الهاردوير، فإن معظم الميزات ستعمل على جميع بطاقات GeForce GTX 500 والإصدارات الأعلى. الاستثناء الوحيد هنا هو أن تظليل متعدد الدقة يتطلب بطاقة سلسلة GTX 900 حصرا، بما أنه يعتمد على تظليل هندسة سريع والذي تمتلكه فقط معمارية ماكسويل.
?xml>