حمل الجيل السابق من بطاقات نفيديا الرسومية Turing أكبر تغيير يطرأ على البطاقات الرسومية للحواسيب المنزليّة منذ سنواتٍ طويلةٍ للغاية مع دعم تقنية جديدة كليًا على صناعة الألعاب آنذاك و هي تقنية تتبع الأشعّة. نتائج استخدام هذه التقنية في ألعاب الفيديو أتت بصورة متفاوتة بعض الشيء فتارةً هي شبه غير ملحوظة مثل ريزدنت ايفل القرية و تارة هي تجربة رائعة من المؤثرات الواقعية للإضاءة مثل Control و مايلز موراليس. مع كثرة الأسئلة التي تحوم حول هذه التقنية من جمهور اللاعبين قررنا أن نغوص في أعماقها بالبحث في العديد من المراجع و استخراج المعلومات التي توضح… ما هي تقنية تتبع الأشعة و كيف تعمل؟ هل ستُمسي جوهرية لألعاب الفيديو في المستقبل؟ و ما هو الفرق بين توجه Nvidia و AMD في توظيفها في الوقت الحالي؟ قمنا بالتحري و التقصي و إليكم الإجابات التي وصلنا إليها.
في البداية فإن المراجع العلمية مثل كتاب Real Time Rendering بإصداره الرابع للباحث في الرسومات الحاسوبية “توماس مولر” تؤكد أن تقنية تتبع الأشعة هي مستقبل الرسومات في الزمن الحقيقي لأنها تتبع قواعد الفيزياء فيما يتعلق بتطبيقات الضوء و الإضاءة و الظلال بدقة تعجز عنها طرق الرسوم التقليدية بالتنقيط أو Rasterization و ذلك لأن الأشعة المطلوبة لفحص المشهد تُطلَق بأي اتجاه عكس الRasterization الذي يملك مسارات محددة فقط، فتقنيات التنقيط تعتمد على رسم المشاهد بالبيكسلات التي تقع ضمن مجال رؤية اللاعب فقط أو كما يسميها المختصون ضمن مجال رؤية الكاميرا أما الأشعة فهي قادرة على استعادة المعلومات الكاملة حتى خارج مجال رؤية اللاعب و لذلك يُمكن على سبيل المثال تصوير انعكاس مبنى على بقعة ماء تقع ضمن مجال رؤية اللاعب حتى لو كان المبنى ذاته خارج نطاق رؤية اللاعب، و هو أمر مستحيل على تقنيات التنقيط.
كما تعجز تقنيات التنقيط عن التعامل مع انعكاس داخل انعكاس آخر على سبيل المثال. عيوب التنقيط كثيرة جدًا و يلجأ المطورون إلى العديد من الحيل التقنية المحسوبة أو المرسومة مُسبقًا للتغلب على نواقصها مثل عجزها عن التعامل إلا مع الإضاءة المباشرة فقط و عدم قدرتها على التعامل مع الإضاءة المنتشرة غير المباشرة و بالتالي فهي تعطي نتائج غير دقيقة و غير واقعية و لا تتفاعل جيدًا مع حركة اللاعب مقارنة مع تقنية تتبع الأشعة التي تعالج هذه العيوب. تقنية تتبع الأشعة تستطيع التعامل مع كل مشاكل الـRasterization فهي قادرة على رسم الظلال بدقة و التعامل مع تغيير وضعية الأجسام و هي قادرة على رسم الانعكاسات و الانكسارات و جلب المعلومات الضوئية الصحيحة بالاعتماد على ما يراه و ما لا يراه المشاهد كما تستطيع التعامل مع ارتداد الضوء عن الأجسام الموجودة في البيئة و عدد مرات الارتداد يُعرف بالعمق أو ray tracing depth قياسًا بالمشهد، كلما زاد عدد الارتدادات كلما كان الضوء أكثر واقعية و كلما كان المشهد أكثر جمالًا و دقة.
تقنية تتبع الأشعة استُخدِمَت في فيلم A Bug’s Life بصورة محدودة في بعض المشاهد من أجل مؤثرات الانعكاس و الانكسار و الباحث المذكور منذ ذلك الحين في 1999 و هو يحلم بمرحلة تتمكن فيها أجهزتنا من إنتاج 12 إطارٍ في الثانية لرسوم تستخدم التقنية كما كان في بعض مشاهد فيلم بيكسار الشهير إياه قبل العام 2024. حسنًا، هذا قد تحقق بالفعل!
ما هي التقنية و كيف تعمل
يُشير كتاب Real Time Rendering بإصداره الرابع إلى أن الخوارزمية التي تصف تقنية تتبع الأشعة يُمكن لها أن تكون كما يلي:
for(P in pixels)
for(T in triangles)
determine if ray through P hits T
بالطبع، نحنُ بحاجة إلى الكثير من الهاردوير و بحاجة إلى برمجيات ضخمة و معقدة لتحويل هذه الخوارزمية إلى برنامج حقيقي يعمل على أرض الواقع، و لكن الفكرة التي تتحدث عنها الخوارزمية باختصار تعتمد على إطلاق شعاع عبر البكسلات الموجودة في الصورة و عند ارتطام هذا الشعاع بالمُضلّع الموجود في البيئة، يحمل الشعاع المعلومات عن هذا المضلع الذي ارتطم به من أجل توظيفها في رسم المشهد (إضاءة – تظليل – درجات لونية – انعكاس – انكسار و غير ذلك).
على عكس الاعتقاد الشائع بين اللاعبين، لا تعمل تقنية تتبع الأشعة في الألعاب عن طريق إطلاق الأشعة من مصدر الضوء إلى مجسمات عالم اللعبة لأن هذا سيكون مُكلفًا جدًا على الأداء، بل تعمل بصورة مُعاكسة كليًا، إذ يتم إطلاق الأشعة من منظور اللاعب (الكاميرا) باتجاه عالم اللعبة، و عندما يصطدم الشعاع بالمضلع و يتداخل معه (intersection) يتم إطلاق شعاع ظل (هناك أنواع متعددة من الأشعة) باتجاه مصدر الإضاءة الذي هو في هذه الرسمة التوضيحية؛ الشمس. إن كان هناك بنية تضليعية تعترض الطريق بين الشعاع و مصدر الإضاءة كما هو الحال في هذه الرسمة، يتم تشكيل الظل. لهذا السبب يُعد استخدام التقنية للظلال أقل كلفة من باقي الاستخدامات: لسنا بحاجة إلى إطلاق أشعة إضافية، الحال ليس كذلك في حال وقوع الانعكاس و الانكسار.
تعتمد التقنية على دالتين حاسوبيتين أساسيتين هما ( ) trace و ( ) shade، كما يظهر في الرسمة، بعد الاصطدام الأول بين السطح و الشعاع الذي جرى إطلاقه عن طريق دالة ( ) trace، تتم استعادة معلومات السطح و لونه عن طريق دالة ( ) shade ثم يتم إطلاق شعاعين إضافيين من منطقة التصادم، الأول هو شعاع ظل موجه إلى مصدر الضوء، و الثاني هو شعاع عام موجه إلى البيئة، الشعاع الثاني اصطدم ببنية تضليعية أخرى دائرية الشكل، فتم تفعيل دالة ( ) shade مرة أخرى لاستعادة ألوان و معلومات الشكل التضليعي الدائري و إرسالها إلى وحدة الshader، و أطلق بدوره شعاع ظل نحو مصدر الإضاءة و شعاع آخر يمثل ارتداد الضوء مرة أخرى.
من الواضح أنه حتى تعمل التقنية فنحن بحاجة إلى إطلاق الشعاع أولًا ثم تحديد و فحص إن كان الشعاع يتداخل (intersection) مع المضلع أم لا و لكن كيف يتم هذا الفحص؟ العملية لا تتم بالنظر، الحاسب لا يعرف إن كانت عملية التداخل ستحصل مع هذا المضلع أو ذاك، الحاسب لا يُدرك الأمور سوى بالقياس و التجربة و الحسابات و المعادلات و هكذا تعمل الحواسيب الشخصية، هل يتم فحص التداخل بين الشعاع و بين كل بوليغون موجود في الصورة لمعرفة إن كان البوليغون يعترض طريق الشعاع أم لا؟ هذا سيُدمر الأداء بالكامل و سيكون ساذجًا جدًا. ما هي الطريقة الأمثل؟ الحل الذي وصل إليه الباحثون و العلماء يعتمد على استخدام واحدة من هيكليتين للبيانات: إما هيكلية تُسمى k-d tree و هي هيكلية شجرية و إما هيكلية تُسمى Bounding Volume Hierarchy (أو BVH اختصارًا) و هي هيكلية شجرية أخرى. إن الهيكلية التي اعتمدها الباحثون و المصممون للبطاقات الرسومية من نفيديا أو AMD هي هيكلية BVH:
تعتمد هذه الطريقة على تقسيم المشهد إلى صناديق فراغية بداخلها صناديق أصغر و بداخلها صناديق أصغر و هكذا، بدلًا من فحص تداخل الشعاع مع كل مضلع، يتم فحص تداخل الشعاع مع الصندوق كاملا بكل ما فيه من مضلعات، هل هناك تداخل؟ إن كان الجواب لا، تنتقل عملية الفحص إلى الصندوق التالي، إن كان هناك تداخل، يتم فحص الصناديق الموجودة داخل هذا الصندوق و يتم كذلك فحص وجود تداخل بين المضلعات الموجودة داخل هذا الصندوق و بين الشعاع، حتى يتم الوصول إلى المضلع الذي يتداخل مع الشعاع.
الرسمة التوضيحية تُظهر هذا جيدًا و هي رسمة توضيحية قدمتها نفيديا في الورقة البيضاء (white paper) لمعمارية Turing، نُلاحظ في الرسمة تقسيم الأرنب إلى مجموعة من الصناديق، الشعاع يدخل في الصندوق الأول في الخطوة الأولى، في الخطوة الثانية يصل إلى صندوق داخلي، في الخطوة الثالثة يصل إلى صندوق داخلي ثالث أصغر حجمًا و في الخطوة الرابعة يعثر البرنامج على تداخل بين الشعاع و بين البوليغون بداخل الصندوق، الهيكلية بجانب الأرنب توضح كيف يحتفظ الحاسب بهذه المعلومات على مستويات و كيف ينتقل من مستوى إلى آخر و هذه المستويات تمثل هيكلية شجرية. نُلاحظ أنه و باستعمال هذه الطريقة، يتمكن البرنامج من الوصول إلى نقطة التصادم بين الشعاع و المضلع بأقل عدد ممكن من الحسابات و عمليات الفحص، تخيلوا لو كان علينا أن نفحص تصادم الشعاع مع كل مضلع يكوّن جسد هذا الأرنب؟
كيف نجح الباحثون و المهندسون في تفعيل التقنية باستخدام بطاقة رسومية واحدة
تطلّب تدشين تقنية تتبع الأشعة في البطاقات الرسومية الموجهة إلى الحواسيب المنزلية 10 أعوام كاملة من البحث و التطوير لدى مختلف الأقسام في شركة نفيديا، إن معمارية Turing من نفيديا هي معمارية مبنية بالكامل و خصيصًا مع وضع تتبع الأشعة في الحُسبان و قد وصلت إلى الأسواق للمرة الأولى من خلال بطاقات RTX 2xxx في العام 2018، و لكن كيف تحقق ذلك؟
أولًا: كان من الصعب جدًا أو من المستحيل تطبيق التقنية لرسم المشاهد بالكامل في الألعاب في الوقت الحالي و ذلك لأن قدرات الهاردوير لا تسمح بذلك، و وصل الباحثون و المهندسون إلى الحل الأمثل و هو استخدام توجه هجين بين الـRasterization و تتبع الأشعة، تُستخدم تقنيات الRasterization أو التنقيط بشكل أساسي في بناء المشاهد التي نراها في الألعاب و الهيئة التضليعية لها بفضل سرعتها الحاسوبية في الأداء، و تُطبق عليها تقنيات تتبع الأشعة بالشكل الذي يحتاجه و يُقرره مهندسو الرسوم في مجالات مثل الظل، الإضاءة، الانعكاس و الانكسار من أجل الإبهار الرسومي و تقريب مستوى الرسوميات من مستوى رسوم الكمبيوتر في أفلام السينما.
ثانيًا: العقبة الثانية التي تجاوزها الباحثون و المُصممون و المهندسون تلخصت في عدد الأشعة التي تحتاجها التقنية، للوصول إلى صورة دقيقة و صحيحة باستخدام تتبع الأشعة نحتاج إلى مئات أو حتى آلاف الأشعة لكل بيكسل و لكن هذا مستحيل حاليًا نظرًا لكثافة العمليات الحسابية المطلوبة، و عوضًا عن ذلك تستخدم ألعاب الفيديو عدد محدود جدًا من الأشعة و في حالات نادرة تستعمل شعاع واحد فقط لكل بيكسل على الشاشة، إن استخدام عدد قليل من الأشعة يؤدي إلى صورة ناقصة المعلومات و تحتوي بالتالي على ما يُسمى بالضجيج أو الـnoise و هي أشبه بنقاط سوداء تظهر على الصورة، الحل الأمثل للتخلص من هذا الضجيج كان في عملية معاكسة تُسمى denoise إذ يتم تطبيق خوارزميات تُفلتر الصورة و تُعالجها لتقوم بإزالة هذا الضجيج.
في هذا الفيديو تستعرض شركة نفيديا كيف تكون الصورة في لعبة Watch Dogs Legion عند تطبيق تقنية تتبع الأشعة باستخدام شعاع واحد فقط لكل بيكسل، الصورة مليئة بالضجيج و غير مقبولة إطلاقًا، و بعد تطبيق فلتر نفيديا NRD (أو Nvidia Real-Time Denoiser) تظهر لنا صورة خالية من هذا الضجيج. نفيديا تتوقع أن يتم اللجوء في المستقبل إلى الذكاء الاصطناعي للتخلص من الضجيج بكفاءة و سرعة أعلى و ربما يكون هذا أحد أسباب توظيف نفيديا لأنوية الذكاء الاصطناعي Tensor Cores في بطاقاتها الرسومية بمعماريتي Turing و Ampere.
الفرق بين توجه Nvidia و توجه AMD الحالي
يُمكننا القول بثقة أن معمارية نفيديا مع تتبع الأشعة هي أفضل و أكثر تقدمًا و كفاءة في الوقت الحالي، لا تتفوق نفيديا في المعمارية فقط مع Ampere و إنما حتى معمارية Turing التي توفرت في الأسواق في 2018 تتفوّق على معمارية RDNA2 في تقنية تتبع الأشعة، سنشرح كيف تعمل المعماريتين مع هذه التقنية و نعتقد أن القارىء الكريم سيتفق معنا حتى في تفوق Turing مع هذه التقنية.
تضم معمارية Turing (و معمارية Ampere كذلك في الوقت الحالي) أنوية معالجة خاصة بتتبع الأشعة تُسميها نفيديا RT Cores، تتكون كل نواة من هذه الأنوية من وحدتين حسابيتين. في البداية يقوم الدرايفر ببناء هيكلية BVH و تقوم وحدات التنقيط ببناء الصورة أو المشهد أمام اللاعب، و عندما يتم إطلاق الشعاع من الكاميرا تقوم وحدات الshading في البطاقة الرسومية بتسليم كافة المهام الحاسوبية إلى أنوية تتبع الأشعة و تواصل عملها بصورة طبيعية تماما، أما أنوية تتبع الأشعة فإن كل وحدة من الوحدتين الحسابيتين فيها تقوم بعملية مختلفة:
الوحدة الحسابية الأولى كما يظهر في الرسم التوضيحي تقوم أولًا بعملية التنقل (Traversal) بين الصناديق الفراغية في هيكلية BVH، و تقوم بإجراء عملية فحص: هل هناك تصادم بين الشعاع و الصندوق أم لا؟ أما الوحدة الحسابية الثانية يبدأ عملها إذا كان الشعاع يتداخل مع الصندوق، فهي تقوم بعملية فحص أخرى لتعثر على أي تصادم محتمل بين الشعاع و المضلعات الموجودة داخل الصندوق، إذا تم العثور على عملية التداخل أو التصادم بين الشعاع و المضلع، يتم إعادة لون (shade) المضلع و المعلومات المطلوبة إلى وحدة الshading لتطبيق التأثيرات الرسومية على المشهد.
معالجات RT Cores تقوم بهذه الوظيفة بالكامل، ليس هناك أي حاجة لتدخل المعالجات الرسومية في بطاقات نفيديا و التي تُسميها الشركة CUDA Cores، معالجات تتبع الأشعة تتكفل بكل العمليات الحسابية المذكورة. إن بطاقة الرسوم RTX 3080 تضمّ في قلبها 68 مُعالج RT Core.
في حالة AMD و معمارية RDNA2، تستخدم الشركة مسارعات تتبع الأشعة (RT Accelerator) ضمن الوحدة الحسابية (Compute Unit) و ليست مستقلة عنها مثل نفيديا، تقوم مسارعات تتبع الأشعة في معمارية RDNA2 بوظيفتين أساسيتين: فحص التداخل بين الشعاع و الصندوق، و فحص التداخل بين الشعاع و المضلع، إلا أن مسارع تتبع الأشعة في هذه المعمارية غير قادر على القيام بعملية التنقل بين الصناديق، و تتولى معالجات البطاقة الرسومية (تسميها الشركة stream processors) هذه الوظيفة، و لهذا السبب يتأثر أداء بطاقات AMD كثيرًا عند تفعيل تتبع الأشعة، لأن وحدات المعالجة الرسومية تصبح مسؤولة عن القيام بحسابات إضافية لا يستطيع مسارع تتبع الأشعة القيام بها.
AMD تلجأ إلى حل ذكي للتقليل من هذا التأثير و ذلك عن طريق ذاكرة الـInfinity Cash، إذ تحتفظ هذه الذاكرة بمقدار كبير من المعلومات الفراغية التي تحتاج إليها هيكلية BVH عوضًا عن تخزينها في الVRAM، و من هنا تظهر من جديد الأهمية المُطلقة للـInfinity Cash في معمارية RDNA2 و فوائدها العديدة. و من الجدير بالذكر أن ألعاب الفيديو التي تستخدم التقنية بناء على برمجيات AMD تقوم بتخصيص ذاكرة الكاش بصورة أساسية للخروج بأفضل أداء ممكن من هذه المعمارية مع تتبع الأشعة، و نعتقد أن هذا ما تقوم به ألعاب البلايستيشن5 التي تستعمل التقنية، إلا أن هذا مُجرد استنتاج من طرفنا. كل وحدة حسابية في البطاقة الرسومية بمعمارية RDNA2 تضمّ مسارع واحد لتتبع الأشعة، بطاقة الرسوم 6800 XT تضم 72 وحدة حسابية و بالتالي 72 مُسارع لتتبع الأشعّة.
مع أن هذه التقنية ما زالت في مرحلة مبكرة إلا أن النتائج بدأت تظهر بالفعل و تُعطي جمالية إضافية لألعاب الفيديو التي تستعملها، و نعتقد أن وضعية هذه التقنية عند نهاية الجيل الحالي لن تكون كما هي الآن، خاصة مع منصة الحاسب الشخصي التي نعتقد أنها ستشهد التطور الأكبر للتقنية في السنوات القادمة، و لعلّ ألعاب Control و Cyberpunk 2077 و Watch Dogs Legion و Metro Exodus Enhanced Edition و مايلز موراليس و راتشيت اند كلانك بالإضافة إلى Minecraft (التي تستعمل Path Tracing و هي أكثر تعقيدًا) تُعطينا فكرة جميلة عما ينتظرنا في المستقبل.