Unreal Engine 5.8 introduce o remediere pentru una dintre cele mai persistente supărări ale jocurilor pentru PC: bâlbâiala compilației shader. Epic Games a integrat DirectX Advanced Shader Delivery (ASD) de la Microsoft în motor, mutând sarcina de a compila shadere de pe propriul hardware al jucătorului și pe cloud înainte ca jocul să ajungă chiar pe discul lor.
Recomandări cheie
- ✓Unreal Engine 5.8 adoptă sistemul Microsoft DirectX Advanced Shader Delivery (ASD).
- ✓Compilarea Shader se trece de la dispozitivul jucătorului în cloud înainte de lansare
- ✓Shaderele sunt împachetate într-o bază de date State Object și convertite într-o bază de date Shader precompilată
- ✓Umbritoarele pre-compilate pot fi livrate împreună cu jocul pentru încărcare gata de utilizare la prima rulare
- ✓Dezvoltatorii trebuie să susțină în mod activ ASD pentru ca jucătorii să vadă bâlbâiala redusă
Pentru oricine care a trecut printr-o lansare nou-nouță doar pentru a vedea ca ratele cadrelor se umfla de fiecare dată când un nou efect sau un inamic nou apare pe ecran, aceasta este o schimbare semnificativă. Shader stutter apare atunci când un joc trebuie să compileze instrucțiuni grafice din mers, la mijlocul sesiunii, deoarece shaderul potrivit nu a fost pregătit în avans. Este una dintre cele mai frecvente plângeri adresate versiunilor moderne de PC, iar Unreal Engine, în ciuda faptului că alimentează unele dintre cele mai mari titluri din industrie, nu a fost imun.
Cum Unreal Engine 5.8 modifică gestionarea shaderului
În loc să lase CPU-ul și GPU-ul unui jucător pentru a compila shaders în timpul jocului, ASD transferă această sarcină de lucru la o conductă de compilare bazată pe cloud înainte de lansare. Epic Games împachetează datele shader ale unui titlu în ceea ce el numește o bază de date State Object sau SODB. Acea bază de date este apoi rulată prin compilarea în cloud pentru a produce o bază de date Shader precompilată sau PSDB.
PSDB-ul poate fi livrat împreună cu jocul în sine, ceea ce înseamnă că o copie a shader-urilor gata de utilizare se află deja pe dispozitivul jucătorului la prima lansare. În loc să compilați shadere în timp real, motorul le apelează pur și simplu pe cele pre-construite de care are nevoie. Această diferență, compilarea o dată în cloud față de compilarea în mod repetat pe milioane de computere individuale, este nucleul a ceea ce încearcă să rezolve Advanced Shader Delivery.
| Pas | Ce se întâmplă |
|---|---|
| Captură de date Shader | Instrucțiunile de shader ale jocului sunt ambalate într-o bază de date de obiecte de stat (SODB) |
| Compilare cloud | SODB procesat în afara dispozitivului într-o bază de date precompilată Shader (PSDB) |
| Distributie | PSDB a fost livrat cu fișierele jocului pe dispozitivul jucătorului |
| Prima alergare | Engine găsește shadere gata de utilizat în loc să compilați local |
De ce bâlbâiala cu shader a fost o problemă atât de încăpățânată
Ramura 5.x a lui Unreal Engine este deja unul dintre cele mai solicitante motoare disponibile, sprijinindu-se puternic pe plăci grafice puternice pentru a oferi iluminarea, detaliile geometriei și efectele pentru care este cunoscut. Chiar și un GPU de ultimă generație se poate bâlbâi prost dacă shaders-urile nu sunt compilate și stocate în cache corect înainte de timp, deoarece hardware-ul este brusc forțat să facă o muncă suplimentară la mijlocul cadrului, mai degrabă decât să redea pur și simplu ceea ce știe deja să deseneze.
Acest lucru a făcut ca compilația de shader să se bâlbâie într-un punct de discuție recurent în jurul versiunilor majore ale Unreal Engine în ultimii câțiva ani, indiferent de cât de capabil este hardware-ul de bază. Încercările anterioare de atenuare, inclusiv pre-caching shadere în timpul ecranelor de încărcare sau primele minute de joc, au ajutat în unele titluri, dar nu au rezolvat niciodată problema definitiv. ASD o abordează diferit, eliminând o mare parte din sarcina de compilare de pe computerul jucătorului, mai degrabă decât doar reprogramând atunci când această sarcină este plătită.
Jocuri construite pe Unreal Engine 5, inclusiv proiecte de mare profil precum RuneScape 4, pe care Jagex îl reconstruiește în Unreal Engine și decizia CD Projekt Red de a construi Witcher 4 pe Unreal Engine 5, sunt exact genul de versiuni mari, ambițioase din punct de vedere vizual, în care bâlbâiala a fost cel mai vizibilă din punct de vedere istoric. O remediere care o reduce cu adevărat are implicații mult dincolo de orice titlu.

Ce înseamnă pentru dezvoltatori și jucători
Problema este că Advanced Shader Delivery nu este automată pentru fiecare proiect Unreal Engine 5.8. Dezvoltatorii trebuie să aleagă să-l susțină, să-și construiască conductele de shader în jurul fluxului de lucru SODB și PSDB și să livreze baza de date precompilată împreună cu jocul lor. Studiourile care sar peste acest pas nu vor vedea nicio schimbare, iar jucătorii vor întâmpina în continuare aceleași probleme de compilare ca înainte.
Pentru studiourile care îl adoptă, partea pozitivă se extinde dincolo de un ritm mai fin al cadrului. Deoarece compilarea are loc în cloud, mai degrabă decât pe dispozitiv, la lansare sunt cheltuite mai puțin timp și putere CPU, ceea ce ar trebui să se traducă în timpi de încărcare mai rapidi, precum și în mai puține cadre pierdute odată ce începe jocul. Acesta este un câștig de eficiență util pentru orice, de la platforme de gaming de ultimă generație până la laptopuri cu putere redusă care rulează același titlu.
Predicțiile șefului epic Tim Sweeney pentru dezvoltarea jocurilor bazate pe inteligență artificială indică un studio care încearcă în mod activ să eficientizeze conductele de producție, iar Advanced Shader Delivery se potrivește cu modelul mai larg de reducere a frecvenței dintre dezvoltare și experiența reală a jucătorului. Dacă ASD devine o caracteristică standard în titlurile Unreal Engine 5, va depinde în mare măsură de cât de repede vor ajunge middleware-ul și instrumentele de studio pentru a-l susține și de cât de multă greutate de marketing pune Epic în spatele încurajării adoptării.
Întrebări frecvente
Ce este Advanced Shader Delivery în Unreal Engine 5.8?
Advanced Shader Delivery, sau ASD, este o caracteristică Microsoft DirectX pe care Unreal Engine 5.8 o acceptă acum. Mută compilația de shader departe de computerul jucătorului și în cloud, trimițând în schimb o bază de date de shader precompilată împreună cu jocul.
Unreal Engine 5.8 va repara bâlbâiala în fiecare joc?
Doar în jocurile în care dezvoltatorii aleg să implementeze ASD. Unreal Engine 5.8 face funcția disponibilă, dar studiourile trebuie încă să-și construiască conducta de shader în jurul acesteia și să trimită baza de date precompilată pentru ca jucătorii să beneficieze.
Advanced Shader Delivery necesită o placă grafică puternică?
Unreal Engine 5 necesită deja hardware puternic pentru caracteristicile sale vizuale, dar ASD în sine este proiectat să reducă încărcarea de compilare locală, mai degrabă decât să o adauge, așa că ar trebui să ușureze presiunea asupra procesoarelor și GPU-urilor, mai degrabă decât să crească cerințele hardware.
Prin ce diferă acest lucru de metodele anterioare de pre-caching pentru shader?
Remedieri anterioare, de obicei, nuanțe compilate în timpul ecranelor de încărcare sau jocului timpuriu pe propriul dispozitiv al jucătorului. În schimb, ASD compilează shadere în cloud înainte de lansare și livrează baza de date finalizată împreună cu jocul, evitând aproape în întregime compilarea pe dispozitiv.
