All But Reality

Imagine a catchphrase here

Simple template. Background and Customization by Shihab Elagib. Powered by Blogger

August 31, 2017

عن القيمز والجرافيكس: دقة التصيير الداخلية (والمزيد عن الدقة عموماً)

لقد كتبت سابقاً عن الدقة في اولى المقالات المعنونة "عن القيمز والجرافيكس،" الجزء الاول من هذا المنشور اضافة لما ذكر في سابقه.

عندما تجد صورة رقمية بدقة 2.1 ميقابيكسل، ما يوازي 1920x1080 بإصطلاح اخر، هذه القيمة هي قيمة البكسلات الممثلة في المحتوى الرقمي وليست قيمة مفهومة لعين الانسان، مجرد سطور من الشفرات الرقمية ينبغي اولاً تحويلها الى صورة مرئية يمكن للانسان استيعابها. هذه الاخيرة هي وظيفة وسائط العرض المرئية، سواء كانت شاشة تقليدية او جهاز بروجيكتر ضوئي، او حتى نظارات واقع افتراضي او مدعّم.

بحكم ان الصورة الرقمية مجرد سوفتوير غير محكوم بالقواعد الفيزيائية التقليدية التي تحكم الاجسام الفيزيائية، دقة هذه الصورة ايضاً ليست محدودة بها، بصورة مباشرة على الاقل. فعلياً الصورة الرقمية محدودة بقدرات المعالجة والتخزين المتاحة، كليهما عنصران فيزيائيان، لكن ما تتيحه تكنولوجيا اليوم يتخطى قدرات العرض بكثير. من الممكن ان تتراوح هذه الدقة من بعض بكسلات تعد على اصابع اليد الواحدة، الى ما قد يصل الى 32000x32000 بكسل، هذه القيمة الاخيرة هي اقصى قيمة يمكن لصيغة الـBMP البدائية تخزينها، وان ادخلنا الصيغ غيرالنقطية (تعرف ايضاً بالـ Vector image formats، صور ممثلة بمعادلات رياضية للخطوط عوضاً عن نقاط او بكسلات) فالـ"دقة" الموازية لهذه الصور تصبح عملياً لا نهائية! 


صورة بدقة 5x5 بكسل مكبرة 100 مرة (الى 500x500) لكي يمكن رؤيتها في الشاشات الحديثة.
الصورة اصلاً بصيغة BMP، تم تحويلها لـPNG لغرض الرفع الى الانترنت.

محتويات ملف الـBMP الذي يحوي الصورة اعلاه.

على اليد الاخرى هنالك وسائل العرض الفيزيائية. هذه الوسائط (الشائع منها، على الاقل) تستعمل بكسلات فيزيائية عبارة عن مجموعة من المصادر ضوئية (LEDs، بالاضافة لتقنيات اخرى) للالوان الرئيسية (غالباً احمر، اخضر واصفر). الدقة الفيزيائية لوسيط العرض محكومة بكم من تلك البكسلات بإمكان المصنع جمعها في لوحة واحدة والحفاظ على نسب الابعاد المطلوبة لتلك اللوحة، 19 بوصة او 24 او حتى 70، اليوم، الغالب الاعظم من وسائط العرض تأتي بدقة بين 1280x720 و 1920x1080، واقصى قيمة في وسيط عرض متاح اليوم للمستخدمين هي 7680x4320، اقل بـ98% من اقصى دقة تتيحها صيغة الـBMP التي صممت قبل قرابة الثلاثين سنة!


الـ"بكسل" الفيزيائي، كل مجموعة من ثلاثة الوان تمثل بكسلاً واحداً.


ذكرت اعلاه ان دقة الصورة الرقمية محدودة بقدرات المعالجة والتخزين المتاحة، وهذه هي النقطة المحورية في هذا الحديث. للمعالجات قدرة على معالجة كمية معينة من البيانات في وحدة من الزمن (لفظ "معالجة" هنا يشمل كل العمليات الحسابية والمنطقية وعمليات الذاكرة من قراءة وكتابة)، زيادة هذه الكمية تعني زيادة اكبر في الزمن اللازم لاخراج الناتج المطلوب. الدقة هي ببساطة كمية البيانات في الصورة (باعتبار ان كل بكسل = بيان). افترض معي بطاقة صورية بإمكانها ارسال 5,000 بكسل في الثانية لوسيط العرض (ما يعرف بالـ Pixel fillrate)، واستخدمها لعرض صورة من 10,000 بكسل، نظرياً هذا سيعني ان البطاقة ستحتاج ثانيتين لرسم الصورة بالكامل.

 الارقام السابقة للتوضيح لا اكثر، القيم الواقعية لكلاً من قدرات البطاقات الصورية الحديثة والزمن المتوقع لرسم الصور اكبر واقل -على التوالي- بكثير منها. بالاضافة لذلك، مقياس الـFillrate مجرد مقياس نظري لا يبين بالضرورة ما سينتج من التجربة العملية، لكن تأثير الدقة على الاداء النهائي للعرض يظل امراً واقعاً وزيادة الدقة لا تزال تعنى مجهوداً اكبر من الهاردوير وانخفاضاً في معدلات المعالجة الصورية. او بلغة القيمز: زمن اطارات (Frame time) اعلى ومعدل تحديث اطارات (FPS) اقل.

لهذا السبب، ظل خيار تعديل دقة تشغيل القيمز خياراً رئيسياً في العاب الحاسب الشخصي حتى اليوم. ان كان حاسبك ذو قدرة حوسبية منخفضة بإمكانك تخفيض الدقة الكلية لتقليل الزمن اللازم لتصيير كل فريم وزيادة الـFPS الكلي مقابل التضحية بجودة الصورة. الفكرة بسيطة وعملية، لكنها ليست ذات كفاءة عالية. تقليل الدقة الكلية للقيم يؤثر على كل ما يعُرض داخل نافذة هذا التطبيق، لكن ليس كل ما يعرض داخل هذه النافذة ذو تأثير كبير على الاداء في الدقة العالية.

تصيير القيمز يتم على عدة مراحل، يمكنك -لغرض هذا النص- تقسيمها لاثنين: تصيير محتوى اللعبة نفسه من شخصيات وطبيعة ومباني و اشجار وغيرها، سمه المشهد الرئيس، وتصير واجهة المستخدمة الصورية التي تعرف بالـ Heads-Up Display او الـ HUD


الـ HUDs مجرد صور بسيطة لا تتطلب الكثير لتصييرها حتى في دقات عالية، ولكنها تخضع ايضاً لدقة القيم الكلية (بما انها ترسم داخل نافذة القيم). تقليل هذه الدقة سيخفض من جودة هذه الواجهة بدون زيادة تذكر في الاداء (ناتج من هذه الواجهة فقط، وليس القيم ككل). اذا لماذا لا نقوم فقط بتقليل دقة تصيير الخطوات ذات التأثير الكبير على الاداء، وترك تلك قليلة التأثير كالـHUD لتصيير في دقتها العالية؟ هنا تظهر فائدة اعدادات دقة التصيير الداخلي Internal Rendering Resolution و الـ Resolution Scaling، كما تعرف في الالعاب الحديثة.

فكرة اعدادات دقة العرض الداخلية هي بالكامل ما تمت الاشارة اليه في الفقرة السابقة، استخدام دقة عرض منخفضة لتصيير العناصر المعقدة من القيم، وترك العناصر غير المعقدة (والتي في غالبها تعني الـHUDs وقوائم اللعبة كالقائمة الرئيسية واي قائمة اخرى داخلها) تصيير بالدقة الكلية العالية. 



لنأخذ مثالين لتوضيح تأثير التقنية على الاداء وجودة الصورة من لعبتي DOOM الاخيرة، و Battlefield 1، ولنبدأ برائعة id Software الشهيرة DOOM. التجربة تمت في احدى المراحل المبكرة في اللعبة بواجهة OpenGL 4.5. اغلب الاعدادات كانت في اقصى قيمها، عدا اعداد سعة الذاكرة المخصصة للـtextures الذي ترك في ثاني اعلى قيمة، واعدادات الـMotion Blurring و الـChromatic Aberration التي اغلقت تماماً. 
هذه التجارب تمت على حاسب شخصي بمعالج Intel Core i7 4770k و بطاقة صورية Nvidia Geforce 780Ti (موديل MSI GAMING) غير معدلين.

 الصورة التالية التقطت على دقة 1920x1080 (او 1080p) بدون اي تغيير في الدقة الداخلية.



والان لنرى ماذا يحدث عن تغيير دقة العرض الداخلية لـ 67% من الدقة الكلية (ما يعادل دقة 1280x720 او 720p) مرة، ولنقارنها ايضاً بدقة 720p كاملة (بدون تغيير في الدقة الداخلية)، ولنركز على مناطق بعينها مع تكبيرها ليتضح التأثير.



من الصفين الاولين ستلاحظ تردياً كبيراً في الجودة عند الانتقال من 1080p كاملة لـ720p كاملة او موازية، مع وجود زيادة طفيفة في هذا التردي في حالة الـ720p الموازية. السبب غالباً يرجع لخوارزمية الاستقراء الداخلي (Upscaling interpolation) التي يستخدمها محرك اللعبة. 
في الصف الثالث ستلاحظ اكبر فائدة ملاحظة لخيارات الـresolution scaling، المحافظة على جودة الـHUDs كما هي. لم يحدث اي تغيير في جودة الـHUD بين الـ1080p والـ720p الموازية، بينما فقدت اطراف الرموز والارقام حدتها مع مط الصورة الذي حدث في دقة الـ720p الكاملة. هذا التأثير يمكن ان يلاحظ ايضاً في قوائم اللعبة الرئيسية:



لكن ماذا عن الاداء؟ حسبما قلت اعلاه، من المفترض ان يكون الاداء في حالتي الـ720p الكاملة والـ1080p المصييرة داخلياً بـ67% من الدقة الكاملة متشابهاً او متطابقاً حتى، والواقع لا يختلف عن ذلك.



كلاً من حالتي الـ720p الكاملة والـ720p الموازية نالا تقريباً نفس القِيَم، بمتوسط معدل اطارات 156~155 فريم في الثانية، اكثر بـ 57% من المتحصل عليه في دقة 1080p كاملة.
ملحوظة: اقصى قيمة يتيحها محرك هذه اللعبة للـFPS هي 200. اختبار اللعبة في دقتي 720p الكاملة والموازية تمكنا من ايصال المعدلات الى ذلك الحد (لكن لفترات بسيطة من التجربة، لحسن الحظ)، لذا ليس من المستبعد ان تكون المعدلات المتوسطة لهذه القيم اعلى من المذكورة اعلاه. لا يعني انهما لن يكونا غير متساويين لكن.

لننتقل للمثال الثاني في هذا النص، تحفة DICE الفنية Battlefield 1. التجربة تمت على نفس الجهاز. جميع الاعدادت تركت في اقصى قيمها عدا الـAmbient Occlusion التي استخدمت فيها تقنية الـSSAO. ولنبدأ ايضاً بالصورة الكاملة للمشهد الذي ستجري عليه المقارنة:



ومرة اخرى، لنجري المقارنة على شرائح لعينات مكبرة من الصورة مصييرة مرة على دقة 1080p كاملة، مرة بـ67% من دقة الـ1080p، ومرة بدقة 720p كاملة.



كما هو الحال في المثال السابق، سترى تردياً كبيراً في الجودة عند النزول من دقة الـ1080p الكاملة، لكن هذه المرة، على عكس مثال DOOM، ستجد ان الـ720p الموازية افضل جودة من الـ720p الكاملة بصورة ملحوظة، غالباً نتيجة للخوارزميات التي يستخدمها محرك Frostbite عند مط الصورة داخلياً. ولكن كما هو الحال في مثال DOOM، لا يوجد فرق في جودة الـHUD بين دقتي الـ1080p الكاملة والـ720p الموازية، مع بهتان حواف الارقام والرموز في حالة الـ720p الكاملة.

اما عن الاداء:



نفس الذي وجدناه في السيناريو السابق، الفروقات بين 720p الكاملة والموازية لم تتعدى الـ2%، ما يسميه الاحصائيون "هامش خطأ،" او بلغة مبسطة: لا يوجد فرق بين الحالتين! كلاهما لكن اعلى بـ 48% من اداء دقة الـ1080p الكاملة.


وهذا هو كل مافي الامر. اعدادات الـResolution Scaling تقنية تسمح للمستخدم بالتضحية بدقة العناصر التي تؤثر في الاداء لوحدها، تاركة ما غيرها دون تغيير في الجودة، وبدون اي فرق في المحصلة النهائية للاداء. هي ليست هنالك لتحسين الجودة، بل هي هنالك كباب اخر لللاعبين على حواسيب ذات اداء منخفض لاختيار انسب سبل تشغيل الالعاب بالنسبة لهم. 

للاسف، هذه التقنية لا تزال محصورة في عناوين بسيطة نسبياً وفي بعض الاحيان تحت اسماء مختلفة. سلسلة ARMA مثلأ تسميها بدقة التصيير الداخلي Internal Rendering Resolution، بينما Doom و Street Fighter V تسميانها الـResolution Scaling المستخدم اعلاه. لحسن الحظ هنالك محاولات لاضافة مثل هذه الخيارات لعناوين اخرى كتعديل DSFix لالعاب الـDark Souls، كما نجد ان ستوديوهات مثل DICE تبنت هذه التقنيات في العابها منذ Battlefield 4 وانتقلت العدوى لعناوين مبنية على محركها كما هو الحال مع Mass Effect Andromeda. ومن يدري، ربما تنتقل العدوى للمزيد وتصبح هذه التقنية امراً متوقعاً في كل عناوين الحاسب الشخصي!