الجزء 1: معالجة قمة الرأسفي هذه المقالة ، سوف نلقي نظرة فاحصة على ما يحدث للعالم ثلاثي الأبعاد بعد معالجة جميع القمم. سيتعين علينا مرة أخرى التخلص من الغبار من الكتب المدرسية للرياضيات ، والتعود على هندسة أهرامات القطع وحل لغز المنظورات. سنقوم أيضًا باختصار للغطس في فيزياء تتبع الأشعة والإضاءة والمواد.
الموضوع الرئيسي لهذه المقالة هو مرحلة تقديم مهمة ، حيث يصبح العالم ثلاثي الأبعاد من النقاط والشرائح والمثلثات عبارة عن شبكة ثنائية الأبعاد من الكتل متعددة الألوان. غالبًا ما تبدو هذه العملية غير مرئية ، لأن التحويل من ثلاثي الأبعاد إلى ثنائي الأبعاد غير مرئي ، على عكس العملية الموضحة في
المقالة السابقة ، حيث يمكننا أن نرى على الفور تأثير تظليل قمة الرأس وأرضيات التغطية بالفسيفساء. إذا لم تكن مستعدًا لهذا حتى الآن ، فيمكنك البدء
بمقالنا 3D Game Rendering 101 .
التحضير لاثنين من القياسات
تقرأ الغالبية العظمى من القراء هذا الموقع على شاشة مسطحة أو شاشة هاتف ذكي بالكامل ؛ ولكن حتى لو كان لديك تقنية حديثة - شاشة منحنية ، فإن الصورة المعروضة بها تتكون أيضًا من شبكة مسطحة من وحدات بكسل متعددة الألوان. ومع ذلك ، عند تشغيل لعبة Call of Mario الجديدة: Deathduty Battleyard ، فإن الصور تبدو ثلاثية الأبعاد. تتحرك الكائنات في أرجاء المشهد ، وتصبح أكبر أو أصغر ، وتقترب من الكاميرا وتبتعد عنها.
إذا أخذنا Bethesda's
Fallout 4 كمثال ، صدر في عام 2014 ، يمكننا أن نرى بسهولة كيف تتم معالجة القمم ، مما يخلق شعورًا بالعمق والمسافة ؛ هذا ملحوظ بشكل خاص في وضع الإطار السلكي (انظر أعلاه).
إذا قمت بأخذ أي لعبة ثلاثية الأبعاد خلال العقدين الماضيين ، فكل واحد منهم تقريبًا ينفذ نفس تسلسل الإجراءات لتحويل عالم الرؤوس ثلاثية الأبعاد إلى صفيف ثنائي الأبعاد. غالبًا ما يطلق على هذا التحويل
التنقيط ، لكن هذا ليس سوى خطوة واحدة من العديد من الخطوات في العملية بأكملها.
نحتاج إلى تحليل المراحل المختلفة ودراسة التقنيات والحسابات المستخدمة فيها. كمرجع ، سوف نستخدم التسلسل المستخدم في Direct3D. توضح الصورة أدناه ما يحدث مع كل قمة في العالم:
خط أنابيب تحويل Direct3Dفي
المقال الأول [
ترجمة على حبري] رأينا ما يحدث في الفضاء العالمي (الفضاء العالمي): هنا ، باستخدام حسابات مصفوفة مختلفة ، تتحول القمم وتلون. سنتخطى الخطوة التالية ، لأنه في مساحة الكاميرا يتم تحويل الرؤوس فقط وتعديلها بعد النقل ، بحيث تصبح الكاميرا نقطة مرجعية.
الخطوات التالية معقدة للغاية بحيث لا يمكن تخطيها ، لأنها ضرورية للغاية للانتقال من ثلاثي الأبعاد إلى ثنائي الأبعاد - إذا تم تنفيذها بشكل صحيح ، فسوف ينظر دماغنا إلى شاشة مسطحة ، ولكن "يرى" مشهدًا بعمق وحجم. إذا كان كل شيء خطأ ، فإن الصورة ستكون غريبة جدا!
كل شيء عن المنظور
الخطوة الأولى في هذا التسلسل هي ضبط النطاق من وجهة نظر الكاميرا. للقيام بذلك ، تحتاج أولاً إلى ضبط زوايا مجال الرؤية الأفقي والرأسي - يتغير الأول غالبًا في الألعاب ، لأن الناس قد طوروا رؤية محيطية أفقية أفضل من الرؤية الرأسية.
يمكننا معرفة ذلك من خلال النظر إلى الصورة مع مجال رؤية الشخص:
يحدد
زاويتان مجال الرؤية (مجال الرؤية ، fov) شكل هرم
الإحباط - هرم ثلاثي الأبعاد له قاعدة مربعة تنبثق من الكاميرا. الزاوية الأولى تعين fov
العمودي ،
الأفقي الثاني ؛ نشير إليها بالرموز
α و
β . في الواقع ، لا نرى العالم على هذا المنوال تمامًا ، لكن من وجهة نظر الحسابات ، من الأسهل بكثير العمل مع هرم الاقتطاع بدلاً من محاولة توليد قدر واقعي من الرؤية.
تحتاج أيضًا إلى تحديد معلمتين أخريين - موقع
طائرات القطع القريبة (أو الأمامية) والبعيدة (الخلفية)
(طائرات القطع) . تقطع الأولى الجزء العلوي من الهرم ، ولكنها تحدد أساسًا مدى قرب كل شيء من موضع الكاميرا ؛ هذا الأخير يفعل نفس الشيء ، ولكنه يحدد مدى بعيدًا عن الكاميرا التي سيتم تقديمها.
يعد حجم وموقع الطائرة المقتطعة القريبة أمرًا مهمًا جدًا لأنه يصبح ما يسمى
بمنظر العرض . في الواقع ، هذا هو ما نراه على الشاشة ، أي إطار تم تقديمه ، وفي معظم واجهات برمجة التطبيقات للرسومات ، يتم رسم منفذ العرض من أعلى الزاوية اليسرى. في الصورة أدناه ، ستكون النقطة (a1 ، b2) هي أصل الطائرة: يتم قياس عرض وارتفاع الطائرة بالنسبة له.
تعد نسبة العرض إلى الارتفاع لجهة العرض مهمة ليس فقط لعرض العالم المقدم ، ولكن أيضًا لمطابقة نسبة العرض إلى الارتفاع للشاشة. لسنوات عديدة ، كان المعيار 4: 3 (أو 1.3333 ... في عشري). ومع ذلك ، يتم تشغيل الأغلبية اليوم بنسبة عرض إلى ارتفاع 16: 9 أو 21: 9 ، تسمى الشاشة العريضة وشاشة عريضة فائقة.
يجب تحويل إحداثيات كل قمة في مساحة الكاميرا بحيث تتلاءم جميعها مع مستوى الاقتطاع القريب ، كما هو موضح أدناه:
التشذيب جانب الهرم والأعلىيتم تنفيذ التحويل باستخدام مصفوفة أخرى تسمى
مصفوفة الإسقاط المنظور . في المثال أدناه ، لإجراء التحويلات ، نستخدم زوايا النطاق وموضع طائرات الاقتطاع ؛ ومع ذلك ، يمكنك استخدام حجم منفذ العرض بدلاً من ذلك.
يتم ضرب متجه موضع قمة الرأس بهذه المصفوفة ، مما يعطينا مجموعة جديدة من الإحداثيات المحولة.
فويلا! الآن تتم كتابة جميع القمم بطريقة يتم بها تقديم العالم المصدر كمنظور ثلاثي الأبعاد ، ويبدو أن العناصر البدائية القريبة من طائرة القطع الأمامية أكبر من تلك القريبة من المستوى البعيد.
على الرغم من أن حجم منفذ العرض وزوايا زاوية العرض مرتبطان ، إلا أنه يمكن معالجتهما بشكل فردي. بمعنى آخر ، يمكنك تعيين هرم الاقتطاع بطريقة تحصل على مستوى اقتطاع قريب يختلف في الحجم ونسبة العرض إلى الارتفاع من منفذ العرض. للقيام بذلك ، هناك حاجة إلى خطوة إضافية في سلسلة العمليات ، حيث يجب تحويل القمم في مستوى الاقتطاع القريب مرة أخرى لحساب هذا الاختلاف.
ومع ذلك ، يمكن أن يؤدي هذا إلى تشويه المنظور المرئي. باستخدام
لعبة Bethesda
Skyrim 2011 كمثال
، يمكننا أن نرى كيف يؤثر تغيير الزاوية الأفقية لمنطقة الرؤية
β مع الحفاظ على نفس نسبة العرض إلى الارتفاع في إطار العرض بشكل كبير على المشهد:
في هذه الصورة الأولى ، وضعنا
β = 75 درجة ، ويبدو المشهد طبيعيًا تمامًا. دعونا نحاول الآن ضبط
β = 120 درجة:
هناك اختلافات ملحوظة على الفور - أولاً ، الآن نرى المزيد على جوانب "مجال رؤيتنا" ؛ ثانياً ، الكائنات تبدو الآن أبعد بكثير (خاصة الأشجار). ومع ذلك ، يبدو التأثير البصري على سطح الماء الآن خطأ ، لأن العملية لم تكن مصممة لمثل هذه الرؤية.
الآن دعونا نتخيل أن شخصيتنا لها عيون غريبة ، وضبط
β = 180 درجة!
تخلق منطقة الرؤية هذه مشهدًا بانوراميًا تقريبًا ، ولكن عليك أن تدفع ثمنه بقدر كبير من التشويه للأشياء التي تظهر عند الحواف. حدث هذا مرة أخرى نظرًا لحقيقة أن مصممي اللعبة لم يتوقعوا مثل هذا الموقف ولم يخلقوا موارد اللعبة ومؤثرات بصرية لزاوية العرض هذه (القيمة القياسية تقارب 70 درجة).
قد يبدو أنه في الصور أعلاه تحركت الكاميرا ، ولكن هذا ليس كذلك - التغيير الوحيد هو تعديل هرم الاقتطاع ، والذي بدوره أدى إلى تغيير أبعاد طائرة الاقتطاع القريبة. في كل صورة ، تظل نسبة العرض إلى الارتفاع كما هي ، بحيث يتم تطبيق مصفوفة القياس على القمم بحيث يناسبها كل شيء.
فهل تبقى او تغادر؟
بعد إجراء التحويلات في مرحلة الإسقاط ، ننتقل إلى ما يسمى
مساحة المقطع . على الرغم من أن هذا يتم
بعد الإسقاط ، إلا أنه من السهل إظهار ما يحدث إذا قمنا بالعمليات مسبقًا:
في الشكل أعلاه ، نرى أنه في البط المطاطي ، أحد الخفافيش وجزء من الأشجار ، توجد المثلثات داخل هرم الاقتطاع ؛ ومع ذلك ، فإن الخفافيش الأخرى وأبعد شجرة خارج حدود هرم الاقتطاع. على الرغم من أنه قد تمت بالفعل معالجة القمم التي تشكل هذه الكائنات ، إلا أننا لن نراها في إطار العرض. وهذا يعني أن
يتم قصهم .
عندما
يتم اقتطاعها على طول الهرم (قص الأحباط) ، يتم حذف جميع العناصر البدائية الموجودة خارج هرم الاقتطاع بالكامل ، ويتم تحويل تلك الموجودة على الحدود إلى بدائل جديدة. الاقتطاع لا يحسن الأداء إلى حد كبير ، لأن كل هذه الرؤوس غير المرئية قد تمت معالجتها بالفعل قبل هذه المرحلة في تظليل قمة الرأس ، إلخ. إذا لزم الأمر ، يمكن تخطي خطوة الاقتطاع بالكامل ، ولكن هذه الميزة غير مدعومة من قبل جميع واجهات برمجة التطبيقات (على سبيل المثال ، لن يسمح OpenGL القياسي بتخطيها ، ولكن يمكن القيام بذلك باستخدام امتداد واجهة برمجة التطبيقات).
تجدر الإشارة إلى أن موقع الطائرة البعيدة في الألعاب لا يساوي دائمًا
مسافة السحب ، لأن الأخير يتحكم فيه محرك اللعبة نفسه. يقوم المحرك أيضًا
بقص الهرم (إعدام الإحباط) - يقوم بتشغيل رمز يحدد ما إذا كان سيتم رسم الكائن داخل هرم الاقتطاع وما إذا كان سيؤثر على الكائنات المرئية ؛ إذا كانت الإجابة "
لا" ، فلن يتم نقل الكائن إلى العرض. لا يختلف هذا عن قصاصة الإحباط لأنه يتجاهل أيضًا العناصر البدائية خارج الهرم ، لكنهم تجاوزوا بالفعل مرحلة معالجة قمة الرأس. عند إعدامهم ، لا تتم معالجتهم على الإطلاق ، مما يوفر الكثير من الموارد.
لقد قمنا بكل التحولات والتقطيع ، ويبدو أن القمم جاهزة أخيرًا للخطوة التالية في تسلسل العرض. ولكن في الواقع ، هذا ليس كذلك ، لأن جميع الحسابات التي أجريت في مرحلة معالجة قمة الرأس وفي عمليات التحول من الفضاء العالمي إلى مساحة الاقتطاع يجب أن تتم في نظام إحداثي موحد (أي كل قمة تحتوي على 4 مكونات ، وليس 3) . ومع ذلك ، فإن إطار العرض ثنائي الأبعاد تمامًا ، أي أن واجهة برمجة التطبيقات تتوقع أن معلومات الرأس تحتوي فقط على قيم
x و y (على الرغم من حفظ قيمة العمق
z ).
للتخلص من المكون الرابع ، يتم تنفيذ
تقسيم المنظور ، حيث يتم تقسيم كل مكون على قيمة
w . تقيد هذه العملية
x و
y إلى الفاصل الزمني للقيم المحتملة [-1.1] ، و
z إلى الفاصل الزمني [0.1]. وتسمى هذه
الإحداثيات الجهاز تطبيع (NDC).
إذا كنت ترغب في معرفة المزيد حول ما شرحناه للتو ، وكنت تحب الرياضيات ، فاقرأ
البرنامج التعليمي الممتاز حول هذا الموضوع Song Ho An. الآن دعونا نحول هذه القمم إلى وحدات بكسل!
نحن نتقن التنقيط
كما في حالة التحويلات ، سننظر في القواعد والعمليات المستخدمة لتحويل منفذ العرض إلى شبكة من وحدات البكسل ، باستخدام Direct3D كمثال. يشبه هذا الجدول جدول بيانات Excel بالصفوف والأعمدة ، حيث تحتوي كل خلية على قيم بيانات مختلفة (مثل اللون وقيم العمق وإحداثيات المادة وما إلى ذلك). عادة ما تسمى هذه الشبكة
صورة نقطية ، وعملية
إنشاءها تسمى
التنقيط . في المقالة
تقديم ثلاثي الأبعاد 101 ، قمنا بتبسيط هذا الإجراء:
تعطي الصورة أعلاه انطباعًا بأن العناصر البدائية تقسم ببساطة إلى كتل صغيرة ، ولكن في الواقع هناك العديد من العمليات. الخطوة الأولى هي تحديد ما إذا كان البدائي يواجه الكاميرا - على سبيل المثال ، في الصورة أعلاه مع هرم مقطوع ، لن تكون العناصر الأولية التي تشكل الجزء الخلفي من الأرنب الرمادي مرئية. لذلك ، على الرغم من وجودهم في إطار العرض ، إلا أنهم لا يحتاجون للتقديم.
يمكننا تخيل شكلها تقريبًا من خلال النظر إلى الرسم البياني أدناه. خضع المكعب لتحويلات متعددة لوضع النموذج ثلاثي الأبعاد في المساحة ثنائية الأبعاد للشاشة ، ومن وجهة نظر الكاميرا ، فإن جزءًا من وجوه المكعب غير مرئي. إذا افترضنا أن جميع الأسطح معتمة ، فيمكن تجاهل بعض هذه البدائل.
من اليسار إلى اليمين: مساحة العالم> مساحة الكاميرا> مساحة العرض> مساحة الشاشةفي Direct3D ، يمكن تنفيذ ذلك عن طريق إخبار النظام بما ستكون عليه
حالة التقديم ، وسيُعلم هذا الإرشادات أنه من الضروري إزالة (
قطع ) جوانب كل بدائية تتطلع إلى الأمام أو الخلف (أو لا تقطع تمامًا ، على سبيل المثال ، في وضع
الإطار السلكي ) . ولكن كيف تعرف أي جانب يتطلع إلى الأمام أو الخلف؟ عندما درسنا
رياضيات معالجة قمة الرأس ، رأينا أن المثلثات (أو بالأحرى الرؤوس) لها نواقل طبيعية تخبر النظام بالاتجاه الذي يبدو عليه. بفضل هذه المعلومات ، يمكنك إجراء فحص بسيط ، وإذا فشلت البدائية ، فسيتم إزالتها من سلسلة التقديم.
الآن حان الوقت لتطبيق شبكة بكسل. هذه مرة أخرى عملية معقدة بشكل غير متوقع ، لأن النظام يجب أن يفهم ما إذا كانت البيكسل موجودة داخل البدائية - تمامًا أو جزئيًا أو لا على الإطلاق. للقيام بذلك ، يتم تنفيذ عملية
اختبار التغطية . يوضح الشكل أدناه كيف يتم تنقيط المثلثات في Direct3D 11:
القاعدة بسيطة للغاية: يُعتبر البيكسل موجودًا داخل المثلث إذا نجح مركز البيكسل في التحقق ، والذي تسميه Microsoft القاعدة
"أعلى اليسار" . يشير "Top" إلى التحقق من الخط الأفقي ؛ يجب أن يكون مركز البكسل
على هذا الخط. يشير "اليسار" إلى خطوط غير أفقية ، ويجب أن يكون مركز البكسل على يسار هذا الخط. هناك قواعد أخرى متعلقة بالأشياء غير الأولية ، على سبيل المثال ، الأجزاء والنقاط البسيطة ، وعند استخدام
multisampling ، توجد إضافية إذا ظهرت شروط في القواعد.
إذا نظرت عن كثب إلى وثائق Microsoft ، يمكنك أن ترى أن الأشكال التي أنشأتها وحدات البكسل لا تشبه إلى حد كبير الأشكال الأولية الأصلية. وذلك لأن البيكسلات أكبر من أن تنشئ مثلثًا واقعيًا - لا تحتوي الصورة النقطية على بيانات كافية حول الكائنات الأصلية ، مما يسبب ظاهرة تسمى
التعرجات .
دعنا ننظر إلى التعرجات بمثال
UL Benchmark 3DMark03 :
720 × 480 بكسل التنقيطفي الصورة الأولى ، تكون الصورة النقطية ذات دقة منخفضة للغاية - 720 × 480 بكسل. التعرجات واضحة للعيان على حديدي وظل يلقي بأسلحة الجندي العلوي. قارن هذا بالنتيجة التي تم الحصول عليها أثناء التنقيط بزيادة قدرها 24 ضعفًا في عدد البكسل:
تنقيط 3840 × 2160 بكسلهنا نرى أن التعرج على درابزين والظل قد اختفى تماما. يبدو أنه يجب عليك دائمًا استخدام صورة نقطية كبيرة ، ولكن يجب دعم حجم الشبكة بواسطة جهاز العرض الذي سيتم عرض الإطار عليه. ومع الأخذ في الاعتبار حقيقة أن جميع وحدات البكسل هذه تحتاج إلى معالجة ، فمن الواضح أنه سيكون هناك انخفاض في الأداء.
Multisampling يمكن أن تساعد هنا. إليك كيفية عمله في Direct3D:
بدلاً من التحقق من مطابقة مركز البكسل لقواعد التنقيط ، يتم
فحص عدة نقاط داخل كل بكسل (تسمى عينات البكسل الفرعي أو العينات الفرعية) ، وإذا كان بعضها يفي بالمتطلبات ، فإنها تشكل جزءًا من الشكل. قد يبدو أنه لا يوجد أي فائدة ، بل يتم تحسين الاسم المستعار ، ولكن عند استخدام أخذ عينات متعددة ، يتم تخزين المعلومات حول العينات الفرعية التي يتم تغطيتها بواسطة البدائية ويتم تخزين نتائج معالجة وحدات البكسل في مخزن مؤقت في الذاكرة.
ثم يتم استخدام هذا المخزن المؤقت لخلط هذه العينات الفرعية والبكسل بحيث تكون حواف البدائية أقل تمزيقًا. سننظر إلى التعرج في مقال آخر بمزيد من التفصيل ، ولكن في الوقت الحالي ، هذه المعلومات كافية لنا لفهم ما يمكن أن تفعله العينات المتعددة عند استخدامها لتنقيط عدد قليل جدًا من وحدات البكسل:
كما ترون ، فإن كمية التعرجات عند حواف الأشكال المختلفة قد انخفضت بشكل ملحوظ. تعد دقة التنقيط العالي الدقة أفضل ، لكن تدهور الأداء قد يطالبك باستخدام أخذ عينات متعددة.
أيضا أثناء التنقيط ، يتم إجراء
اختبار انسداد . هذا أمر ضروري لأن منفذ العرض سوف يملأ بدائية متراكبة على بعضها البعض - على سبيل المثال ، في الشكل أعلاه ، المثلثات التطلعية التي تتكون منها الجندي في المقدمة تتداخل مع المثلثات نفسها لجندي آخر. بالإضافة إلى التحقق مما إذا كانت البدائية تغطي بكسلًا ، يمكنك أيضًا مقارنة العمق النسبي ، وإذا كان سطح ما خلف سطح آخر ، فيجب إزالته من عملية التجسيد المتبقية.
ومع ذلك ، إذا كانت البدائية القريبة شفافة ، فستظل البدائية البعيدة مرئية ، على الرغم من أنها لن تجتاز اختبار التداخل. وهذا هو السبب في أن جميع المحركات ثلاثية الأبعاد تقريبًا تقوم بإجراء عمليات تراكب
قبل إرسال البيانات إلى وحدة معالجة الرسومات وإنشاء شيء يسمى
"المخزن المؤقت" ، والذي يعد جزءًا من عملية العرض. هنا يتم إنشاء الإطار بالطريقة المعتادة ، ولكن بدلاً من حفظ ألوان البيكسل الجاهزة في الذاكرة ، يحفظ GPU قيم العمق فقط. في وقت لاحق ، يمكن استخدامها في تظليل للتحقق من الرؤية والتحكم والدقة في الجوانب المتعلقة بالكائنات المتداخلة.
في الصورة الموضحة أعلاه ، كلما كان لون البكسل أغمق ، كلما اقترب الموضوع من الكاميرا. z-, , , z-. , .
— , , , . , , ,
. , , .
, 2D, 3D-. ,
, . - 3D- ; ,
.
, — 3D- 2D- . .
( )
, . , , , ; . , ( , , ) .
, , , ( (occlusion culling)) ( ). "
", .
, , . , .
: , ,? — , , . , , , , .
, — , , . , , , . , . .
- …
: ray tracing!
, . ( , ..) . , .
ray casting .
, , , , . , ; , , .
(ray tracing) ( ,
, , )
.
من الصورة أعلاه ، يمكنك فهم كيفية عمل خوارزمية Whited. لكل بكسل في الإطار ، تنبعث حزمة واحدة من الكاميرا وتتحرك حتى تصل إلى السطح. في هذا المثال ، يكون السطح شفافًا ، لذلك يمكن أن ينعكس الضوء وينكسر من خلاله. في كلتا الحالتين ، يتم إنشاء الأشعة الثانوية التي تنتقل حتى تصطدم مع السطح. يتم أيضًا إنشاء أشعة ثانوية جديدة لحساب لون مصادر الضوء والظلال التي تنشئها., . - , . . , , , , .
. , , — -, , , , ( ). — , , — , :
: Nvidia RTX, (bounding volumes, BV) — , . .
, BV . , , , ..; , .., . , (
BV hierarchy BVH); BV:
BVH, , , , 3D-.
,
Blender POV-ray ( photon tracing radiosity) :
: , ? : -, , . , 800 x 600 480 000 , . PC. , .
3D- .
3D rendering 101 , .
Wolfenstein 3D ray casting 1992
Battlefield V Metro Exodus , 2019 , ? ? , .
2018 Microsoft API Direct3D 12 DXR (DirectX Raytracing). , . , , , , Direct3D 12.
في نفس مؤتمر مطوري الألعاب ، حيث
تحدثت Microsoft عن DXR ، تحدثت Electronic Arts عن
مشروع Pica Pica الخاص بها - تجربة مع محرك ثلاثي الأبعاد باستخدام DXR. أظهرت الشركة أنه يمكن استخدام تتبع الأشعة ، ولكن ليس لتقديم الإطار بأكمله. يستخدم الجزء الأكبر من العمل تقنيات التنقيط التقليدية والتظليل الحسابي ، بينما يتم استخدام DXR في مناطق محددة. أي أن عدد الأشعة التي تم إنشاؤها أقل بكثير مما سيكون عليه المشهد بأكمله.
لقد تم استخدام هذا النهج المختلط في الماضي ، وإن كان بدرجة أقل. على سبيل المثال ،
استخدم Wolfenstein 3D عملية
صب الأشعة لتقديم إطار ، ولكن تم إجراؤه باستخدام حزمة واحدة لكل عمود بكسل ، وليس بكسل. قد لا يزال يبدو مثيرًا للإعجاب ، إلا إذا كنت تتذكر أن اللعبة عملت بدقة 640 × 480 [تقريبًا. ترجمة: في الواقع 320 × 200] ، وهذا هو ، في الوقت نفسه لم ينبعث منها أكثر من 640 الأشعة.
استوفت بطاقات الرسومات المبكرة لعام 2018 مثل AMD Radeon RX 580 أو Nvidia GeForce 1080 Ti متطلبات DXR ، ولكن حتى مع إمكاناتها الحاسوبية ، كانت هناك مخاوف من أنها لن تكون قوية بما يكفي لجعل DXR ذات معنى.
تغير الوضع في أغسطس 2018 عندما أصدرت Nvidia أحدث بنية GPU
، والتي يطلق عليها اسم تورينج . الميزة الأكثر أهمية في هذه الشريحة هي ظهور ما يسمى RT Cores: كتل منطقية منفصلة لتسريع حسابات تقاطع مثلث الشعاع ومرور التسلسل الهرمي للأحجام المحيطة (BVH). هاتان العمليتان هما إجراءات تستغرق وقتًا طويلاً لتحديد نقاط تفاعل الضوء مع المثلثات التي تشكل كائنات المشهد. بالنظر إلى أن RT Cores كانت عبارة عن وحدات Turing فريدة من نوعها ، فلا يمكن الوصول إليها إلا من خلال واجهة برمجة تطبيقات الملكية Nvidia.
كانت اللعبة الأولى لدعم هذه الميزة هي لعبة Battlefield V.
عندما اختبرنا DXR فيه ، أعجبنا بالتحسن في الانعكاسات في الماء ، على العشب والمعادن ، بالإضافة إلى انخفاض مماثل في الأداء:
لكي نكون صادقين ، فإن التصحيحات اللاحقة حسنت الوضع ، ولكن كان هناك انخفاض في سرعة تقديم الإطارات (وما زال). بحلول عام 2019 ، كانت هناك بعض الألعاب الأخرى التي تدعم واجهة برمجة التطبيقات هذه وتؤدي تتبع الأشعة للأجزاء الفردية من الإطار. لقد اختبرنا
Exodus Metro و
Shadow of Tomb Raider ، في مواجهة نفس الموقف - مع الاستخدام الفعال لـ DXR يقلل بشكل كبير من معدل الإطار.
في الوقت نفسه تقريبًا ،
أعلنت UL Benchmarks
عن إنشاء اختبار وظيفة DXR لبرنامج
3DMark :
يتم استخدام DXR في بطاقة الرسومات Nvidia Titan X (Pascal) - نعم ، والنتيجة هي 8 إطارات في الثانيةومع ذلك ، أظهرت دراسة للألعاب التي تدعم DXR واختبار 3DMark أن تتبع الأشعة حتى عام 2019 يظل مهمة صعبة للغاية بالنسبة إلى وحدة معالجة الرسومات ، حتى بسعر يزيد عن 1000 دولار. هل هذا يعني أنه ليس لدينا بدائل حقيقية للتنقيط؟
غالبًا ما تكون الميزات المتقدمة في تقنيات الرسومات ثلاثية الأبعاد للمستهلك مكلفة للغاية ، ويمكن أن يكون دعمها المبدئي لميزات واجهة برمجة التطبيقات الجديدة مجزأًا أو بطيئًا للغاية (كما اكتشفنا
عند اختبار Max Payne 3 على إصدارات مختلفة من Direct3D في 2012). تنشأ المشكلة الأخيرة عادة لأن مطوري الألعاب يحاولون دمج أكبر عدد ممكن من الميزات الحديثة في منتجاتهم ، وأحيانًا دون خبرة كافية.
ومع ذلك ، كانت تظليلات قمة الرأس والبكسل ، التغطية بالفسيفساء ، عرض HDR وانسداد البيئة المحيطة بالشاشة أيضًا ذات مرة تقنيات مكلفة مناسبة فقط لجرافيك قوي ، والآن أصبحت المعيار للألعاب والعديد من البطاقات الرسومية مدعومة. نفس الشيء سيحدث مع تتبع الأشعة. بمرور الوقت ، سيتحول ببساطة إلى معلمة تفاصيل أخرى ، يتم تمكينها افتراضيًا لمعظم اللاعبين.
في الختام
لذلك ، لقد وصلنا إلى نهاية الجزء الثاني من التحليل ، الذي نظرنا فيه بشكل أعمق إلى عالم الرسومات ثلاثية الأبعاد. لقد تعلمنا كيف يتم نقل قمم العالمين والموديلات من ثلاثة أبعاد وتتحول إلى صورة ثنائية الأبعاد مسطحة. لقد رأينا أننا نحتاج إلى أن نأخذ بعين الاعتبار النطاق ونفهم تأثيره. درسنا عملية تحويل هذه verines إلى بكسل ، وانتهينا مع نظرة موجزة على بدائل لعملية التنقيط التقليدية.
كما في المقالة السابقة ، كان من غير المحتمل أن نكون قادرين على الكشف عن جميع المواضيع ، وغابنا عن بعض التفاصيل - في النهاية ، هذا ليس كتابًا مدرسيًا! لكننا نأمل أن تكون قد تعلمت شيئًا جديدًا وأن تحترم الآن عمل المبرمجين والمهندسين الذين استخدموا الحوسبة والعلوم لتنفيذ كل هذا في الألعاب ثلاثية الأبعاد المفضلة لديك.