كيف يعمل عرض لعبة 3D: الإضاءة والظلال

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

الجزء 1: معالجة الرأس

الجزء 2: التنقيط وتتبع الشعاع

الجزء 3: نسيج وفلترة القوام

أذكر الماضي


في وقت سابق ، درسنا الجوانب الرئيسية لتحريك ومعالجة الكائنات في المشاهد ، وتحويلها من مساحة ثلاثية الأبعاد إلى شبكة مسطحة من البكسل ، بالإضافة إلى طرق تراكب القوام على هذه الكائنات. لسنوات عديدة ، كانت مثل هذه العمليات جزءًا أساسيًا من عملية العرض ، ويمكننا رؤية ذلك من خلال العودة في عام 1993 وإطلاق id Software's Doom.


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

لم تكن هناك أي ظلال لأنها لم تكن مهمة المبرمجين: كان جهاز الكمبيوتر في ذلك الوقت معالجًا بسرعة 66 ميجاهرتز (أي 0.066 جيجاهرتز!) ، محرك أقراص ثابتة 40 ميجابايت وبطاقة رسومات 512 كيلوبايت بأقل قدرات ثلاثية الأبعاد. تقديم سريع 23: في إعادة التشغيل الشهيرة للسلسلة ، نرى قصة مختلفة تمامًا.


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

نظرًا لأن أي عملية عرض ثلاثية الأبعاد تتطلب الرياضيات (مجموعة كاملة من الحسابات!) ، فمن الأفضل أن نبدأ بما يحدث وراء الكواليس في أي لعبة حديثة.

إضاءة الرياضيات


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

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


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

في العرض ثلاثي الأبعاد ، يتطلب هذا الكثير من المعلومات ، وهو أسهل ما يمكن تخيله في شكل مثل هذا المخطط:


نرى الكثير من الأسهم في الصورة ، هذه متجهات ، والمتجهات التالية مطلوبة لحساب اللون:

  • 3 نواقل لموضع القمة ومصدر الضوء والكاميرا تبحث في المشهد
  • متجهان لاتجاهات مصدر الضوء والكاميرا من وجهة نظر الرأس
  • 1 ناقل عادي
  • 1 نصف متجه (يكون دائمًا في المنتصف بين نواقل اتجاه الإضاءة والكاميرا)

يتم حسابها في مرحلة معالجة رؤوس عملية التقديم ، والمعادلة التي توحدهم جميعًا (تسمى نموذج لامبرت) لها الشكل:


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

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

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


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

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


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

ونعم ، بالنسبة لمعامل الكشاف ، هناك معادلة أخرى:


قيمة معامل جهاز العرض هي 1 (أي أن المصدر ليس جهاز عرض) أو 0 (إذا كان الرأس خارج الاتجاه المخروطي) ، أو بعض القيمة المحسوبة بين الاثنين. تحدد الزوايا φ (phi) و θ (ثيتا) أبعاد الجزء الداخلي / الخارجي من مخروط الأضواء.

يتم استخدام متجهين: L dcs و L dir (عكس اتجاه الكاميرا واتجاه الضوء) لتحديد ما إذا كان مخروط الرأس ملامسًا.

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

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

لمحاكاة ذلك ، يتم حساب قيمة إضاءة أخرى: الإضاءة المحيطة .


هذه المعادلة أبسط من الإضاءة المنتشرة لأن الاتجاهات غير مطلوبة. هنا ، يتم إجراء عملية ضرب بسيطة لمعاملات مختلفة:

  • C SA - لون إضاءة السطح
  • C GA - تمييز لون المشهد ثلاثي الأبعاد العالمي
  • C LA - لون إضاءة جميع مصادر الضوء في المشهد

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

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


يجب أن تكون الأجزاء الفردية من هذه الصيغة مألوفة لك بالفعل: لدينا قيمتان للون المرآة (واحدة للسطح - C S ، والأخرى للضوء - C LS ) ، بالإضافة إلى عوامل التوهين والفيضان المعتادة.

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

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

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


بصريا ، تبدو التركيبة كما يلي:


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

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

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

حسابات Vertex أو بكسل بكسل


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


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

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

تم اقتراح حل لهذه المشكلة في عام 1973 من قبل Bui Tyong Fong ، الذي عمل أيضًا في جامعة يوتا. في مقاله البحثي ، أظهر فونغ تقنية لاستكمال المعايير الطبيعية للقمم على الأسطح النقطية. هذا يعني أن نماذج الانعكاس المتناثرة والمرئية ستعمل بشكل صحيح لكل بكسل ، ويمكننا رؤية ذلك بوضوح في رسومات الكمبيوتر الخاصة بشركة David Eck عبر الإنترنت و WebGL التعليمي .

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


لا تزال الصور الثابتة لا تنقل جميع التحسينات التي تم إجراؤها عن طريق التظليل فوق Phong ، ولكن يمكنك بشكل مستقل تشغيل العرض التوضيحي عبر الإنترنت لـ Ek ومشاهدة الرسوم المتحركة.

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


هنا علينا أن نفهم بجدية! القيم المشار إليها بالحرف k هي ثوابت الانعكاس للانعكاسات المحيطية والمنتشرة والعينية. كل واحد منهم هو جزء من النوع المقابل للضوء المنعكس من حجم الضوء الساقط ؛ قيم C التي رأيناها في المعادلات أعلاه (قيم ألوان المواد السطحية لكل نوع من أنواع الإضاءة).

المتجه R هو ناقل "الانعكاس المثالي" - الاتجاه الذي يتحرك فيه الضوء المنعكس إذا كان السطح سلسًا تمامًا ؛ يتم حسابه باستخدام السطح العادي وناقلات الضوء الساقط. المتجه C هو متجه اتجاه الكاميرا ؛ و R و C تم تطبيعهما.

أخيرًا ، يوجد الثابت الأخير في المعادلة: تحدد قيمة α درجة لمعان السطح. كلما كانت المادة أكثر نعومة (أي كلما كانت تشبه الزجاج أو المعدن) ، كلما زاد العدد.

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

نموذج انعكاس Blinn-Fong هو اليوم نظام الإضاءة القياسي ويستخدم افتراضيًا في Direct3D و OpenGL و Vulkan ، إلخ.

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

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

نأخذ الإضاءة إلى مستوى جديد


دعونا نلقي نظرة على لعبة Ubisoft Assassin's Creed: Odyssey لعام 2018 ، والتي غالبًا ما يبحر فيها اللاعب في الماء ، سواء في الأنهار الضحلة أو في أعماق البحار.


يستخدم كل من الخشب المطلي والمعدني والحبال والنسيج والماء - ويعكس الضوء باستخدام مجموعة من الحسابات.

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

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

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


ترتيب SSR المستخدم في محرك EA's Frostbite.

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


عرض Nvidia's 2013 FaceWorks ( link )

لنعد إلى Assassin's Creed water: تنفيذ SSS بالكاد يمكن ملاحظته هنا ، وبسبب اعتبارات السرعة ، لا يتم استخدامه بنشاط. في الألعاب السابقة في سلسلة AC ، استخدم Ubisoft نظام SSS مزيف ، ولكن في اللعبة الأخيرة كان استخدامه أكثر تعقيدًا ، ولكنه لا يزال غير كبير كما رأينا في عرض Nvidia التجريبي.

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

النتائج مذهلة:


Assassin's Creed: Odyssey - تجسيد المياه بكل مجدها.

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

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


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


بالنسبة لكتلة فوكسل 4 × 4 × 4 ، تحدد أجهزة التظليل الحسابية مصادر الضوء النشطة التي تؤثر على هذا الحجم ، ثم تكتب هذه المعلومات إلى نسيج تجسيد ثلاثي الأبعاد آخر. بعد ذلك ، لتقدير "كثافة" الضوء داخل كتلة voxel ، يتم استخدام صيغة معقدة تسمى دالة تشتت Hengy-Greenstein .

ثم يقوم المحرك بإجراء العديد من التظليل لتحسين البيانات ، وبعد ذلك يتم إجراء مسيرة الشعاع على طول شرائح الهرم مع تراكم قيم كثافة الضوء. يدعي Eidos-Montréal أنه في Xbox One تستغرق كل هذه العمليات حوالي 0.8 مللي ثانية!

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


الإضاءة الحجمية المستخدمة في تكملة صعود تومب رايدر لعام 2018. في

البداية ، كانت تقنية الإضاءة هذه تسمى "الأشعة الإلهية" ، أو ، كما يطلق عليها من الناحية العلمية ، "أشعة الشفق" . واحدة من أول الألعاب التي تم استخدامها كانت Crytek's Crysis الأولى ، التي تم إصدارها في عام 2007.

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

تم أخذ عينات من قناع العازلة هذا عدة مرات ، وأخذ جهاز تظليل العينات وخلطها عن طريق التمويه معًا. تم خلط نتيجة هذه العملية مع المشهد النهائي:


لقد كان تقدم بطاقات الجرافيكس على مدى السنوات الـ 12 الماضية هائلاً. أقوى وحدات معالجة الرسومات في وقت إصدار Crysis كانت Nvidia GeForce 8800 Ultra . أسرع وحدة معالجة رسومات حديثة - تتميز بطاقة GeForce RTX 2080 Ti بأكثر من 30 مرة من قدرة الحوسبة ، وذاكرة أكبر بـ 14 مرة و 6 مرات أكبر من عرض النطاق الترددي.

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


"Divine Rays" في قسم 2 من Ubisoft

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

جوهر الظل


لنبدأ قسمًا جديدًا من المقالة مع لعبة Shadow of the Tomb Raider . في الصورة أدناه ، يتم تعطيل جميع خيارات الرسومات المتعلقة بالظلال ؛ على اليمين يتم تضمينها. الفرق كبير ، أليس كذلك؟


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

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


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

استخدمت الألعاب ثلاثية الأبعاد الأولى ، على سبيل المثال ، أول Tomb Raider لعام 1996 ، هذه الطريقة لأن الأجهزة في ذلك الوقت ، على سبيل المثال ، Sega Saturn و Sony PlayStation ، لا يمكنها تقديم أي شيء أفضل. رسمت هذه الطريقة مجموعة بسيطة من البدائيين فوق السطح الذي يتحرك فيه النموذج مباشرة ، ثم قاموا بتظليلهم ؛ كما تم استخدام الرسم في الجزء السفلي من نسيج بسيط.


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


ولكن بفضل التحسين ، قدم إسقاط الظل إنشاء أول أمثلة جديرة بالظلال الديناميكية ، على سبيل المثال ، في لعبة 1999 Kingpin: Life of Crime by Interplay. كما نرى في الصورة أدناه ، الشخصيات المتحركة فقط (حتى الفئران!) لها ظلال ، ولكن هذا أفضل من البقع البسيطة.


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

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

التكنولوجيا الحديثة لخلق الظلال


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

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

تم تحسين هذه التقنية في عام 1991 من قبل تيم هايدمان ، الذي عمل عليهارسومات السيليكون . شارك Mark Kilgard في تطويره الإضافي في عام 1999 ، والطريقة التي سنأخذها في الاعتبار تم إنشاؤها في عام 2000 من قبل John Carmack of id Software (على الرغم من أن طريقة Carmack تم افتتاحها بشكل مستقل قبل عامين من قبل Bilodo و Songa من Creative Labs ؛ أدى هذا إلى أن كارماك اضطر إلى تغيير قانونه لتجنب المشاكل القانونية).

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

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

أبسط مثال على استخدام هذا المخزن المؤقت هو استخدامه كقناع:


يتم تنفيذ الطريقة مع حجم الظلال تقريبًا على النحو التالي:

  • نقوم بتقديم المشهد إلى المخزن المؤقت للإطار ، ولكننا نستخدم الإضاءة المحيطة فقط (ونقوم أيضًا بتضمين جميع قيم الانبعاثات فيه إذا كانت البكسل تحتوي على مصدر ضوء)
  • , , ( (back-face culling)). (, ) . (.. «») - .
  • , (front-face culling) -, .
  • , , -.

تم استخدام مخازن الاستنسل المؤقتة هذه وأحجام الظل (تسمى ظلال الاستنسل) في لعبة Doom 3 id Software 2004 :


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

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

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

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


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

الإجراء الأساسي في عام 1978 من قبل لانس ويليامز . إنها بسيطة للغاية:

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

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

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

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


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

تم تحسين هذه التقنية من قبل Donnelly و Loritzen في عام 2006 في إجراء رسم خرائط التباين (VSM) ، وكذلك Intel في عام 2010 في خوارزمية توزيع العينات (SDSM).


باستخدام SDSM في Shadow of the Tomb Raider

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

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

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

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


Shadow of the Tomb Raider بدون AO (يسار) ومع HBAO + (يمين)

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

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

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

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


لقد قطعنا شوطا طويلا من الظلال المزيفة في القوام والإضاءة المحيطة البسيطة!

هذا ليس كل شئ


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

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

All Articles