
Diablo Immortal یک بازی اکشن نقش آفرینی چندنفره رایگان (ARPG) است که به طور مشترک توسط Blizzard Entertainment و NetEase ساخته شده است. Diablo Immortal، فصل جدیدی از سری Diablo، که در سال 2022 راه اندازی شد. این بازی شکاف داستانی بین Diablo 2 و Diablo 3 را پر می کند و ماجراجویی جدیدی را در اطراف تکه های World Stone باز می کند، جایی که بازیکنان برای مبارزه با شیاطین و نیروهای فاسد، قاره Sanctuary را کشف می کنند.
با نوآوری در معماری GPU موبایل و پیشرفت در قابلیتهای شتاب سختافزاری، فناوری ردیابی پرتو به تدریج از دسکتاپ به دستگاههای تلفن همراه مهاجرت میکند و به یکی از محرکهای اصلی رندر گرافیکی با وفاداری بالا تبدیل میشود. محاسبه انعکاسهای دینامیکی واقعی فیزیکی از نظر محاسباتی سخت است، اما یک واحد سختافزاری اختصاصی این امکان را در پلتفرمهای تلفن همراه با محدودیت توان فراهم میکند. این فناوری با ردیابی مسیر انتشار نور در صحنه در زمان واقعی، رفتار بازتابی سطوح پیچیده مانند آینه ها، فلزات و مایعات را شبیه سازی می کند. ردیابی پرتو بر محدودیتهای فضایی و خطاهای تقریبی طرحهای شطرنجیسازی سنتی غلبه میکند و از بیان ثابت جهانی منابع نور پویا، اشیاء خارج از صفحه و بازتابهای چندسطحی پشتیبانی میکند.
ردیابی پرتوهای سخت افزاری در موبایل
فناوری ردیابی پرتوی سختافزاری عمدتاً شامل دو پارادایم پیادهسازی است: خط لوله ردیابی پرتو و پرس و جو پرتو .
خط لوله ردیابی پرتو یک خط لوله کامل را از طریق مراحل سایه زن اختصاصی (تولید اشعه / تقاطع / سایه زن نزدیکترین ضربه) ایجاد می کند. اگرچه میتواند به کنترل دقیق تعامل پرتو برسد، خط لوله ردیابی پرتو به پیکربندی خط لوله مستقل نیاز دارد که پیچیدگی توسعه را افزایش میدهد.
از سوی دیگر، پرس و جوی پرتو، اجازه می دهد تا پرس و جوهای پرتو مستقیماً از محاسبات سنتی یا سایه زن های قطعه شروع شود، و آن را به یک فناوری اصلی برای ردیابی پرتوهای موبایل تبدیل می کند. با حذف نیاز به خطوط لوله مجزا، پرس و جوی پرتو نه تنها فرآیند توسعه را به طور قابل توجهی ساده می کند، بلکه سه مزیت عمده نیز دارد:
- سازگاری با محیطهای محاسباتی ناهمگن و سختافزار ردیابی پرتوی ناکامل را فراهم میکند
- از فراخوانی ردیابی پرتو در هر مرحله سایهاندازی بر اساس تقاضا پشتیبانی میکند
- با کاهش مصرف منابع، محدودیتهای پهنای باند و توان پلتفرمهای موبایل را برآورده میکند و مبنایی امکانپذیر برای جلوههای پیشرفته مانند روشنایی جهانی پویا و بازتاب بیدرنگ در بازیهای موبایل فراهم میکند.
Diablo Immortal از Vulkan برای استفاده از قابلیتهای سختافزاری ray tracing GPU استفاده میکند. این بازی مسیر پرتوهای نور را از طریق صحنه در زمان واقعی محاسبه میکند و خواص پیچیده مواد را برای دستیابی به اثرات بازتابی در زمان واقعی بر روی دستگاههای اندرویدی محاسبه میکند.


ساختار شتاب
ساختار شتاب هسته اصلی ردیابی پرتوهای سخت افزاری است. ساختار شتاب تا حد زیادی کارایی آزمایش تقاطع پرتو را از طریق سازماندهی سلسله مراتبی داده ها بهبود می بخشد.
این سیستم معمولاً دو سطح دارد: ساختار شتاب سطح بالا (TLAS) و ساختار شتاب سطح پایین (BLAS):
- TLAS نقش مدیر صحنه را ایفا می کند - با ثبت ماتریس تبدیل فضایی (شامل موقعیت، چرخش و مقیاس) تمام نمونه های BLAS، TLAS سازماندهی جهانی صحنه های پویا را درک می کند. به عنوان مثال، TLAS به توسعه دهندگان اجازه می دهد تا صدها نمونه از یک مدل درختی را در موقعیت ها و حالت های مختلف در صحنه توزیع کنند. و بنابراین، توسعه دهندگان به جای بازسازی هندسه، فقط باید ماتریس تبدیل جسم متحرک را در هر فریم به روز کنند.
- BLAS به عنوان واحد پایه - BLAS که مسئول کدگذاری موثر جزئیات هندسی یک شی 3 بعدی است، یک ساختار شاخص فضایی را از طریق الگوریتم سلسله مراتب حجم محدود (BVH) ایجاد می کند تا مناطق نامربوط را بتوان به سرعت در حین تشخیص پرتو نادیده گرفت.
این طراحی سلسله مراتبی به خط لوله ردیابی پرتو اجازه می دهد تا یک زنجیره تشخیص کارآمد از اشعه ==> TLAS (نمونه شی غربال درشت) ==> BLAS (تقاطع دقیق) را تشکیل دهد.
جداسازی مدلهای دینامیکی و استاتیک برای به حداقل رساندن هزینه ساخت سازه شتابدهنده کلیدی است:
- مدل استاتیک - BLAS فقط باید یک بار در مرحله اولیه ساخته شود و می تواند مستقیماً در بارگذاری صحنه بعدی مجدداً استفاده شود. برای جلوگیری از تأخیر بارگذاری صحنههای بزرگ، از فناوری پیشساخت ناهمزمان قاببندی میتوان برای گسترش کار ساخت BLAS به فریمهای متعدد استفاده کرد.
- مدل پویا
- مبتنی بر انیمیشن اسکلتی - دادههای راس پوستهشده باید بهطور موازی توسط شیدر محاسباتی در هر فریم محاسبه شوند تا یک بافر رأس جدید ایجاد شود و سپس بهروزرسانی تدریجی BLAS مربوطه آغاز شود، که از بازسازی کامل برای بهبود عملکرد جلوگیری میکند.
- تبدیل بدنه صلب - اگر فقط تبدیلهای ترجمه/چرخش/زوم درگیر باشد، نیازی به تغییر BLAS نیست، فقط ماتریس تبدیل جهان آن را در TLAS بهروزرسانی کنید و سپس فرآیند بهروزرسانی سریع TLAS را آغاز کنید.
بازسازی دوره ای برای حفظ کارایی ساختار شتاب در صحنه های دینامیکی ردیابی پرتو ضروری است. هنگامی که اجسام دینامیکی در توپولوژی هندسی تغییرات قابل توجهی مانند تغییر شکل یا جابجایی راس در مقیاس بزرگ متحمل می شوند، تقسیم فضایی اولیه ممکن است شکست بخورد و عملکرد تشخیص برخورد در طول پیمایش پرتو کاهش یابد. در نتیجه، یک بازسازی کامل، به جای یک به روز رسانی افزایشی، BLAS/TLAS بسیار پویا باید در هر N فریم فعال شود.
در نهایت، برای بهینهسازی عملکرد رندر ردیابی پرتو، یک استراتژی ساخت TLAS پویا بر اساس منطقه قابل مشاهده کاراکتر اتخاذ کنید: فقط مدلهای درون آستانه شعاع فعال کاراکتر در TLAS گنجانده شدهاند تا سربار اصلی محاسبه تقاطع پرتو کاهش یابد.
بازتاب های ردیابی اشعه
انعکاسهای ردیابی پرتو دارای مزایای متعددی نسبت به تکنیکهای سنتی مانند بازتابهای فضای صفحه (SSR) و بازتابهای مسطح (سطوح ساده که یک صحنه را در یک بعد نمایش میدهند) دارند. بازتاب ردیابی پرتو به طور فیزیکی مسیر نور را شبیهسازی میکند، اشیاء دینامیکی را در داخل و خارج صحنه بهطور دقیق ثبت میکند، از بازتابهای طبیعی از سطوح منحنی و غیرمسطح پشتیبانی میکند و افکتهای پرش نور متعدد مانند آینهها را فعال میکند. در مقابل، SSR محدود به اطلاعات قابل مشاهده بر روی صفحه است و بازتاب های مسطح مسطح مستعد خطاهای بصری یا اعوجاج در صحنه های پیچیده هستند.


بازتاب ردیابی پرتو در اصل شبیه به SSR سنتی است: بازتاب ردیابی پرتو پرتوهایی را در جهت بازتاب خط دید بر اساس پیکسل به پیکسل منتشر میکند و تقاطع پرتوها را با اشیاء صحنه محاسبه میکند. نقطه تقاطع برگردانده شده توسط پرسوجوی پرتو API حاوی اطلاعات هندسی (شامل شناسه نمونه، شاخص هندسه، و شاخص اولیه) و پارامترهای شطرنجی (مختصات باریسانتریک) در سطح مثلث است، اما حاوی دادههای رنگ پیکسل نیست. راه حل معمولی از فناوری اتصال منابع بیسیم استفاده میکند تا تمام پارامترهای بافت و متریال صحنه را در یک آرایه فهرست جهانی از پیش کامپایل کند. با استفاده از شناسههای هندسی بازگردانده شده توسط پرتو پرتو، میتوان ویژگیهای فیزیکی مواد مربوطه (مانند نقشه معمولی و زبری) را جستجو کرد و سپس با درونیابی مختصات باریسنتریک ترکیب کرد تا اطلاعات سایه سطح را محاسبه کند، و مقدار رنگ واقعی تقاطع را میتوان از طریق شطرنجیسازی بازسازی کرد.
با این حال، در طول فرآیند پیاده سازی، تیم Diablo Immortal دو مشکل فنی مهم را کشف کرد:
- مدل روشنایی مجبور شد یکپارچه شود، که با سیستم های سایه انداز متنوع انباشته شده در تاریخ پروژه در تضاد بود و منجر به عدم تطابق بین ماده عینی و ماده اصلی می شد.
- تنوع فرمتهای راس منجر به کاهش کارایی انشعاب دستورالعملها در مرحله شطرنجی میشود، که در بودجه عملکرد فشرده دستگاه تلفن همراه، موضوعی مهم است.
تیم Diablo Immortal به طور ابتکاری بافر دید را برای جدا کردن پردازش هندسی از محاسبات سایهزنی معرفی کرد:
- مرحله ردیابی پرتو - اطلاعات ضربه اشعه در سطح پیکسل در زمان واقعی از طریق پرس و جو پرتو گرفته می شود. شناسه فضایی سه بعدی (
InstanceID
باPrimitiveIndex
) نقطه تقاطع در یک شناسه دید فشرده کدگذاری شده و در بافر فضای صفحه نمایش نوشته می شود. - مرحله رنگآمیزی - مشابه عملیات انجامشده توسط سایهزنهای راس و پیکسل، شناسههای هندسی در بافر دید بهصورت پویا تجزیه میشوند، ویژگیهای راس (مانند UV و نرمال) و نقشههای مواد مبتنی بر فیزیکی مدل اصلی واکشی میشوند، و محاسبات سایهزنی مرتبط با نوع ماده در نهایت انجام میشوند.
این راه حل به دارایی های هنری اجازه می دهد تا بدون نیاز به تغییر فرمت های رأس یا سایه زن ها به سیستم بازتابی ردیابی پرتو متصل شوند.
مراحل رندر خاص
پاس پرس و جوی ری
مربوط به مرحله ردیابی پرتو است و یک بافر دید برای بازتاب فضای صفحه ایجاد می کند:
- رنگ 0
- فرمت: R32G32UIint
- R = TriangleID، G = Barycentrics

- عمق:
- فرمت: Depth32F
- D = EncodeAsFloat (InstanceIdx، GeometryIdx)
- شناسه ماده تقاطع در ممیز شناور 32 بیتی کدگذاری شده و در بافر عمق برای مرحله بعدی تکنیک تشخیص عمق-کدگذاری-مطابقت مواد نوشته می شود.

در مقایسه با شیدر محاسباتی، پرس و جوی پرتو در سایه زن پیکسل دارای مزایای زیر است:
- ادغام خط لوله - خط لوله مستقیماً در خطوط لوله رندر جلو/تعویض شده موجود تعبیه شده است و تداوم وضعیت خط لوله را حفظ می کند.
- بهینهسازی پهنای باند موبایل - برای معماری مبتنی بر کاشی موبایل، فشردهسازی بدون تلفات روی تراشه زمانی که دادههای ضربه پرتو در
RenderTarget
نوشته میشوند، فعال میشود و مصرف پهنای باند حافظه را در مقایسه با خروجی شیدر محاسباتی سنتی به بافر کاهش میدهد. - کنترل کمیت پرتو - نواحی غیر بازتابنده را می توان با استفاده از مرحله پیش محاسبه در ترکیب با آزمایش شابلون علامت گذاری و رد کرد.
حل و فصل پاس
در مرحله رنگآمیزی (به بازتابهای ردیابی پرتو رجوع کنید)، تیم Diablo Immortal با استفاده از واحد سختافزار آزمایش عمق و انجام رنگآمیزی مواد در دستههای متوالی، به تطابق سریع شناسایی دست یافتند.
برای هر ماده، مجوز قرعه کشی تمام صفحه صادر می شود. سایه زن رأس به صورت پویا شناسه کدگذاری شده ماده فعلی را بازسازی می کند. با استفاده از Depth Equal Test، شناسه با مقادیر کدگذاری شده در بافر عمق مقایسه میشود و تنها پیکسلهایی که مقادیر کدگذاری شدهشان دقیقاً مطابقت دارند، حفظ میشوند، یعنی آن پیکسلهایی که متعلق به نمونه ماده فعلی هستند. پیکسل های حفظ شده، سایه زن مربوطه را اجرا می کنند.
در مرحله بعد، بازتولید مواد با دقت بالا در سایه زن پیکسل اجرا می شود:
- رمزگشایی دادههای هندسی - شناسه مثلث (
MeshID
+PrimitiveID
) و مختصات باریسنتریک را از بافر دید استخراج میکند و به صورت پویا ویژگیهای راس (موقعیت، UV، عادی، و غیره) مثلث مربوطه را از بافر راس بارگذاری میکند. از آنجایی که هر مدل به عنوان یک ماده مستقل سایه دار است، ویژگی های پیشرفته مانند صحافی لازم نیست. - بازسازی پارامتر سطح - مختصات UV را در تقاطع با استفاده از درونیابی مختصات باری مرکزی محاسبه می کند. شطرنجی سازی نرم افزار برای نمونه برداری از نقشه بر اساس UVهای درونیابی انجام می شود.
- استفاده مجدد از محاسبه سایه - به طور مستقیم از کد سایه زن موجود برای حفظ منطق متریال مشابه خط لوله رندر اصلی مجددا استفاده می کند.

در نهایت، مدلهایی که واقعاً در محاسبه بازتاب شرکت میکنند، تنها بخش بسیار کمی از صحنه را تشکیل میدهند. دادههای شناسایی مدل بازتابی که توسط GPU برگردانده میشود را میتوان بهطور ناهمزمان خواند تا مدلها/موادی که در بازتاب شرکت نمیکنند حذف شوند، و به طور موثر تعداد فراخوانهای قرعهکشی کاهش مییابد (زمانی که مواد و مش برای ترسیم به GPU ارسال میشوند، فراخوانی قرعهکشی اتفاق میافتد) در مرحله سایهزنی.
بازتاب عینی مبتنی بر فیزیکی
برای دستیابی به انعکاس های با کیفیت بالا، سطوح بازتابنده بر اساس زبری به عنوان یکی از سه نوع طبقه بندی می شوند:
- بدون انعکاس - محاسبات انعکاس برای این سطوح را می توان برای صرفه جویی در منابع نادیده گرفت. اگر سطح بسیار ناهموار باشد، انعکاس تار و کم رنگ می شود، بنابراین سهم آن مشخص نیست.
- بازتاب آینه - مانند یک آینه صاف، تصویر منعکس شده واضح است و تار نیست. از خط دید مستقیماً در جهت انعکاس عکس بگیرید.
- انعکاس براق - انعکاس با زبری خاصی از سطح بر اساس نمونه برداری اهمیت GGX شبیه سازی شده است که می تواند کارایی محاسباتی و دقت فیزیکی را در نظر بگیرد. انعکاس در هنگام انتشار خط به جهت اصلی انعکاس چشمی منحرف می شود که کارایی نمونه برداری از ناحیه برجسته را بهبود می بخشد.
برای دستیابی به کیفیت تصویر قابل استفاده با مصرف انرژی محدود، تیم Diablo Immortal یک راه حل 1SPP+Denoiser را اتخاذ کرد. به این معنا که تیم Diablo Immortal یک نمونه در هر پیکسل، l انتخاب کردند و سپس از یک الگوریتم کاهش نویز زمانی/مکانی برای هموارسازی مقدار زیاد نویز وارد شده توسط نرخ نمونهبرداری پایین استفاده میشود.
تیم Diablo Immortal Reflection Denoiser را در AMD FidelityFX Denoiser انتخاب کرد، یک حذفکننده با کارایی بالا که برای بازتابهای ردیابی پرتو و بازتابهای فضای صفحه بهینه شده است. مزیت اصلی Reflection Denoiser، الگوریتم کاهش نویز هیبریدی مکانی-زمانی است: با ادغام قاب فعلی و دادههای قاب تاریخی (بر اساس جبران حرکت)، همراه با تکنیکهای فیلتر فضایی (مانند فیلتر حفظ لبه با هدایت واریانس)، Reflection denoiser اثرات بازتابی بسیار کارآمد را حذف میکند.
تیم Diablo Immortal برای انطباق با ویژگیهای خطوط لوله رندر خود توسعهیافته و برآورده کردن محدودیتهای عملکرد سختگیرانه موبایل، سادهسازی هدفمند و سازگاری معماری را هنگام ادغام AMD FidelityFX Reflection Denoiser پیادهسازی کرده است.
ردیابی پرتو با وفاداری بالا با Vulkan
Diablo Immortal بر روی طیف وسیعی از دستگاههای اندرویدی مجهز به Vulkan اجرا میشود که در آن تیم Diablo Immortal از قابلیتهای رهگیری پرتوهای سختافزاری خلاقانه GPU استفاده میکند. Vulkan سربار و اصطکاک توسعه را کاهش داد، و ارائه محتوای با کیفیت Diablo Immortal و گیم پلی به کاربران اندروید را تسهیل کرد.