كيفية تقديم إطار الأرض الوسطى: ظل موردور


Middle Earth: Shadow of Mordor تم إصداره عام 2014. كانت اللعبة نفسها مفاجأة كبيرة ، وحقيقة أنها كانت منبثقة عن قصة عالم Lord of the Ring كانت غير متوقعة تمامًا. حققت اللعبة نجاحًا كبيرًا ، وفي وقت الكتابة ، أصدرت Monolith بالفعل تكملة - Shadow of War. رسومات اللعبة جميلة جدًا ، خاصة بالنظر إلى أنه تم إصدارها لأجيال مختلفة من وحدات التحكم ، بما في ذلك Xbox 360 و PS3. إصدار الكمبيوتر الشخصي مصقول بشكل جيد ، ويحتوي على خيارات رسومات إضافية وحزم نسيج عالية الدقة تكشف تمامًا عن إمكانات اللعبة.

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

الإطار


هنا إطار سنقوم بتحليله. يقع اللاعب على منصة خشبية في منطقة أودون. يستخدم Shadow of Mordor ميكانيكا مماثلة لميكانيكا الألعاب مثل Assassin's Creed ، حيث يمكنك تسلق المباني والأبراج ، ثم الاستمتاع بالمناظر الطبيعية المحيطة من أسطح المنازل.

الصورة

مرور العمق


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

الصورة

عازلة G


مباشرة بعد ذلك ، يبدأ تمرير G-buffer ، والذي يتم إجراؤه في حوالي 2700 مكالمة رسم. إذا قرأت تحليلي السابق لـ Castlevania: Lords of Shadow 2 أو درست مقالات أخرى مماثلة ، فيجب أن تكون هذه الفقرة مألوفة لك. يتم تسجيل خاصية الأسطح في مجموعة من المخازن المؤقتة ، والتي تتم قراءتها بعد ذلك في ممرات حساب الإضاءة لحساب تفاعلات الأسطح مع الضوء. يستخدم Shadow of Mordor عارضًا مؤجلًا كلاسيكيًا ، ولكن يتم استخدام عدد صغير نسبيًا من أهداف التجسيد للمخزن المؤقت G لتحقيق هذا الهدف (3). للمقارنة: يستخدم محرك Unreal في هذا المقطع 5-6 مخازن مؤقتة. يحتوي G-buffer على المخطط التالي:

عازلة عادية

صزبأ
عادي. xعاديعادي. zID

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



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

العازلة البيدو

صزبأ
Albedo.rAlbedo.gالبيدوانسداد التجويف

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



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





عازلة براق

صزبأ
خشونةشدة الانقسامفريسنلعامل الانتثار تحت سطح الأرض

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





الشارات المؤجلة

كما رأينا أعلاه ، يعرض Shadow of Mordor آثارًا دموية مفصلة إلى حد ما على الشخصيات الجريحة. عندما يلوح Talion بسيفه ، تتلقى البيئة أيضًا نصيبها من دم orc المظلم. ومع ذلك ، يتم استخدام تقنية أخرى للبيئات - الشارات المؤجلة . تتكون هذه التقنية من إسقاط مجموعة من القوام المسطح على سطح ما تم تقديمه سابقًا. وبهذه الطريقة ، يتم استبدال محتويات المخزن المؤقت G بهذا المحتوى الجديد قبل تنفيذ تمرير الإضاءة. في حالة الدم ، يكفي الرش الدموي فقط ، وعند عرض العديد من الشارات في المقابل ، يتم إنشاء منظر طبيعي قاتم إلى حد ما.












آخر شيء يتم تقديمه في ممر العازلة هو السماء ، نسيج السماء عالي الدقة للغاية (8192 × 2048) بتنسيق HDR BC6H. اضطررت إلى إجراء تصحيح بسيط للون ، لأنه في HDR كل الألوان مظلمة للغاية.

الصورة

التغطية بالفسيفساء


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



شفافية مستقلة عن النظام



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

ظلال موردور


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

انسداد في مساحة الشاشة


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



بطاقات الظل

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


عازلة الظل

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


نسيج إسقاط اتجاهي

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




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


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

إضاءة ثابتة


يستخدم Shadow of Mordor تنفيذًا ثابتًا للغاية للذاكرة للإضاءة الثابتة ، والتي تستخدم مواد ذات حجم كبير جدًا. توضح الصورة أدناه ثلاثة مواد ثابتة لكمية الإضاءة المستخدمة لإضاءة جزء من هذه المنطقة بشكل منتشر. كل واحد منهم عبارة عن نسيج مضغوط ضخم 512x512x128 BC6H ، أي أنهم يشغلون 32 ميجابايت لكل مادة أو 96 ميجابايت بشكل عام (نلعب بأقصى إعدادات الجودة). يشير نسيج اللون إلى كثافة دخول فوكسل. يشير الاثنان الآخران إلى قوة أو حجم هذه الكثافة على طول جميع الاتجاهات الستة xyz و -xyz ، ويتم استخدام الوضع الطبيعي لتحديد ثلاثة مكونات (xyz الموجبة أو السلبية ، تلك الأكثر تناسقًا مع المعتاد). بعد بناء هذا الناقل ، نأخذ منتجه المتجه من مربع العادي ، ويصبح هذا عامل التحجيم للشدة. الصيغة كما يلي:



كما تقدم أحجام الإضاءة الثابتة خريطة مكعبة للإضاءة المرآوية ، والتي من المحتمل أن يتم التقاطها في وسط SLV. ومن المثير للاهتمام أن مواد الحجم تخزن قيم HDR المضغوطة بتنسيق BC6H ، ويتم تخزين الخرائط المكعبة بتنسيق BC3 (DXT5) ، والتي لا يمكنها تخزين قيم النقطة العائمة. للتعويض عن هذا القيد ، تحتفظ قناة ألفا بالسطوع ، ثم تتدرج من 1-10. هذا قرار غريب بعض الشيء ، وبالنسبة لي ، يبدو الأمر أشبه بتنفيذ Legacy. لا تنس أن اللعبة تم إصدارها للجيل السابق من وحدات التحكم التي لا تدعم تنسيقات بنية HDR الجديدة.


تظهر الإطارات أدناه النتائج "قبل وبعد" مع مراعاة تأثير متوسط ​​الصورة. للتصور ، قمت بتصحيح الدرجة اللونية.




ضباب جوي



يحتوي Shadow of Mordor على نظام الطقس والوقت ، وبفضله تشرق الشمس أو تصب المطر خلال اللعبة في Mordor. يتم التحكم في هذا النظام من خلال مجموع المكونات ، ومن أهمها الضباب. يستخدم Shadow of Mordor نموذجًا بسيطًا ولكنه سليم ماديًا للضباب الجوي ، بما في ذلك تشتت Rayleigh والتشتت بواسطة جسيم كروي (مبعثر Mie).

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



سرعة الغالق وتصحيح النغمة


عند حساب سرعة الغالق ، يتم استخدام نهج قياسي إلى حد ما: تقليل تسلسل المخزن المؤقت للسطوع المحسوب بالتسلسل ، محسوبًا من المخزن المؤقت الأساسي للألوان HDR ، إلى سلسلة من الأنسجة ، كل منها نصف حجم المادة السابقة ، بدءًا من نسيج 1/3 من المخزن المؤقت للإطار الرئيسي. مع هذا الانخفاض في الدقة ، يتم أخذ 4 عينات ، بمتوسط ​​قيم البكسل المجاورة ، أي بعد تحويل جميع القيم المتوسطة إلى texel واحدة ، تصبح النتيجة النهائية متوسط ​​السطوع. بعد أن يصل النسيج إلى حجم 16 × 9 texels ، يتم تشغيل جهاز تظليل حوسبي ، يلخص جميع texels المتبقية. تتم قراءة هذه القيمة على الفور في تمرير تصحيح النغمة لتغيير قيم السطوع.







لتصحيح النغمة ، يتم استخدام عامل تشغيل Reinhardt ، ويمكن العثور على صيغة محسنة هنا وهنا . في كود hlsl ، سيبدو هذا على النحو التالي:

float3 hdrColor = tex2D(HDRTexture, uv.xy); hdrColor *= exposureValue; // This was calculated by the compute shader in the luminance downsampling pass float3 x = max(0.0, hdrColor - 0.004); float3 finalColor = (x * (6.2 * x + 0.5)) / (x * (6.2 * x + 1.7) + 0.06); 

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

الصورة

مرحلة ألفا


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





المطر


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



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





مشاعل العدسة وبلوم


بعد اكتمال عرض ألفا ، يتم عرض مشاعل العدسات فوقه. يتم تقديم سلسلة من الكواد المنقولة بدءًا من النقطة التي يأتي منها الضوء الاتجاهي (في حالتنا ، الشمس). مباشرة بعد ذلك ، يتم تنفيذ تمريرة. هذه تقنية قياسية إلى حد ما ، وتتكون من سلسلة من الحجم المنخفض والقوام الضبابي الذي يحتوي على وحدات بكسل يتجاوز سطوعها حدًا معينًا. يتم استخدام مرورين من أزهار ، شائع مع التمويه الغوسي للمشهد بأكمله وطمس شعاعي خاص ينطبق فقط على السماء. التمويه الشعاعي هو أحد العمليات التي تستخدم معرفًا خاصًا من المخزن المؤقت G للخرائط العادية ، لأنه يتم فقط أخذ وحدات البكسل في السماء في الاعتبار. كمكافأة ، ستقوم هذه الضبابية بتجربة خريطة العمق ويمكن أن تخلق أشعة الشفق منخفضة التكلفة. نظرًا لأننا نعمل مع مخزن مؤقت لـ LDR في هذه المرحلة ، فإن قيمة حد bloom تختلف عن القيمة من سجادة HDR (القيم التي تتجاوز الحد الأدنى ، عادةً 1.0 ، تؤدي إلى الحساب) ، وهذا يعني أن قيمة bloom التي تم الحصول عليها منها محدودة قليلاً. على أي حال ، هذا جيد للعبة وهنا النتائج. في الصور أدناه ، تبدو ألوان نسيج moom bloom غريبة قليلاً لأن كل بكسل يتم قياسه بواسطة السطوع الموجود في قناة ألفا. تم حساب هذا السطوع في وقت سابق ، في مرحلة تصحيح الدرجة اللونية. في التركيب النهائي ، يتم حساب bloom كـ bloom.rgb · bloom.a · bloomScale .
















التحيز + عمق المجال


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








ضبابية الحركة


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

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





تصحيح اللون


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





الإطار النهائي


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



آمل أن تكون قد استمتعت بتحليلي. أود أن أشكر Adrian Correge على العمل المذهل الذي ألهمني بدراسة الرسومات ، بالإضافة إلى موظفي استوديو Monolith لهذه اللعبة التي لا تنسى حقًا.

Source: https://habr.com/ru/post/ar430518/


All Articles