تقديم لعبة 3D: مقدمة


يمكنك لعب Call of Mario الجديد: Deathduty Battleyard على جهاز الكمبيوتر المثالي للألعاب. انظر إلى شاشة 4K الرائعة والعريضة للغاية ، واستمتع بالمشهد الرائع والتفاصيل المعقدة. هل تساءلت يومًا عن كيفية وصول الرسومات إلى الشاشة؟ هل تساءلت يومًا كيف تجعل اللعبة الكمبيوتر يظهر لك كل هذا؟

مرحبًا بك في جولتنا في عرض الألعاب ثلاثية الأبعاد: رحلة للمبتدئين ، والتي ستتعلم من خلالها كيفية إنشاء إطار أساسي واحد على الشاشة.



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

لذا إذا أردنا حقًا أن نفهم كيف تشكل الألعاب ثلاثية الأبعاد الحديثة صورة ، فيجب أن نبدأ بمثال آخر: Winning Runنامكو ، صدر في عام 1988. ربما كانت هذه أول لعبة ثلاثية الأبعاد تمامًا تستخدم تقنيات لا تختلف كثيرًا عن التقنيات الحديثة. بالطبع ، أي ألعاب تجاوز عمرها 30 عامًا ليست على الإطلاق مثل لعبة Codemasters F1 ، التي تم إصدارها في عام 2018. لكن مخططات الدوائر متشابهة.


في هذه المقالة ، سنلقي نظرة على عملية إنشاء صورة أساسية لشاشة أو تلفزيون باستخدام لعبة ثلاثية الأبعاد. لنبدأ بالنتيجة النهائية ونسأل أنفسنا: "ما الذي أنظر إليه؟"

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

خيارات الإطار: بكسل وألوان


لنبدأ لعبة 3D ، كعينة سنأخذ شركة Crytek التي تم إصدارها في عام 2007 Crysis . فيما يلي صورة للعرض الذي يتم عرض اللعبة عليه:


تسمى هذه الصورة عادة بإطار . ولكن ما الذي ننظر إليه بالضبط؟ نستخدم عدسة ماكرو:


لسوء الحظ ، يفسد التوهج والإضاءة الخلفية الخارجية للشاشة الصورة ، ولكن إذا قمنا بتحسينها قليلاً ، نحصل على


نرى أن الإطار في الشاشة يتكون من شبكة من العناصر الملونة المنفصلة ، وإذا زدناها أكثر ، فسوف نلاحظ أن كل عنصر عبارة عن كتلة من ثلاث قطع. تسمى هذه الكتلة بكسل (اختصار لعنصر الصورة). في معظم الشاشات ، يتم طلاء وحدات البكسل باستخدام ثلاثة ألوان: الأحمر والأخضر والأزرق (RGB والأحمر والأخضر والأزرق). لعرض إطار جديد ، تحتاج إلى معالجة قائمة بالآلاف ، إن لم يكن الملايين ، من قيم RGB وحفظها في جزء من الذاكرة يمكن للشاشة الوصول إليه. تسمى هذه الأجزاء من الذاكرة المخازن المؤقتة ، أي أن الشاشة تستقبل محتويات المخزن المؤقت للإطار .

هذه هي النقطة النهائية للعملية برمتها ، لذا سننتقل الآن في الاتجاه المعاكس لبدايتها. غالبًا ما يتم وصف العملية بمصطلح التقديم (التقديم) ، ولكن في الواقع هي سلسلة من الخطوات المنفصلة المرتبطة ببعضها البعض ، والتي تختلف اختلافًا كبيرًا في جوهرها. تخيل أنك طاهٍ في مطعم حائز على نجمة ميشلان: النتيجة النهائية هي طبق من الطعام اللذيذ ، ولكن كم يجب القيام به لتحقيق ذلك. كما هو الحال مع الطبخ ، هناك حاجة إلى المكونات الأساسية للعرض.

عناصر البناء الضرورية: النماذج والقوام


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


ظهرت اللعبة قبل أكثر من 20 عامًا. في ذلك الوقت ، كان Quake II تحفة تكنولوجية ، على الرغم من أنه ، كما هو الحال في أي لعبة من تلك السنوات ، تبدو النماذج هنا بدائية للغاية. ولكن من السهل توضيح ما تتكون منه.


في الصورة السابقة ، نرى المتأنق الزاوي يتألف من مثلثات متصلة ببعضها البعض. كل زاوية تسمى قمة ، أو قمة. يعمل كل رأس كنقطة في الفضاء ويتم وصفه بثلاثة أرقام على الأقل: الإحداثيات x ، y ، z . ومع ذلك ، هذا لا يكفي للعبة ثلاثية الأبعاد ، وبالتالي ، فإن كل قمة لها قيم إضافية: اللون ، واتجاه الجانب الأمامي (نعم ، لا يمكن أن يكون للنقطة جانب أمامي ... اقرأ فقط!) ، والسطوع ، ودرجة الشفافية ، إلخ.


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

في العالم ثلاثي الأبعاد ، يبدأ كل ما تراه بمجموعة من القمم وخرائط النسيج. يتم تحميلها في مخازن الذاكرة المتصلة ببعضها البعض. يحتوي Vertex buffer (vertex buffer) على مواد وأجزاء من الذاكرة المخصصة للعرض اللاحق. و يحتوي عازلة الأمر قائمة تعليمات حول ما يجب القيام به مع هذه الموارد.

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

إعداد المشهد: Vertexes


بعد الحصول على جميع المعلومات المرئية ، ستبدأ اللعبة بعد ذلك في عملية العرض المرئي. يبدأ المشهد في موضع معين افتراضيًا ، مع الترتيب الأساسي للنماذج ومصادر الضوء وما إلى ذلك. ستكون هذه شاشة "صفر" - نقطة البداية للرسومات. غالبًا لا يتم عرضه ، يتم معالجته ببساطة بواسطة النظام. لتوضيح ما يحدث في المرحلة الأولى من التقديم ، سنستخدم الأداة عبر الإنترنت Real-Time Rendering . لنقم بإنشاء أبسط "لعبة": صندوق يقف على الأرض.


يحتوي هذا الكائن على 8 رؤوس ، كل منها موصوف بقائمة أرقام. تشكل القمم نموذجًا يتكون من 12 مثلثات. يسمى كل مثلث ، وحتى الكائن نفسه ، بدائيًا . مع تحرك البدائيين وتدويرهم وقياسهم ، تمر الأرقام بسلاسل العمليات الحسابية ويتم تحديثها.


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


خذ نموذجًا آخر يحتوي على 10 أضعاف رؤوس أكثر من الصندوق السابق. في أبسط عملية طلاء ، يتم أخذ لون كل قمة ، ثم يتم حساب تغيرات اللون من سطح إلى سطح. وهذا ما يسمى الاستيفاء .


زيادة عدد الرؤوس في النموذج لا يسمح لك بإنشاء كائنات أكثر واقعية فحسب ، بل يحسن أيضًا نتيجة الاستيفاء اللوني.


في هذه المرحلة من العرض ، يمكن حساب تأثير مصادر الضوء في المشهد بالتفصيل. على سبيل المثال ، كيف تعكس مواد النموذج اللون. يجب أن تأخذ هذه الحسابات في الاعتبار موضع واتجاه الكاميرا ، وكذلك موضع واتجاه مصادر الضوء.


للقيام بذلك ، هناك عدد من الطرق الرياضية المختلفة ، بعضها بسيط والبعض الآخر معقد للغاية. في الرسم التوضيحي أعلاه ، نرى أن الكائن على اليمين يبدو أجمل بكثير وأكثر واقعية ، ولكن هناك حاجة إلى مزيد من العمل لرسمه.

من المهم أن نلاحظ أننا نقارن الآن الأشياء مع عدد قليل من القمم بأحدث الألعاب. مرر لأعلى وافحص الصورة بعناية من Crysis: يعرض هذا المشهد الواحد أكثر من مليون مثلث. باستخدام معيار Unigine Valley كمثال ، يمكنك فهم عدد المثلثات المستخدمة في الألعاب الحديثة.


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


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

والمثير للدهشة ، أن هذا ليس أصعب جزء في العرض ، مع الأجهزة المناسبة ، تتم جميع الحسابات في بضع آلاف من الألف من الثانية! استمر.

فقدان البعد: التنقيط


بعد معالجة جميع القمم واستكمال وضع جميع الأشياء في المشهد ثلاثي الأبعاد ، تنتقل عملية التقديم إلى مرحلة مهمة جدًا. حتى هذه اللحظة ، كانت اللعبة ثلاثية الأبعاد حقًا ، لكن الإطار النهائي لم يعد كذلك: في سياق سلسلة من التغييرات ، يتم تحويل العالم المعروض من الفضاء ثلاثي الأبعاد الذي يتكون من آلاف النقاط المتصلة إلى صورة ثنائية الأبعاد تتكون من وحدات بكسل ملونة. في معظم الألعاب ، يتكون هذا الإجراء من مرحلتين على الأقل: مساحة شاشة العرض (عرض مساحة الشاشة) والتنقيط .


بالعودة إلى أداة العرض على الويب ، ستوضح لنا كيف يتحول حجم العالم الافتراضي إلى صورة مسطحة. تظهر الكاميرا على اليسار ، والخطوط المنبثقة عنها تخلق هرمًا مقطوعًا للرؤية (frustum) ، ويمكن عرض كل ما يدخل إليها في الإطار النهائي. ويطلق على القسم عمودي الهرم و العرض - وهذا هو ما سوف يظهر على الشاشة. يتم استخدام العديد من الحسابات الرياضية لإسقاط محتويات الهرم بالكامل في منطقة العرض ، مع مراعاة منظور الكاميرا.

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


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

بعد الانتهاء من هذا الجزء من العرض ، ننتقل إلى الخطوة الكبيرة التالية: التلوين النهائي لجميع وحدات البكسل في الإطار.

حمل الضوء: مرحلة البكسل


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


في هذا الرسم التوضيحي ، يتم تطبيق نسيج رقعة الداما على المستوى. هناك تموج مرئي غير سار ، يتفاقم بسبب التعرجات. لحل هذه المشكلة ، استخدم إصدارات أصغر من خرائط النسيج ( تعيينات متعددة ، خرائط مصغرة) ، وإعادة استخدام المعلومات من هذه الأنسجة ( التصفية ، التصفية) والحسابات الرياضية الإضافية. التأثير ملحوظ:


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


في الرسم التوضيحي السابق ، لم نعد نرى تغيرات في اللون بين مثلثات مختلفة ، مما يمنحنا الشعور بجسم سلس سلس. على الرغم من أن المجال يتكون في هذا المثال من نفس عدد المثلثات مثل الكرة الخضراء في الرسم التوضيحي أعلاه ، نتيجة لإجراء تلوين البكسل ، يبدو لنا أنه يتم استخدام الكثير من المثلثات.


في العديد من الألعاب ، يجب تشغيل مرحلة البكسل عدة مرات. على سبيل المثال ، لكي تعكس مرآة أو سطح الماء العالم المحيط ، يجب رسم هذا العالم أولاً. يُطلق على كل تشغيل اسم تمرير (تمرير) ، وللحصول على الصورة النهائية لكل إطار ، يمكن استخدام أربعة تمريرات أو أكثر بسهولة.

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

لتقييم درجة تعقيد مرحلة البكسل ، يمكنك القراءةتحليل الإطار في Doom 2016 . سوف يصدمك عدد العمليات اللازمة لإنشاء إطار واحد.


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


في هذا الإطار من Assassin's Creed Odyssey نرى محتويات المخزن المؤقت للإطار المكتمل. يمكن تمثيل هذا المحتوى في جدول يحتوي على أرقام فقط. يتم إرسالها في شكل إشارات كهربائية إلى شاشة أو تلفزيون ، وتغير بكسل الشاشة قيمها. ترى أعيننا صورة مسطحة صلبة ، لكن دماغنا يفسرها على أنها ثلاثية الأبعاد. يتم إخفاء الكثير من العمل وراء الكواليس من لقطة واحدة فقط في اللعبة ، مما يستحق إلقاء نظرة على كيفية تعامل المبرمجين معها.

إدارة العمليات: واجهات برمجة التطبيقات والتعليمات


لمعرفة كيفية تنفيذ اللعبة وإدارة جميع الحسابات والرؤوس والقوام والإضاءة والمخازن المؤقتة وما إلى ذلك. - هذه مهمة ضخمة. لحسن الحظ ، ساعدنا في واجهات البرمجة هذه (واجهة برمجة التطبيقات ، API).

تقلل واجهات برمجة التطبيقات الخاصة بالتقديم من التعقيد الكلي من خلال تقديم الهياكل والقواعد ومكتبات البرامج التي تتيح تعليمات مبسطة ومستقلة عن الأجهزة. خذ أي لعبة ثلاثية الأبعاد تم إصدارها للكمبيوتر الشخصي على مدار السنوات الثلاث الماضية: تم إنشاؤها باستخدام واحدة من ثلاث واجهات برمجة تطبيقات شائعة - Direct3D أو OpenGL أو Vulkan. هناك تطورات أخرى مماثلة ، خاصة في قطاع الهواتف المحمولة ، ولكن في هذه المقالة سنتحدث عن الثلاثة المذكورة.


على الرغم من الاختلافات في أسماء التعليمات والعمليات (على سبيل المثال ، يُطلق على كتلة التعليمات البرمجية لمعالجة وحدات البكسل في DirectX أداة تظليل البكسل ، وفي Vulkan تُسمى أداة تظليل الأجزاء) ، لا تختلف النتيجة النهائية ، بشكل أكثر دقة ، يجب ألا تختلف.

سوف يتجلى الفرق في المعدات المستخدمة في التقديم. يجب تحويل التعليمات التي تم إنشاؤها بواسطة واجهة برمجة التطبيقات (API) إلى أوامر مناسبة للأجهزة تتم معالجتها بواسطة برامج تشغيل الجهاز. ويتعين على مصنعي المعدات قضاء الكثير من الموارد والوقت للسائقين لإجراء هذا التحويل بأسرع وقت ممكن وبشكل صحيح.


على سبيل المثال ، دعم الإصدار التجريبي المبكر من مبدأ Talos (2014) جميع واجهات برمجة التطبيقات الثلاثة المذكورة. لتوضيح كيف يمكن أن تختلف نتائج مجموعات مختلفة من برامج التشغيل والواجهات ، قمنا بتشغيل المعيار القياسي المدمج عن طريق تعيين الدقة إلى 1080p وإعدادات الجودة القصوى. يعمل معالج Intel Core i7-9700K دون رفع تردد التشغيل ، وبطاقة الفيديو Nvidia Titan X (باسكال) ، RAM - 32 جيجابايت DDR4 RAM.

  • DirectX 9 = معدل 188.4 إطار / ثانية.
  • DirectX 11 = متوسط ​​202.3 إطار / ثانية.
  • برنامج OpenGL = متوسط ​​87.9 إطار / ثانية.
  • فولكان = متوسط ​​189.4 إطار / ثانية.

لن نقوم بتحليل النتائج ، وهم بالتأكيد لا يقولون أن بعض واجهات برمجة التطبيقات "أفضل" من الأخرى (لا تنس ، تم اختبار الإصدار التجريبي من اللعبة). سنقول فقط أن البرمجة لواجهات برمجة التطبيقات المختلفة مرتبطة بصعوبات مختلفة ، وفي أي وقت سيكون الأداء مختلفًا أيضًا. بشكل عام ، يختار مطورو الألعاب واجهة برمجة التطبيقات التي لديهم خبرة أكبر بها ، ويحسنون شفرتهم من أجلها. في بعض الأحيان يتم استخدام مصطلح المحرك لوصف الرمز المسؤول عن العرض ، ولكن بشكل دقيق ، المحرك عبارة عن مجموعة كاملة من الأدوات التي تعالج جميع جوانب اللعبة ، وليس فقط الرسومات.

ليس من السهل إنشاء برنامج من الصفر يعرض لعبة ثلاثية الأبعاد. لذلك ، يتم استخدام أنظمة الجهات الخارجية المرخصة في العديد من الألعاب (على سبيل المثال ، محرك Unreal) لتقييم مدى تعقيدها ، افتح محرك مفتوح المصدر لـ Quake وعرض ملف gl_draw.c: يحتوي على إرشادات لعمليات عرض مختلفة ولا يعكس سوى جزء صغير من المحرك بأكمله. لكن تم إصدار Quake منذ أكثر من 20 عامًا ، وتستغرق اللعبة بأكملها (بما في ذلك جميع الموارد البصرية والأصوات والموسيقى وما إلى ذلك) 55 ميغابايت. للمقارنة ، في لعبة Far Cry 5 ، تحتل أجهزة تظليل فقط 62 ميغابايت.

الوقت هو الأهم: استخدام المعدات المناسبة


يمكن حساب كل ما سبق ومعالجته بواسطة معالج أي نظام كمبيوتر. تدعم المعالجات الحديثة لعائلة x86-64 جميع العمليات الرياضية اللازمة وحتى تحتوي على أنظمة فرعية منفصلة لهذا الغرض. ومع ذلك ، فإن مهمة عرض إطار واحد تتطلب العديد من الحسابات المتكررة والتوازي الكبير للعمل. لا يتم تكييف المعالجات المركزية لهذا ، لأنها تم إنشاؤها لحل أوسع نطاق ممكن من المهام. تسمى المعالجات المتخصصة لحوسبة الرسومات GPU ( وحدات معالجة الرسومات). يتم إنشاؤها من أجل DirectX و OpenGL و Vulkan.

سنستخدم معيارًا يسمح لك بتقديم إطار باستخدام معالج مركزي أو معدات متخصصة - V-ray NEXTشركات مجموعة الفوضى. في الواقع ، تقوم بتتبع الأشعة بدلاً من العرض ، ولكن معظم العمليات العددية هنا تعتمد أيضًا على الأجهزة.


دعونا نجتاز المعيار في ثلاثة أوضاع: فقط المعالج المركزي ، والمعالج الرسومي فقط ، ومجموعة من كلا المعالجين:

  • وحدة المعالجة المركزية وحدها = 53 مليون شعاع
  • GPU وحده = 251 مليون شعاع
  • مزيج كلا المعالجين = 299 مليون شعاع

يمكن تجاهل وحدة القياس ، والجوهر هو خمسة أضعاف الفرق. ولكن مع ذلك ، لا يرتبط هذا الاختبار كثيرًا بالألعاب ، لذلك دعونا ننتقل إلى معيار Futuremark 3DMark03 للمدرسة القديمة . دعونا نجري اختبار Wings of Fury البسيط مع حساب قسري لجميع تظليل الرأس (أي ، مع مجموعة كاملة من العمليات لتحريك وتلوين المثلثات) باستخدام المعالج المركزي.


يجب ألا تفاجئك النتيجة:

  • المعالج المركزي = متوسط ​​77 لقطة / ثانية.
  • GPU = متوسط ​​1،580 إطار / ثانية.

عندما يقوم المعالج المركزي بإجراء جميع العمليات الحسابية بالرؤوس ، يستغرق الأمر 13 مللي ثانية لتقديم كل إطار وعرضه. وعند استخدام معالج رسومات ، ينخفض ​​هذا الرقم إلى 0.6 مللي ثانية - أكثر من 20 مرة أسرع.

يزداد الفرق أكثر إذا أجريت اختبارًا مرجعيًا أصعب - الطبيعة الأم. أنتج المعالج المركزي 3.1 إطارات / ثانية غير مهمة! وارتفع معالج الرسومات بسرعة 1388 إطارًا / ثانية: أسرع 450 مرة تقريبًا. يرجى ملاحظة: 3DMark03 ظهر 16 مرة ، وفي الاختبار على المعالج المركزي تتم معالجة القمم فقط ، ولا يزال معالج الرسومات يأخذ مرحلة التنقيط والبكسل. تخيل لو أن المعيار كان حديثًا وتم تنفيذ معظم العمليات برمجيًا؟


لنجرب الآن معيار Unigine Valley مرة أخرى ، فإن الرسومات التي يعالجها تشبه إلى حد كبير تلك المستخدمة في ألعاب مثل Far Cry 5. هناك أيضًا محرك عرض برامج كامل بالإضافة إلى DirectX 11. القياسي عند تشغيله على معالج فيديو ، حصلنا على متوسط ​​نتيجة 196 إطارًا / ثانية . ماذا عن إصدار البرنامج؟ بعد حالتين من الأعطال ، أنتج جهاز كمبيوتر اختبار قوي بمعدل 0.1 إطار / ثانية. - أبطأ بحوالي ألفي مرة .

يكمن سبب هذا الاختلاف الكبير في الحسابات الرياضية وتنسيق البيانات المستخدمة في العرض ثلاثي الأبعاد. تم تجهيز كل قلب من وحدات المعالجة المركزية بوحدات عائمة. يحتوي i7-9700K على 8 نوى ، يحتوي كل منها على وحدتين من هذه الوحدات. على الرغم من اختلاف بنية الوحدات في Titan X ، يمكن لكلا النوعين إجراء نفس العمليات الحسابية مع بيانات من نفس التنسيق. تحتوي بطاقة الفيديو هذه على أكثر من 3500 وحدة نمطية لإجراء حسابات قابلة للمقارنة ، وعلى الرغم من أن تردد الساعة أقل بكثير من المعالج المركزي (1.5 جيجاهرتز و 4.7 جيجاهرتز) ، إلا أن معالج الفيديو يأخذ عدد الوحدات.

على الرغم من أن Titan X ليست بطاقة رسومات كبيرة ، إلا أن نموذج الميزانية سيتجاوز أي معالج مركزي. لذلك ، تم تصميم جميع الألعاب ثلاثية الأبعاد وواجهات برمجة التطبيقات للمعدات المتخصصة. يمكنك تحميل V-راي ، برنامج 3DMark أو أي Unigine القياسي واختبر النظام الخاص بك - انظر بنفسك إلى أي مدى تتكيف معالجات الفيديو لتقديم الرسومات في الألعاب.

الكلمات الأخيرة


لقد كان انحرافًا قصيرًا في عملية إنشاء إطار واحد في الألعاب ثلاثية الأبعاد ، من نقطة في الفضاء إلى صورة ملونة على الشاشة.

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

وفي المرة القادمة التي تطلق فيها لعبة ثلاثية الأبعاد حديثة ، نأمل ألا تنظر فقط إلى الرسومات بعيون مختلفة ، ولكن أيضًا تريد معرفة المزيد عنها.

All Articles