Nvidia kończy wielki problem grania na PC. Każdy gracz poczuje ulgę

konto.spidersweb.pl 2 godzin temu

Nvidia wreszcie bierze się za kompilujące się podczas grania shadery. Jest nowy pomysł na jedną z najbardziej irytujących bolączek PC‑gamingu.

Jeśli grasz na PC od dłuższego czasu to znasz ten moment aż za dobrze. Odpalasz świeżo zainstalowaną grę, wszystko wygląda pięknie, po czym… ekran ładowania to przesuwający się tempem śpiącej dżdżownicy pełzającej pod górę pasek postępu z podpisem „Compiling shaders”. Albo jeszcze lepiej: gra niby już działa, ale co kilka kroków ma mikroprzycięcia, bo w tle kompilują się kolejne shadery.

To nie tak iż twój PC jest za słaby. To raczej konsekwencja tego jak współczesne silniki i API graficzne obchodzą się z kodem shaderów. I właśnie w ten punkt próbuje teraz uderzyć Nvidia, dorzucając do swojej aplikacji GeForce nową funkcję: Auto Shader Compilation. To pierwszy sensowny krok w stronę ograniczenia problemu, który od lat psuje wrażenia z grania choćby na bardzo mocnych maszynach.

Przyjrzyjmy się więc co dokładnie Nvidia proponuje, jak to działa, jakie są ograniczenia i jak wpisuje się to w szerszy wyścig z Microsoftem i Intelem o to, kto pierwszy naprawdę ogarnie temat shaderów na PC.

Skąd w ogóle bierze się „compiling shaders”?

Shadery to małe programy, które definiują jak mają być liczone piksele, geometria, efekty postprocessingu i cała reszta graficznej magii. Deweloperzy piszą je w językach wysokiego poziomu, względnie przyjaznych człowiekowi. GPU takiego kodu nie rozumie, więc trzeba go przetłumaczyć na maszynowy, zoptymalizowany pod konkretny sterownik i konkretną kartę. To właśnie kompilacja shaderów.

W idealnym świecie (na przykład na konsolach Xbox, PlayStation i Switch) wszystko odbywałoby się raz, z wyprzedzeniem, a gracz nigdy by tego nie widział. W świecie PC jest inaczej. Nowe API (głównie DirectX 12 i Vulkan), ogromna liczba kombinacji sprzętowo‑sterownikowych, częste aktualizacje gier i sterowników – to wszystko sprawia, iż shadery trzeba kompilować wielokrotnie: przy pierwszym uruchomieniu gry, po patchu, po nowym sterowniku, czasem choćby po zmianie ustawień.

Jeżeli gra robi to „z głową” to kompilacja odbywa się przed wejściem do rozgrywki, w jednym większym procesie. Wtedy widzisz pasek postępu i czekasz. o ile robi to „po cichu” to shadery kompilują się w tle, gdy docierasz do nowych lokacji, efektów, przeciwników. Efekt: mikroprzycięcia, spadki płynności, wrażenie, iż coś jest „nie tak”, mimo iż licznik FPS wygląda przyzwoicie.

W grach z rozbudowanym ray tracingiem, z tysiącami wariantów shaderów, mówimy o dziesiątkach tysięcy kompilacji. Każda z nich to praca dla CPU, dostęp do dysku, synchronizacja z GPU. I to wszystko w momencie, gdy ty chcesz po prostu grać.

Auto Shader Compilation – co adekwatnie proponuje Nvidia?

Nowa funkcja, która trafiła do beta‑wersji aplikacji Nvidia (tej, która zastępuje klasyczne GeForce Experience i część panelu sterowania) nazywa się Auto Shader Compilation (ASC). W skrócie: zamiast czekać, aż gra przy następnym uruchomieniu zacznie kompilować shadery po aktualizacji sterownika Nvidia chce zrobić to wcześniej – gdy komputer i tak się nudzi.

Nvidia Auto Shader Compilation

Mechanizm działa na razie dla gier korzystających z DirectX 12 i wymaga sterownika GeForce Game Ready w wersji co najmniej 595.97 WHQL. Domyślnie jest wyłączony. Trzeba wejść w aplikacji w zakładkę Graphics, potem w Global Settings i sekcję Shader Cache. Tam można włączyć Auto Shader Compilation, przydzielić miejsce na dysku na prekompilowane shadery i ustawić, jak dużo zasobów systemowych może zjadać proces kompilacji.

Gdy funkcja jest aktywna aplikacja monitoruje stan systemu. jeżeli wykryje, iż komputer jest bezczynny – nie grasz, nie renderujesz, nie robisz niczego ciężkiego – zaczyna w tle przebudowywać shadery DirectX 12 dla zainstalowanych gier, które tego wymagają po aktualizacji sterownika. Można też wymusić kompilację manualnie, wybierając opcję „Compile now” w tym samym panelu.

Kluczowy szczegół: Auto Shader Compilation nie zastępuje pierwszej, „dziewiczej” kompilacji shaderów po instalacji gry. Za pierwszym razem przez cały czas musisz przejść przez proces generowania shaderów w samej grze. ASC wchodzi do gry dopiero później – po kolejnych aktualizacjach sterownika, które normalnie wymusiłyby ponowną kompilację przy następnym uruchomieniu tytułu.

To nie jest ruch w próżni. Microsoft i Intel też kombinują

Microsoft pracuje nad Advanced Shader Delivery. To system, który pozwala deweloperom przygotować bazy prekompilowanych shaderów dopasowanych do konkretnych konfiguracji sprzętowych. Zamiast kompilować wszystko lokalnie przy pierwszym uruchomieniu gra mogłaby pobrać z serwera paczkę shaderów już przetłumaczonych pod twój GPU i sterownik. Nvidia oficjalnie mówi, iż „ściśle współpracuje z Microsoftem”, by dodać wsparcie dla Advanced Shader Delivery do kart GeForce RTX jeszcze w tym roku.

Intel z kolei rozwija własny system Precompiled Shader Delivery i również zapowiada integrację z rozwiązaniem Microsoftu. Widać więc wyraźnie, iż branża próbuje przenieść ciężar z lokalnej kompilacji „na żywo” na bardziej inteligentne, rozproszone podejście: część pracy robi deweloper, część serwer, część sterownik, a gracz ma widzieć jak najmniej.

Czy to wystarczy, by przestać narzekać na shadery? Nie. Ale może wystarczy, by narzekać trochę rzadziej.

Realne rozwiązanie problemu shaderów na PC będzie wymagało współpracy na kilku poziomach: API (Microsoft), sterowników (Nvidia, AMD, Intel, Qualcomm), silników (Unreal, Unity, autorskie rozwiązania) i samych deweloperów. Advanced Shader Delivery, prekompilowane paczki shaderów, lepsze cache’owanie, sensowniejsze strategie kompilacji – to wszystko musi się zgrać. Może kiedyś się doczekamy.

BuyboxFast
Idź do oryginalnego materiału