ІГРИ

Як Unreal Engine 5 вирішує найбільшу проблему в комп’ютерних іграх

Поширити:

Під час свого виступу State of Unreal на GDC 2023 Epic анонсувала широкий набір функцій для Unreal Engine 5.2. Але, мабуть, найважливіша особливість оновленого рушія не пов’язана з освітленням, деталізацією геометрії чи трасуванням променів. Вона стосується продуктивності.

Ігри на рушію Unreal Engine, справедливо чи ні, протягом останніх кількох років асоціюються із заїканнями та затримками. З новим релізом Epic нарешті взялася за вирішення цієї проблеми, тож я подумав, що настав час розібратися, чому в іграх на Unreal так часто трапляються заїкання, що робить Epic для вирішення цієї проблеми і коли ми можемо очікувати на появу цих зусиль у нових релізах.

За останні кілька років Unreal Engine став синонімом заїкання. Ми бачили це знову і знову, від “Зоряних воєн: Джедаї: Падіння Ордену і Stray до Gotham Knights, і всі вони мають одну спільну проблему. Це заїкання при компіляції.

Зазвичай ви чули про заїкання під час компіляції шейдерів, але нещодавні джерела заїкань не пов’язані з окремими шейдерами. В останніх графічних API, таких як Vulkan та DirectX 12, пакети, відомі як об’єкти стану конвеєра (Pipeline State Objects, PSO), використовуються для інформування гри про стан вашого графічного процесора. PSO призначені для підвищення ефективності рендерингу, дозволяючи десяткам параметрів, включно з шейдерами, взаємодіяти між API та GPU в одному пакеті.

Однак вони створюють іншу проблему. Оскільки PSO містять дуже багато інформації, генерація нового PSO на льоту займає багато часу (згідно з документацією Unreal, 100 або більше мілісекунд). Це створення PSO під час виконання є джерелом заїкання, коли рушій повинен генерувати новий PSO під час гри.

Читайте також:  Тепер офіційно: реліз Marvel's Spider-Man 2 відбудеться восени 2023 на PlayStation 5

Для боротьби з цим в Unreal Engine передбачено кешування PSO. Це створює кеш можливих PSO, тому нові не потрібно генерувати під час гри, але вони не ідеальні. Як пояснює Epic, попереднє кешування PSO може “бути обтяжливим для великих проектів, і все одно залишати прогалини в кеші, що призводить до затримок”. Ось чому, навіть в іграх, які попередньо компілюють шейдери на GPU, ви все одно іноді будете бачити заїкання (навіть якщо їх небагато і вони трапляються дуже рідко).

Epic намагається автоматизувати цей процес, збираючи PSO, а не залишаючи розробникам враховувати кожен можливий параметр GPU. Це є на публічній дорожній карті Epic, але наразі доступна лише експериментальна версія. У Unreal Engine 5.2 метою є покращення кешування PSO для подальшого зменшення затримок.

В Unreal Engine 5 є багато чого цікавого (про деякі з них я розповім далі), але ми ще не маємо чіткого уявлення про те, як він працює. Поки що він використовувався лише в технічних демо-версіях та Fortnite серед великих релізів. Навіть такі ігри, як Redfall, які обіцяли використовувати Unreal Engine 5, повернулися до Unreal Engine 4.

Щоб бути зрозумілим, інструменти, доступні в Unreal Engine 4, дозволяють розробникам оптимізувати свої ігри, щоб уникнути заїкання. Atomic Heart – один з багатьох прикладів цього. Але складний стан PSO залишив двері відкритими для затримок під час гри, а автоматизований збір PSO від Epic був представлений лише в Unreal Engine 5.1.

Хоча я радий бачити, що Epic вирішує цю проблему безпосередньо, ми ще не бачили автоматичного кешу PSO в процесі роботи. Зі збільшенням кількості складних та різноманітних релізів, які випускаються невеликими командами, попит на генерацію PSO зростає, а ймовірність затримок та заїкань стає все більшою.

Читайте також:  Remedy Entertainment ділиться новими подробицями про багатокористувацьку онлайн-гру Condor

Це особливо стосується ігор, які використовують трасування променів, оскільки Unreal Engine 5 не підтримує кешування PSO для PSO з трасуванням променів. Як пояснює Nvidia, можна розподілити роботу над створенням PSO з трасуванням променів на декілька потоків, але це не обов’язково означає, що розробники будуть використовувати цей процес.

Нам ще належить побачити автоматизований збір PSO в Unreal Engine 5, але насправді в рушії є чимало цікавих речей, якими можна порадіти. Перш за все, Lumen. Освітлення надзвичайно важливе для графічної достовірності, а дорогі технології, такі як освітлення з відстеженням шляху, продемонстровані в Portal RTX, є важкими для апаратного забезпечення. Lumen усуває цю різницю.

Lumen використовує трасування променів, але це високооптимізована форма трасування променів. Замість копіткого розрахунку нескінченних відскоків на деталізованих об’єктах, Lumen використовує абстракції для розрахунку освітлення для більшої частини сцени, за замовчуванням використовуючи лише деталізоване освітлення, найближче до камери. Ця оптимізація дозволяє Lumen працювати з програмною трасуванням променів, не потребуючи спеціальних прискорювачів трасування променів на вашій відеокарті.

Результати вже очевидні. Fortnite працює на консолях з Lumen зі швидкістю 60 кадрів в секунду (fps), а на ПК вона виглядає приголомшливо, навіть у мультяшному світі Fortnite.

Nanite працює в тандемі з Lumen. Це віртуалізована геометрична система, яка містить високодеталізовані, сильно стиснуті сіті, що можуть змінюватися під час ігрового процесу. По суті, це складний рівень деталізації (LOD) для сіток, який автоматично перемикається між деталізованими та розмитими сітками залежно від того, куди дивиться камера.

Читайте також:  Нове зображення Elden Ring змусить фанатів FromSoftware зануритися в мріяння

Що ще важливіше, Nanite працює на власному проході рендерингу, тому він не задіяний у традиційному конвеєрі графічного процесора. Це означає, що ваш ігровий процес залишається плавним, навіть коли Nanite змінює складність сіті. Між Nanite та Lumen ви маєте дві візуально вражаючі, обчислювально ефективні функції, які піднімають планку графічної точності.

Epic розповіла більше під час свого виступу на конференції State of Unreal. Substrate – це нова система матеріалів у Unreal 5.2, яка включає більш детальний контроль шейдерів. Epic продемонстрували це на прикладі матеріалу поверхні опалу, демонструючи кілька шарів і точне заломлення світла між ними.

Новий процедурний фреймворк генерації контенту (Procedural Content Generation Framework, PCG) також є цікавим, навіть якщо він не має прямого відношення до візуальної точності. З обмеженими вхідними даними PCG може генерувати нові об’єкти, що дозволяє розробникам швидко створювати світи з високим рівнем деталізації. Це дуже цікаво для більш об’ємних світів, які не потребують дотику художника на кожному кроці.

Існує багато інших можливостей, від вдосконалення MetaHuman до повного відстеження шляхів в Unreal Engine. Це захоплююче, але проблеми із заїканням, які зазвичай асоціюються з релізами на Unreal Engine, залишаються. Сподіваємося, що прогрес Epic у кешуванні PSO допоможе обійти цю проблему, але у нас ще не так багато ігор на Unreal Engine 5, щоб побачити, як працює ця система.

+1
0
+1
0
+1
0
+1
0
+1
0
+1
0