تحليل رسومات Red Dead Redemption 2

واحدة من ألعابي المفضلة ، Red Dead Redemption ، عادت في 2018 مع برقول لوحدات التحكم. تم إصداره للكمبيوتر الشخصي في عام 2019 وأخيرًا لعبت عليه ؛ صدمت على الفور من رسوماتها. ومع ذلك ، شعرت بخيبة أمل: كنت بالكاد أستطيع اللعب في الإعدادات المتوسطة مع 25 FPS على GPU 1050Ti لسطح المكتب. أفهم أن جهازي ليس قويًا جدًا ، ولكن 25 إطارًا في الثانية في إعدادات متوسطة؟



سنلقي نظرة اليوم على عدة أمثلة للقطات من اللعبة ونحلل التقنيات الرسومية المستخدمة في اللعبة.



مقدمة



هذا تحليل غير رسمي للعبة. لقد حللت للتو التقاط الإطار مع RenderDoc . إذا كنت ترغب في معرفة معلومات من المطورين أنفسهم ، يمكنك دراسة الشرائح من الحديث في SIGGRAPH بواسطة فابيان باير . شرائح (أسفل الصفحة) ، فيديو (يبدأ الساعة 1:58:00).



يمكنك أيضًا قراءة تحليل رسومات GTA5 ، التي يؤديها Adrian Correzhe [ ترجم إلى حبري]. نظرًا لأن كلا من RDR2 و GTA5 تم إنشاؤهما من قبل نفس الشركة واستخدام نفس المحرك ، فإن بعض الحيل من GTA5 موجودة هنا أيضًا.



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



تحليل الإطار



هنا هو الإطار الرئيسي للتحليل:





يتم التقاط الإطار على جهاز كمبيوتر مع إعدادات متوسطة.



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


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



خريطة الأرض / التراب



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



MudMap


خريطة التراب: R16_UNORM2048x2048 في الحجم



سماء وغيوم



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



خريطة البيئة



خرائط البيئة هي المصدر الرئيسي للانعكاسات لـ RDR2 وكذلك GTA5.

مثل GTA5 ، يقوم RDR2 بإنشاء خريطة مكعب بيئة من موضع الكاميرا. يولد محرك اللعبة GBuffer رفيع لخريطة البيئة ، على غرار تلك المستخدمة في لعبة Far Cry 4 .



البيئة MapAlbedo


وجوه الخريطة المكعبة للبيئة (البياض): RGBA8_SRGB



EnvironmentMap عادي


وجوه الخريطة المكعبة للبيئة (عادية): RGBA8_UNORM



مخطط البيئة العمق


حواف مكعب البيئة (العمق):D32S8



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



بعد اجتياز G-Buffer ، يتم إنشاء خريطة مكعبة لبيئة السماء باستخدام خريطة القطع المكافئ للسماء والأنسجة السحابية. الخطوة التالية هي الالتواء. بالنسبة للإضاءة القائمة على الصور ، يستخدم محرك RDR2 تقريب المجموع المقسم... تستخدم هذه الطريقة خريطة بيئية تمت تصفيتها مسبقًا جنبًا إلى جنب مع بيئات LUT BRDF. للتصفية ، تقوم اللعبة بطي مكعب البيئة وتخزين الإصدارات المنهارة في مستويات نسيج mip cube.



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



البيئة MapBakedAO


حواف خريطة البيئة المكعبة (خبز AO):R8_UNORM



تستخدم اللعبة عرض البلاط المؤجل لحساب إضاءة خرائط البيئة . يتم حساب اعدام الضوء والإضاءة معًا في تمريرة واحدة للتظليل الحسابي لكل وجه من خريطة البيئة. (شكرًا لك على هذا التلميح @ benoitvimont .) أيضًا للإضاءة المخبوزة ، تستخدم اللعبة تقنية "خريطة العالم الخفيفة من أعلى لأسفل" المشابهة لتلك المستخدمة في Assassin's Creed III .



لكل وجه من خريطة المكعب ، يعرض RDR2 اللون النهائي على نسيج بيئة السماء. ثم تقوم اللعبة بتصفية الخريطة المكعبة للبيئات بنفس الطريقة التي تقوم بها الخريطة المكعبة لبيئات السماء.



EnvironmentMapFinal


جوانب خريطة المكعب البيئي (نهائي):R11G11B10_FLOAT



أيضًا ، عندما يكون اللاعب بالقرب من مبنى ، يقوم RDR2 بتحميل خرائط البيئة الموجودة في المناطق الداخلية للمباني. هناك أيضًا بطاقات G-Buffers المكعبة المتدفقة من القرص.



خبزالبيئةخريطةالبيدو


الوجوه المخبوزة لخريطة بيئة المكعب (البياض): BC3_SRGB(يتم تخزين AO المخبوز في قناة ألفا)



خبز البيئةخريطة طبيعية


الوجوه المخبوزة لخريطة بيئة المكعب (عادي): BC3_UNORM



خبزالبيئةخريطة العمق


الوجوه المخبوزة لخريطة بيئية مكعبة (العمق):R16_UNORM



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



G-Buffer Pass



تبدأ هذه المرحلة بمشي أولي عبر أعماق الإغاثة ، ثم تعرض اللعبة المشهد في G-Buffers.



GBuffer 0 RGB GBuffer 0 A
ألبيدو
AlbedoTargetA




  • RGBA8_SRGB- يحتوي هذا المخزن المؤقت على البياض في قنوات RGB (اللون الأساسي). لا أفهم تمامًا الغرض من بيانات قناة ألفا ، ولكن يتم استخدامها أثناء مرحلة الصقل.




GBuffer 1 RGB GBuffer 1 A
هدف عادي
NormalTargetA


  • RGBA8_UNORM: تحتوي قنوات RGB على عاديات ، وتحتوي قناة ألفا على شيء يتعلق بالأنسجة والشعر.




GBuffer 2 RGB GBuffer 2 A
MaterialTarget
MaterialTargetA


  • RGBA8_UNORM: يستخدم هذا الهدف لخصائص المواد.

    • R: الانعكاس (f0)
    • G: نعومة
    • ب: لامع
    • ج: يحتوي على تظليل (سيتم استخدام هذه القناة كقناع ظل في الخطوات اللاحقة)


GBuffer 3 R GBuffer 3 B
Material2TargetR
Material2TargetB


  • RGBA8_UNORM: تحتوي القناة الحمراء على تجاويف. هناك بعض البيانات الغامضة في القناة الزرقاء مرة أخرى. وتحتوي قناة ألفا على بيانات متعلقة بالشعر. لم أجد أي شيء في القناة الخضراء.


GBuffer 4 RG
MotionBlurTarget


  • RG16_FLOAT: يحتوي هذا المخزن المؤقت على سرعة مساحة الشاشة لتنفيذ ضبابية الحركة.


GBuffer 5 Depth GBuffer 5 Stencil
هدف العمق
أداة StencilTarget


  • D32S8: مثل GTA5 ، يستخدم RDR2 z المعكوس للعمق ، ومخزن الاستنسل المؤقت لتعيين القيم لمجموعة معينة من الشبكات.


يتم إنشاء هدف آخر من البيانات المخبوزة:



GBuffer 6 R GBuffer 6 G
BakedAO
الهدف الغامض


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



إنشاء خرائط الظل



بعد مرحلة G-Buffer ، تبدأ اللعبة في عرض خرائط الظل. يستخدم صفائف نسيج ثنائي الأبعاد لخرائط الظل لمصادر النقاط ومصفوفات نسيج مكعبة لخرائط الظل لمصادر كشاف.



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



  • 512x768 D16 للمصادر البعيدة
  • 1024x1536 D16 ( — )
  • 2048x3072 D16 ( / )


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



تحتوي معظم مصادر النقاط الثابتة في اللعبة على خرائط ظل مكعبات مخبوزة.

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



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





على اليسار توجد خريطة ظل لمصادر كشافات بحجم 1024 × 1536 ، على اليمين توجد نفس بيانات الصورة في نسيج بحجم 512 × 512



لاحظ أنه يتم تخزين z الخطي في خرائط الظل المحلية.


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



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



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



يتم تنفيذ التظليل الاتجاهي في RDR2 بنفس الطريقة التي يتم بها تنفيذ GTA5 . إنها عبارة عن رسم خرائط متتالي بأربع شلالات. يتم استخدام كل بلاطة بحجم 1024x1024 من النسيج 1024x4096 (مع متوسط ​​إعدادات الرسومات).



واجهات الظل


أطلس ظلال الإضاءة الاتجاهية: R16_UNORM



إضاءة المسرح



أخيرًا ، حان الوقت لدمج كل خرائط البيئة هذه ، gbuffers ، خرائط الظل ، والمخازن المؤقتة.



تتكون هذه المرحلة من مرورين: الأول للإضاءة العالمية (الشمس / القمر) والثاني للمصادر المحلية.



ممر إضاءة عالمي



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



LightPass1


مرور ضوئي محلي



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



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



LightPass2


تقديم المياه وانعكاسها



في هذا المنشور ، لن أتحدث عن تقديم المياه ، لأنها تستحق وظيفة منفصلة ، لكني سأقول القليل عن التأملات:



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


مرحلة التظليل المباشر



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



لكن التمرير المباشر يمكن أن يكون مكلفًا:



  • , .


, , , . ( ), .


  • .


, . - . - (, ) .


  • , .


يجب تغيير حالات الناقل لتتمكن من التبديل بين التشذيب بين الحواف الأمامية والخلفية. ويمكن أن تكون هذه التغييرات مكلفة.


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



بلوماسك


إزهار الإنارة الهدف: R8_UNORM



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


المعالجة البعدية



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



تنفيذ bloom في RDR2 يشبه إلى حد كبير التنفيذ الموصوف في معالجة ما بعد الجيل التالي في Call of Duty: Advanced Warfare .



  • يتم أخذ الهدف بدون قيم العتبة كمدخل ،
  • تجعل R11G11B10_FLOATمستوى الهدف 7-mip ،
  • مرشح ثنائي الخط من الدرجة الثالثة عشر للاختزال ، مرشح خيمة 3x3 للترقية.


ثم تجمع اللعبة بين هذا الهدف المفلتر لتأثير الإزهار والهدف الرئيسي بالإضافة إلى هدف النصوع للإزهار.



الاستنتاجات



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



  • , — . , . ( , .) bloom: - , , - , . GPU? ?
  • , RDR2 . , (, GBuffers). ? ?
  • : ( ) . SSAO, SSR, . target SSAO ?


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



خاتمة



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



All Articles