این روزها اگر اخبار بازیها را دنبال کنید، شاید نام ری تریسینگ یا ردیابی پرتو زیاد به گوشتان خورده باشد. از بازیهایی که در تبلیغاتشان استفاده از این روش در نورپردازی را فخر فروشی میکنند، تا کمپانیهای تولید چیپست کارتگرافیک مانند انویدیا که بسیار بر روی پشتیبانی از این متد مانور میدهند و استفاده از آن را انقلابی در گرافیک بازیها میخوانند.
اما مطلبی که کسی میل به صحبت درباره آن را ندارد هزینههای سرسامآوری است که این کارتگرافیکها بر روی دست شما خواهند گذاشت؛ و همین موضوع باعث میشود تا این سوال را از خود بپرسیم: آیا متحمل شدن هزینه برای همچون قابلیتی، آن هم زمانی که عناوین انگشتشماری از آن پشتیبانی میکنند، ارزش دارد؟ در این مقاله قصد داریم تا علاوه بر معرفی کلی و جزئی ریتریسینگ و نحوه کارکرد آن، بررسی کنیم که اگر سختافزار فعلیتان را به نسلهای جدیدتر که از ریتریسینگ پشتیبانی میکنند به روزرسانی نکنید، چه چیزی را از دست خواهید داد؟
ری تریسینگ چیست و چه کاربردی دارد؟
به طور کلی، ریتریسینگ روشی در نورپردازی و شبیهسازی رفتار نور در یک محیط است. از گذشته تاکنون روشهای متفاوتی برای این امر ابداع و استفاده شده است، اما تمامی آنها (که در ادامه ذکر خواهند شد) درواقع روشی برای دور زدن ریتریسینگ بودهاند چراکه پیادهسازی آن بر روی سختافزارهای موجود ممکن نبود.
ریتریسینگ اما نزدیکترین روش شبیهسازی به واقعیت است؛ در ریتریسینگ هر پیکسل به عنوان ذرهای از نور محاسبه میشود. به طوری که از هر پیکسل پرتو نوری پرتاب میشود و پس از برخورد با هر جسم یا جذب میشود و یا ضعیفتر شده و منعکس میشود؛ پرتو منعکس شده آنقدر به برخورد با سطوح دیگر و بازتاب شدن ادامه میدهد تا جذب شود یا به منبع نوری برسد. هر پرتو با برخورد به هر سطح اطلاعاتی از رنگ و بافت را ذخیره میکند تا در نهایت پس از جذب، میانگین این رنگها را محاسبه و برای پیکسل ارسال کند.
قابل توجه است که هر پرتو بعد از برخورد با یک سطح به چند پرتو تبدیل و منعکس میشود و این اتفاق برای این پرتوهای منعکس شده نیز میافتد و این روند ادامه پیدا میکند و به همین دلیل هم پردازش آن بسیار دشوار است زیرا تعداد پرتوها بسیار زیاد خواهد شد. گفتنی است که تئوری پیادهسازی ری تریسینگ پیش از روشهای دیگر نیز وجود داشته و صرفا به دلیل محدودیت سخت افزار قابل اجرا نبوده است زیرا خروجی گرفتن یک فریم 4K با این نورپردازی ساعتها زمان میبرد اما بسیاری از انیمیشنهای کمپانیهایی مانند پیکسار با صرف هزینه هنگفتی و با استفاده از ابر کامپیوترها با ری تریسینگ ساخته و خروجی گرفته میشدند.
حتی اکنون نیز امکان اجرای کامل این روش وجود نداشته و با بهینهسازیهای بسیار و استفاده از آن در کنار متدهای قبلی مانند Rasterization اجرای آن ممکن میشود.
Rasterization چیست؟
روشی که تاکنون در بازیها استفاده میشد رستریزیشن بوده است. در این روش به طور خلاصه بخشی از اجسام سه بعدی که از زاویه دید ما قابل رویت هستند تبدیل به اشکال دو بعدی میشوند. برای بهتر فهمیدن آن تصور کنید که یک جسم از یک صفحه گذر کند، در این هنگام هر قسمتی از آن جسم که با صفحه برخورد میکند باعث رنگ شدن آن قسمت از صفحه میشود. حال با تکنیکهای مختلفی که توسعه دهندگان در سالیان گذشته ارائه دادهاند (Shaders) سایهها و بازتابها به تصویر اضافه میشوند.
یک مثال این است که فرض کنید یک کره شیشهای در وسط یک اتاق قرار دارد، برای ایجاد بازتاب اتاق بر روی کره، یک عکس 360 درجه در آن نقطه از اتاق گرفته میشود و مانند پوست بر روی آن کره قرار میگیرد، برخلاف ری تریسینگ که تمامی این کارها را به صورت خودکار انجام میدهد. در بخشهای دیگر نیز به همین شکل است؛ شما باید برای اجسام تعریف کنید که شبیه چه باشند و چگونه رفتار کنند تا مانند اجسام واقعی که از قوانین فیزیک و اپتیک تبعیت میکنند به نظر برسند، قوانینی که ریتریسینگ بر اساس آن کار میکند. همین هم باعث تفاوت این دو روش میشود، درست است که رفته رفته تکنیکها برای طبیعی بودن روش رستریزیشن بهتر شدهاند اما همچنان نمیتوانند با نورپردازی حقیقی رقابت کنند و از طرفی استفاده از آن دشوارتر است.
کارت گرافیکهای نسل جدید انویدیا و ایامدی چه تفاوتی با نسلهای سابق دارند؟
انویدیا در کارت گرافیکهای خود که به جای GTX پیشوند RTX دارند، علاوه بر هستههای پردازشی معمول خود، از هستههایی تحت عنوان RT Cores استفاده کرده است که کار آنها به ویژه پردازش پرتوهای Ray Tracing است.
یک RT Core دو وظیفه اصلی دارد:
- Ray Triangle Intersection Test
برای ابتدا بد نیست اشاره کنیم به این که تمامی اجسام سه بعدی در فضای یک بازی یا طرح سهبعدی از اشکال دو بعدی تشکیل شدهاند. معمولا این اشکال دو بعدی مثلث هستند، در حقیقت اشکال دیگری وجود دارند که شبیه سازی برخورد نور به آنها راحتتر باشد اما ساختن اشکال سهبعدی پیچیده با آنها کار سادهای نیست و به همین دلیل مثلث برای این امر برگزیده شده است.
یکی از وظایف آرتی کورها یا هستههای ریتریسینگ تحلیل برخورد پرتوهای نور به این مثلثهای خیلی کوچک است.
- Bounding Box Test
یکی از راههای بهینه سازی که بالاتر به آن اشاره شد، جعبههای مرزبندی هستند. در کل اگر بخواهیم تمامی اجسام یک محیط را وارد محاسبات پرتویی خود بکنیم، توان خیلی بیشتری از کارت گرافیک گرفته میشود و در نتیجه عملکرد پایین میآید. کار جعبههای مرزبندی حل کردن این موضوع است. به شکلی که توسعه دهند با مشخص کردن جعبهای فرضی به دور تعدادی از اجسام مشخص میکند که اگر اولا آن جعبه در دید مخاطب بود و دوما پرتو وارد آن جعبه میشد، محتوای آن را وارد محاسبات کند.
یکی دیگر از وظایف RT Core تشخیص جعبهها و کنترل وجود داشتن یا نداشتن آنها در محاسبه است.
شرکت انویدیا سری RTX خود را از نسل 2000 کارت گرافیکهایش آغاز کرد و حالا با ورود به نسل 3000، نسل دوم RT Coreهای خود را وارد بازار کرد. این در حالیست که شرکت AMD در سری جدید کارتگرافیکهای خود، نسل اول هستههای ریتریسینگ خود را روانه بازار کرد که همین امر هم باعث برتری شرکت انویدیا در این زمینه نسبت به ایامدی شده است.
به علاوه هر دو شرکت روشهای پردازش جدیدی ارائه دادهاند که در مقالهای دیگر به آن خواهیم پرداخت.
آیا ری تریسینگ ارزشش را دارد؟
حال که خوب با ری تریسینگ آشنا شدیم به سوال اولمان میپردازیم. آیا ارزش هزینهاش را دارد؟ در جواب باید گفت که بله اما هنوز با نداشتنش چیز زیادی از دست نمیدهید. حقیقت این است که ریتریسینگ جلوه و زیبایی زیادی به بازیها میبخشد و آن طور که از پشتیبانی چیپستها و کنسولها پیداست، قرار است هر روز قدمی به سمت بازیهای بیشتری که گزینه Ray Tracing دارند برداریم، مخصوصا که بازیسازها نیز از این قضیه سود خواهند برد اما امروز که این مقاله را مینویسیم تعداد عنوانهایی که از آن پشتیبانی میکنند، زیاد نیست.
به علاوه پیشرفتهایی که در زمینه رستریزیشن صورت گرفته باعث شده تا در بسیاری از موارد یک فرد غیر متخصص متوجه تفاوت این دو روش در یک بازی نشود. پس هنوز برای فروختن دار و ندارمان و خریدن یک کارت گرافیک جدید آن هم فقط برای تجربه ریتریسینگ عجلهای نیست.
نظر شما چیست؟ آیا ارزشش را دارد؟ و آیا تجربه کار با ری تریسینگ را داشتهاید؟ نظرات و تجربیات خود را با ما و دوستانتان در آیتیرسان به اشتراک بگذارید.
سلام
من قبلا فیلمی در مورد مقایسه عملکرد و ری تریسینگ کارت های گرافیک RTX3070 و RX 6800 XT رو دیدم
rx تو اکثر بازی ها فریم دهی بالاتری نسبت به rtx داره با اینکه میگن ری تریسینگ ضعیفی داره اما هیچ ضعفی در این rx ندیدم تقریبا با rtx یکی بود از نظر منو بخواین بین این دو rx رو پیشنهاد میکنم چون قیمتش نسبت به اون کمتره و واقعا ارزششو داره
سلام آرمان. توجه کن که در اصل قیمت rtx 3070 ششصد دلار و rx 6800xt ششصد و پنجاه دلار است و به دلیل شرایط داخلی و جهانی در ایران 3070 گرانقیمتتر است. 6800xt در واقع برای رقابت با 3080 طراحی شده که از آن ضعیفتر است. چه بسا که برخی از عنوانها برای کارت گرافیکهای انویدیا بهینه سازی شدهاند و روی 3070 بهتر از 6800xt عمل میکنند.
آها اوکی خیلی ممنون رهام