Com2uS از Vulkan برای گرافیک بهتر استفاده می کند

اسکرین شات لوگوی عنوان بازی از Com2uS Chronicles.

Summoners War: Chronicles US (WW) and KR by Com2uS به طور انحصاری از Vulkan برای رندر کردن در اندروید استفاده می‌کند و تا 30 درصد بهبود عملکرد دارد.

Vulkan یک API گرافیکی سه بعدی مدرن و چند پلتفرمی است که برای به حداقل رساندن انتزاع بین سخت افزار گرافیک دستگاه و بازی شما طراحی شده است. Vulkan در مقایسه با OpenGL ES سربار CPU کمتری دارد و Vulkan طیف وسیع تری از ویژگی ها را ارائه می دهد.

شکل 1. در اسکرین شات بازی.
شکل 2. در ویدیوی بازی.

ویژگی های رندر

Com2uS ویژگی های رندر پیشرفته ای را برای Summoners War: Chronicles توسعه داده است از جمله:

  • سیستم رندر تاخیری سفارشی با حذف نور پیش از رندر و تا شانزده نور فعال در نمای فرستوم به طور همزمان
  • روش نمونه‌سازی رندر غیرمستقیم (به نام Clay ) برای ترسیم مش‌ها، متریال‌ها و بافت‌ها به طور همزمان.
  • استفاده گسترده از شیدرهای محاسباتی برای کارهای پیش رندر
  • امکان تنظیم پویا رندر سایه فعال و افکت های پس از پردازش بر اساس حرکت دوربین، گزینه های گرافیکی و عملکرد زمان اجرا

امکانات سخت افزاری سیار

Summoners War: Chronicles از رندر مشابهی برای دستگاه‌های اندروید، رایانه‌های شخصی و کنسول‌های بازی اختصاصی استفاده می‌کند. برای دستیابی به عملکرد بهینه در سخت افزار موبایل، Com2uS تنظیمات رندر از جمله عمق و چگالی ترسیم را تنظیم کرد. برای قرار دادن دستگاه‌های خاصی که روی Android 11 (سطح API 30) و پایین‌تر کار می‌کنند، Com2uS نسخه‌های جایگزینی از برخی سایه‌بان‌ها ایجاد کرد و از تعداد نمونه‌های کاهش‌یافته استفاده کرد. Summoners War: Chronicles همچنین از ویژگی‌های عملکرد تطبیقی ​​در Android برای تنظیم پویا گزینه‌های گرافیکی در پاسخ به شرایط حرارتی دستگاه استفاده می‌کند.

منطق فقط ولکان

Com2uS به چند دلیل از Vulkan به طور انحصاری برای Summoners War: Chronicles استفاده کرد:

  • حداقل مورد نیاز دستگاه، دستگاه‌های قدیمی‌تر و کم‌قدرت‌تر را که فاقد پشتیبانی Vulkan هستند، حذف می‌کند
  • سفارشی سازی موتور Unity Built-in Render Pipeline (BiRP) ویژگی های مورد نیاز را فقط در باطن بازی Vulkan موجود است
  • پیاده‌سازی ویژگی‌های رندر با استفاده از خروجی شیدر محاسباتی و اشیاء بافر ذخیره‌سازی سایه‌زن (SSBO) را می‌توان در Vulkan انجام داد، اما نه OpenGL ES

محاسبه حجم کار

Summoners War: Chronicles کار سایه زن محاسباتی قابل توجهی را برای تولید داده برای رندر انجام می دهد. شیدرهای محاسباتی برای موارد زیر استفاده می شوند:

  • حذف اشیا
  • بازرسی برخورد
  • وظایف انیمیشن
  • تولید داده های رندر غیر مستقیم

داده های محاسباتی به دست آمده در اشیاء RWBuffer موتور Unity نوشته می شود. برای دستیابی به عملکرد مطلوب، Summoners War: Chronicles تمام کارهای محاسباتی خود را با یک ارسال واحد اجرا می کند، که نیاز به استفاده از چندین RWBuffer به طور همزمان دارد. این رویکرد فقط با استفاده از Vulkan امکان پذیر بود، زیرا باطن Unity BiRP OpenGL ES تنها از استفاده از یک RWBuffer در هر زمان پشتیبانی می کند.

مجموعه داده های تولید شده برای رندر اغلب بزرگتر از محدودیت اندازه دستگاه برای اشیاء بافر یکنواخت (UBOs) است. Summoners War: Chronicles در عوض از اشیاء بافر ذخیره سازی Shader (SSBOs) استفاده می کند که محدودیت ظرفیت بیشتری دارند. با این حال، اتصال SSBO به عملیات مرحله راس نیاز به پشتیبانی SSBO فقط خواندنی دارد. OpenGL ES فقط از خواندن-نوشتن SSBO پشتیبانی می کند در حالی که Vulkan می تواند SSBO ها را به عنوان فقط خواندنی علامت گذاری کند.

رندر غیر مستقیم نمونه با Clay

برای Summoners War: Chronicles ، Com2uS روشی را برای دسته‌بندی چندین متریال، مش و بافت در یک فراخوانی توسعه داد. Com2uS به این سیستم به عنوان Clay اشاره می کند. Clay عملکرد بازی را تا 30% بهبود می بخشد و نتیجه آن کاهش قابل توجه تماس های قرعه کشی است.

خاک رس در طول مرحله حذف و برخورد با ساخت لیستی از اشیاء قابل مشاهده قابل مشاهده سازگار آغاز می شود. سپس Clay اطلاعات رندر برای هر شی شناسایی شده را در SSBO تولید می کند. این فرآیند با شیدرهای محاسباتی انجام می شود که استفاده از رندر نمونه غیرمستقیم را با استفاده از تابع Unity رندر DrawMeshInstancedIndirect امکان پذیر می کند. با رندر غیرمستقیم، اطلاعات نمونه و پارامترهای تعداد نمونه مستقیماً روی GPU تولید می‌شوند. هنگام کشیدن اشیا، به جای اتصال یک مش شیء سنتی، Clay یک مش مخروطی را مطابق تصویر می‌بندد:

شکل 3. مش مخروطی.

سپس Clay مش مخروط را در سایه‌زن راس با استفاده از یک SSBO محدود از داده‌های تبدیل راس تولید شده توسط سایه‌زن‌های محاسباتی تبدیل می‌کند. اتصال SSBO به مرحله راس نیاز به استفاده از Vulkan دارد. خاک رس می تواند از چندین مخروط تبدیل شده برای رندر کردن یک شی استفاده کند. پیچیدگی جسم تعیین کننده تعداد مخروط ها است.

شکل 4. چگونه مش مخروط به درخت تبدیل می شود.

داده‌های مادی برای اشیا در بافر دیگری که توسط شیدرهای محاسباتی تولید می‌شود، دسته‌بندی می‌شوند. بافر به قطعه سایه زن متصل است. بافت‌ها برای اشیایی که ترسیم می‌شوند در یک آرایه بافت پیکربندی می‌شوند. شاخص های آرایه برای بافت های یک شی در داده های مادی شی گنجانده شده است. در شرایط ایده‌آل، Clay می‌تواند با حداکثر هفت فراخوانی رندر انجام دهد:

  • اشیاء ساکن
  • اشیاء متحرک
  • سایه ها (چهار تکرار)
  • بازتاب ها

یونیتی به اضافه ولکان

Summoners War: Chronicles نشان می‌دهد که ترکیب قدرتمند موتور بازی Unity و API گرافیکی Vulkan به توسعه‌دهندگان این امکان را می‌دهد تا گرافیک‌های با کیفیت کنسول پیشرفته را به دستگاه‌های اندرویدی بیاورند.