اما چرا Ray Tracing اینقدر برای بازیهای ویدیویی مهم است؟ چه تفاوتی با کارهایی که بازیسازان برای چند دهه انجام دادهاند دارد؟ بیایید به بررسی این موضوع بپردازیم و ضمناً لازم نیست نگران باشید، سعی میکنیم آنقدرها تخصصی صحبت نکنیم.
Ray Tracing چیست و چطور کار میکند؟
در دنیای واقعی، هر آن چیزی که میبینیم نتیجه برخورد نور به اشیای مقابل چشم ماست. درجات مختلف نوری که اشیا دریافت میکنند، بازتاب میدهند یا میشکنند، تعیینکننده اینست که آن شی چطور در چشم ما دیده میشود.
رهگیری پرتو اساساً همین پروسه به صورت برعکس است و نامی که برای آن انتخاب شده، معنای دقیق را میرساند: این نام به متد ساخت تصویری کامپیوتری اشاره دارد که با «رهگیری» مسیر نور از یک چشم خیالی یا دوربین تا شی حاضر در تصویر کار میکند. (این روش به مراتب از رهگیری تمام پرتوهایی که توسط منبع نور ساطع میشوند موثر است؛ زیرا پردازش هر پرتویی که قرار نیست در میدان دید بیننده باشد، قدرت کامپیوتری را هرز میبرد).
یک الگوریتم Ray Tracing المانهایی مانند متریالها و منابع نوری را حساب میکند. برای مثال، اگر دو توپ بسکتبال با یک سایه مشابه از رنگ نارنجی داشته باشیم و اگر یکی از آنها از جنس چرم باشد و دیگر از جنس پلاستیک، یه شکلی یکسان دیده نمیشوند؛ زیرا نور با هر یک از این سطوح به شکل متفاوتی تعامل میکند. هرچیزی که براقتر باشد، مانند فلز یا پلاستیک سخت، نور را بازتاب میدهد و اشیای نزدیک را با نور غیرمستقیم روشن میکند. اشیایی که در مسیر یک پرتو نور قرار گرفته باشند، از خود سایه به جا میگذارند. و یک ماده شفاف یا نیمه شفاف مانند شیشه یا آب هم نور را میشکند – مثلاً مانند زمانی که یک مداد بعد از قرار گرفتن درون یک لیوان آب، شکسته به نظر میرسد.
از آن جایی که رهگیری پرتو بر شبیهسازی حرکت نور در دنیای واقعی و رفتار آن هنگام تعامل با مواد و متریالهای فیزیکی مبتنی است -یا به بیان دیگر، از قوانین فیزیک پیروی میکند- تصاویر کامپیوتری تولید شده از طریق رهگیری پرتو میتوانند حقیقتاً فوتو رئالیستیک باشند. به همین خاطر است که این تکنیک به نُرمی در صنعت فیلمسازی تبدیل شده. اما یکی از نقاط ضعف رهگیری پرتو این بود که آنقدر کامپیوترها را به چالش میکشید که برای گرافیک بازیهای ویدیویی که به صورت بلادرنگ (Real-Time) رندر میشوند عملاً ناکارآمد به حساب میآمد؛ البته تا همین اواخر.
برای توضیح چرایی این موضوع، بیایید وارد جزییات دقیقتر چگونگی کارکرد رهگیری پرتو شویم. در دیاگرام بالا، به شبکهای که در تصویر میبینید به عنوان مانیتور کامپیوتر نگاه کنید. برای رندر صحنهای از یک بازی ویدیویی مدرن، کامپیوتر، جهان مجازی سهبعدی بازی را در مانیتوری که تصویر را به صورت دوبعدی نمایش میدهد نقشهبرداری میکند. برای انجام این کار، کامپیوتر باید رنگ تمام پیکسلهای موجود روی صفحه را تعیین کند – و یک نمایشگر 1080p، بیش از 2 میلیون پیکسل دارد.
پروسه با تاباندن کردن یک پرتو یا بیشتر از دوربین روی هر پیکسل آغاز میشود، و سپس مشاهده اینکه آیا پرتوها هیچ مثلثی را قطع میکند یا خیر. (برای توضیح، اشیای مجازی در گرافیک کامپیوتری از پالیگان تشکیل شدهاند و گاهی از صدها هزار یا میلیونها مثلث). اگر یک پرتو با یک مثلث برخورد کند، الگوریتم از اطلاعاتی مانند رنگ مثلث و فاصلهاش از دوربین استفاه میکند تا قادر به تعیین رنگ نهایی پیکسل باشد. علاوه بر این، پرتو ممکن است از روی یک مثلث جهیده و از میان آن عبور کند و در این صورت پرتوهای بیشتر و بیشتری برای اندازهگیری به وجود میآید. و رهگیری یک پرتو واحد از میان یک پیکسل، برای خلق تصویری شبیه به دنیای واقعی کافی نیست. هرچه پرتوها بیشتر باشند، کیفیت تصویر بالاتر میرود… و به منابع پردازشی بیشتری هم نیاز است.
کمپانیهایی مانند Weta Digital و پیکسار «مزارع رندر» دارند -ابرکامپیوترهایی که از دهها هزار هسته پردازشی به صورت همزمان استفاده میکنند- و میتوانند ساعتها صرف تولید یک فریم واحد از یک افکت بصری خاص، یا هرچیزی که در یک انیمیشن روی صفحه دیده میشوند کنند. اما تمام محاسبات پردازنده و پردازشگر گرافیکی که صرف تولید یک فریم از بازیهای ویدیویی میشود، باید در کمتر از یک ثانیه اتفاق بیفتد. این به آن خاطر است که یک دستگاه گیمینگ، باید قادر به رندر حداقل 30 فریم جدید در هر ثانیه باشد؛ به صورت آنی؛ تا تجربهای روان از بازی به دست آید. (به همین خاطر است که کاتسینهای از پیش رندر شده معمولاً به مراتب بهتر از خود گیمپلی به نظر میرسند؛ زیرا توسعهدهندگان میتوانند روی بازی وقت گذاشته و افکتهای بیشتری را به ویدیویی از پیش ضبط شده اضافه کنند).
در مقابل، گرافیک کامپیوتری بلادرنگ برای چند دهه از پروسهای به نام «رستریزشن – Rasterization» برای رندر استفاده کرده است. اگرچه رستریزیشن هم نیازمند قدرت پردازشی فراوان است، پردازشگرهای گرافیکی مدرن کاملاً با این تکنیک سازگاری دارند و قادر به خواندن سریع پالیگانها و تبدیلشان به پیکسلهایی با قابلیت سایهپردازی و نورپردازی هستند. با این همه وقتی نوبت به گرافیک فوتو رئالیستیک میرسد، تکنیک رستریزیشن با محدودیتهای زیادی مواجه میشود، خصوصاً در زمینه نورپردازی. طی سالیان متمادی، توسعهدهندگان بازی از تکنیکهای هوشمندانهای برای تولید المانهای نورپردازی مانند بازتاب، سایه و نورانیسازی غیرمستقیم استفاده کردهاند، اما پیادهسازی تمام این ترفندها صرفاً به این خاطر ضروری بود که Ray Tracing هنوز به جایگزینی امکانپذیر تبدیل نشده بود.
تکنولوژی تازه گرافیک، هم از رسترزیشن و هم از رهگیری پرتو استفاده میکند و وظایف رندر میان دو متد تقسیم میشود که هرکدام برای وظیفه خود بهترین هستند. انویدیا برای نخستین بار Ray Tracing را طی پاییز گذشته و از طریق کارتهای گرافیک جدید سری RTX به دست مصرفکنندگان رساند و این کارتها شامل سختافزاری هستند که به صورت خاص بار برای پردازش محاسبات رهگیری پرتو ساخته شده. در ماه آوریل هم انویدیا درایور جدیدی منتشر کرد که پشتیبانی از رهگیری پرتو را به برخی کارتهای سری GTX میآورد، البته با پرفورمنس ضعیفتر.
استودیوی دایسِ الکترونیک آرتز از این تکنیک برای بازتاب نور در بتلفیلد 5 استفاده کرد، کریستال داینامیکس به آوردن آن روی Shadow of the Tomb Raider تمرکز کرد و 4A Games هم به سراغ نورانیسازی سراسر (Global Illumination) و Ambient Occlusion در Metro Exodus رفت. پشتیبانی از رهگیری پرتو همچنان به صورت محدود انجام میشود، اما شرایط تغییر خواهد کرد.
چرا رهگیری پرتو آینده گرافیک بازیهای ویدیویی است؟
هنوز در نخستین روزهای رهگیری بلادرنگ پرتو در صنعت بازیهای ویدیویی به سر میبریم. کارتهای گرافیک انویدیا RTX تنها پردازشگرهای گرافیکی مخصوص به مصرفکنندگان هستند که پشتیبانی مبتنی بر سختافزار از این تکنیک میکنند و به همین خاطر هم هست که تعداد بازیهای بهرهمند از رهگیری پرتو اینقدر کم باقی مانده. اما هرچه سهامداران بیشتری به این تکنولوژی تمایل نشان دهند، آینده روشن و روشنتر خواهد شد.
مایکروسافت پشتیبانی از Ray Tracing را طی پاییز گذشته با دایرکت اکس 12، یکی از نرمافزارهای کلیدی برای بازیهای ویندوز و ایکس باکس وان، ادغام کرد. در کنفرانس توسعهدهندگان سال 2019 که ماه مارس برگزار شد، اپیک گیمز و یونیتی اعلام کردند که موتورهای بازیسازیشان – به ترتیب، آنریل انجین و یونیتی که جزو محبوبترین موتورهای بازیسازی دوران مدرن به حساب میآیند- حالا به صورت بومی از رهگیری پرتو پشتیبانی میکنند. کرایتک هم به زودی رهگیری پرتو مبتنی بر نرمافزار را به کرای انجین میآورد و این یعنی بازیهایی که با کرای انجین ساخته شوند، بدون نیاز به سختافزاری مانند کارتهای RTX انویدیا قادر به ارائه رهگیری پرتو هستند.
اصلیترین رقیب انویدیا، یعنی AMD هم در زمینه رهگیری پرتو بیکار نمانده. این کمپانی هنوز از پردازشگرهای گرافیکی مخصوصش با پشتیبانی مبتنی بر سخت افزار از رهگیری پرتو رونمایی نکرده – در مراسم رونمایی از کارتهای نسل بعد با معماری Navi هم در جریان نمایشگاه E3 2019، هیچ اشارهای به پشتیبانی از رهگیری پرتو در کارتهای Radeon RX 5700 XT و مدل ارزانتر RX 5700 نشد. با این همه، هم ایکس باکس سری ایکس و هم پلی استیشن 5 بعدی از سیلیکون AMD استفاده میکنند، از جمله پردازشگر گرافیکی شخصیسازیشدهای که از معماری Navi بهره میبرد. بنابراین اگر پلی استیشن 5 و ایکس باکس سری ایکس از رهگیری پرتو پشتیبانی میکنند، میتوان با قطعیت گفت که این موضوع درباره کارتهای گرافیکی Navi هم مصداق دارد.
میتوان تصور کرد که یک سال دیگر این موقع، AMD هم به انویدیا در فروش کارتهای گرافیک مجهز به رهگیری پرتو پیوسته. و در آن زمان، احتمالاً پلی استیشن 5 و ایکس باکس سری ایکس ههم عرضه شدهاند. این به ساخت فونداسیونی عظیم و قدرتمند برای توسعهدهندگان منجر میشود و دلایل بیشتری برای ساخت بازیهایی با پشتیبانی از رهگیری پرتو به آنها میدهد. و به این ترتیب، گرافیک بازیهای ویدیویی به جلو رانده شده و به سطوح بیسابقهای از فوتو رئالیسم میرسد.
جالب بود.