Co to jest kompilacja shaderów i dlaczego spowalnia gry komputerowe?

Co to jest kompilacja shaderów i dlaczego spowalnia gry komputerowe?

W niektórych grach występuje rodzaj zacinania się, które występuje niezależnie od mocy komputera i wybranych ustawień. Jest to spowodowane procesem znanym jako „kompilacja shaderów” i staje się coraz większym problemem w grach komputerowych.

Co to są shadery?

Shadery to programy komputerowe, które pomagają zdefiniować różne aspekty renderowanej grafiki. Pixel shadery, na przykład, obliczają atrybuty piksela. Obejmuje to kolor, jasność, współczynnik odbicia lub przezroczystość tego piksela. Jeśli chcesz, aby coś w twojej grze wyglądało mokro, użyj do tego niestandardowego modułu cieniującego, zamiast skrupulatnie robić to ręcznie.

Shadery są tym, co sprawia, że ​​nowoczesne GPU są tak elastyczne, ponieważ te GPU są zaprojektowane do robienia wszystkiego, co można wyrazić w języku programowania shaderów . Zastępują starą technologię GPU „potoku o stałej funkcji”, w której typy obliczeń graficznych, które mógł wykonać GPU, były wbudowane w jego układ scalony.

Co to jest kompilacja shaderów?

„Kompilacja” to termin komputerowy oznaczający pobranie kodu napisanego przez programistę i przekształcenie go w kod maszynowy zrozumiały dla konkretnego procesora zaprojektowanego do uruchamiania danego oprogramowania. Na przykład możesz skompilować swój kod, aby działał na procesorze Intel lub Apple Silicon.

To samo jest potrzebne do GPU. Kod modułu cieniującego musi zostać skompilowany, aby działał z daną marką i modelem GPU. Jeśli zmienisz GPU, zaktualizujesz jego sterowniki lub gra otrzyma aktualizację, shadery muszą zostać ponownie skompilowane.

Dlaczego kompilacja shaderów zawiesza się w niektórych grach komputerowych?

W niektórych grach kompilowanie shaderów w tle zakłóca samą grę, powodując widoczne zawieszanie się. Komputer zbyt mocno kompiluje shadery, aby gra działała płynnie. Niektórzy programiści próbują zoptymalizować kompilację tak, aby miała niewielki lub żaden wpływ na wydajność gry, podczas gdy inni rozszerzają kompilację shaderów na całą grę, mając nadzieję, że problem będzie krótkotrwały. W takim przypadku zacinanie się będzie występowało tylko na początku nowego poziomu lub podczas wchodzenia do nowego środowiska, w którym używane są shadery, które do tego momentu nie były potrzebne.

Zacinanie się kompilacji było szczególnie rażące w grach opartych na Unreal Engine 4, powszechnie używanym i popularnym silniku gier. W szczególności te zawieszanie się staje się problemem podczas uruchamiania gry pod DirectX 12. Wynika to częściowo z faktu, że DirectX 12 zmienia sposób kompilowania shaderów, dając programistom większą kontrolę. Oznacza to jednak również, że programiści mogą nie mieć lepszego sposobu na optymalizację kompilacji shaderów przy użyciu najnowszej i najlepszej wersji DirectX.

Dlaczego kompilacja shaderów nie zwalnia na konsolach?

Zacinanie się podczas kompilowania shaderów to problem, którego w ogóle nie ma na konsolach takich jak PS5 i Xbox Series X|S. Dzieje się tak po prostu dlatego, że programiści dokładnie wiedzą, jaki sprzęt znajduje się w każdej konsoli, więc mogą wstępnie skompilować wszystkie shadery; nie ma potrzeby kompilowania ich w systemie lokalnym, ponieważ już wiesz, który GPU jest celem.

Można to zrobić na komputerze PC, ale ponieważ jest tak wiele procesorów graficznych i konfiguracji systemu, byłoby to niepraktyczne. Jednak w przypadku Steam Deck firmy Valve, Valve zawiera wstępnie skompilowaną pamięć podręczną shaderów z niektórymi grami, ponieważ oczywiście wszystkie talie Steam mają ten sam procesor graficzny.

Co możesz zrobić z jąkaniem kompilacji?

Niestety, w większości przypadków programiści muszą naprawić problemy z kompilacją shaderów. Dobra wiadomość jest taka, że ​​w końcu przejdą przez ten proces. Unreal Engine 5.1 może zawierać zautomatyzowaną funkcję , która pomoże programistom w buforowaniu bez tak poważnego wpływu na wydajność.

Lista rzeczy, które możesz zrobić, aby zredukować jąkanie, jest krótka, ale niektóre z tych opcji mogą pomóc:

  • Jeśli gra pozwala na prekompilację shaderów, pozwól na to. Może to zająć trochę czasu, ale gra będzie działać bez zacinania się.
  • Jeśli aktualizacja gry nie zawiera poprawki blokującej moduły cieniujące, poczekaj, aż skończysz grać, w przeciwnym razie moduły cieniujące mogą się ponownie skompilować.
  • Odłóż aktualizacje sterownika karty graficznej do czasu ukończenia bieżącej gry, na wypadek gdyby ponownie uruchomiła się kompilacja.
  • Gdy gra zacznie się kompilować, naciśnij przycisk pauzy i poczekaj, aż się skończy, zanim zaczniesz grać dalej.
  • Użyj DirectX 11 zamiast wersji DirectX 12 gry. Często zacinanie się shaderów jest zmniejszone lub nieobecne, chociaż zrezygnujesz z funkcji DX12 do uruchomienia.
  • Zamiast tego zagraj w grę na konsoli.

Z biegiem czasu ten problem prawdopodobnie zniknie lub stanie się znacznie mniej uciążliwy. Na przykład programiści mogą przenieść kompilację shaderów na rdzenie procesorów, których gra nie potrzebuje, co jest powszechną sytuacją na nowoczesnych komputerach PC z dużą liczbą rdzeni. Do tego czasu #stutterstruggle nadal będzie irytującym problemem w grach komputerowych.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *