BLOG

Czym są shadery i dlaczego gry muszą je wstępnie ładować?

Ostatnia aktualizacja:

  Ta strona została automatycznie przetłumaczona przez DeepL. Switch to English

Shadery to małe programy, które działają na Twojej karcie graficznej jako część procesu renderowania. Zajmują się wszystkim, od przekształcania geometrii modeli 3D po nakładanie tekstur, oświetlenia, cieni i efektów po przetworzeniu. Są podstawą nowoczesnych gier i jednym z powodów, dla których te gry wyglądają tak imponująco.

Jednak nie zawsze tak było. Wczesne karty graficzne opierały się na sprzęcie o stałych funkcjach, z oddzielnymi jednostkami przeznaczonymi do zadań takich jak teksturowanie i oświetlenie. Chociaż jednostki te były wydajne jak na swoje czasy, były również nieelastyczne. Wraz ze wzrostem złożoności i ambicji wizualnych gier, stały sprzęt ograniczał zarówno efekty wizualne, jak i swobodę twórczą. Programowalne moduły cieniujące usunęły te ograniczenia.

battlefield 6 game modes explained rush conquest escalation

Moduły cieniujące pikseli

Najwcześniej powszechnie stosowanymi modułami cieniującymi były moduły cieniujące piksele. Określają one ostateczny kolor każdego piksela na ekranie i mogą obsługiwać obliczenia oświetlenia, cienie, tekstury, przezroczystość oraz efekty przetwarzania końcowego, takie jak rozmycie lub cieniowanie celowe. Wkrótce potem pojawiły się moduły cieniujące wierzchołki, umożliwiające programistom manipulowanie danymi wierzchołków, takimi jak pozycja, kolor i współrzędne tekstury, przed renderowaniem geometrii.

Później pojawiły się shadery geometryczne, które mogą generować i modyfikować geometrię w locie w ramach potoku graficznego. Chociaż obecnie nie są one często wykorzystywane ze względu na koszty związane z wydajnością, umożliwiły one uzyskanie takich efektów, jak geometria proceduralna oraz efekty cząsteczkowe. Shadery teselacyjne opierają się na tej idei, dynamicznie zwiększając szczegółowość geometryczną, dzięki czemu powierzchnie wydają się gładsze bez konieczności przechowywania większej ilości danych modelu.

Borderlands 4 Screenshot 10

Shadery siatkowe

W ostatnim czasie nowoczesne interfejsy API wprowadziły moduły cieniujące zadań i siatek. Zastępują one części tradycyjnych etapów wierzchołków, geometrii i teselacji bardziej elastycznym systemem, który zapewnia programistom większą kontrolę nad generowaniem i przetwarzaniem geometrii.

Najnowszym dodatkiem są shadery ray tracingu. Są one wykorzystywane do tworzenia efektów takich jak odbicia, cienie i globalne oświetlenie poprzez śledzenie ścieżek promieni światła w scenie. Są one obsługiwane przez DirectX Raytracing i Vulkan i wymagają stosunkowo nowoczesnych kart graficznych, aby działać na poziomie zapewniającym płynność rozgrywki.

Cyberpunk 2077 Neon

Co oznacza wstępne ładowanie shaderów?

Jeśli tak właśnie działają shadery, dlaczego ich wstępne ładowanie może trwać tak długo i co właściwie oznacza termin „wstępne ładowanie”?

Termin ten jest nieco mylący. W praktyce wstępne ładowanie shaderów oznacza kompilowanie i buforowanie shaderów, a nie tylko ich ładowanie. Twórcy gier mogą kompilować shadery w trakcie gry lub kompilować je z wyprzedzeniem, przed rozpoczęciem rozgrywki.

Kompilowanie shaderów podczas rozgrywki może sprawdzać się w prostych przypadkach, ale często prowadzi do opóźnień i zacinania się gry, gdy pojawiają się nowe efekty lub obszary. Jeśli trzeba skompilować wiele shaderów jednocześnie, czas wyświetlania klatek może znacznie wzrosnąć, dlatego podejście to jest tak widoczne w grach z otwartym światem. Nadmierna kompilacja w locie jest często oznaką słabej optymalizacji komputera.

Screenshot of Apex Legends Preloading Shaders

Korzyści wynikające z wstępnego ładowania

Wstępne ładowanie shaderów pozwala uniknąć tego problemu poprzez ich wcześniejsze skompilowanie i zapisanie wyników w pamięci podręcznej. Po skompilowaniu shadery mogą być natychmiast ponownie wykorzystane podczas rozgrywki, co zapewnia płynniejsze działanie. Minusem jest to, że przy pierwszym uruchomieniu gry trzeba poczekać na zakończenie kompilacji shaderów.

To oczekiwanie może powrócić po dużej aktualizacji gry lub sterowników graficznych, ponieważ pliki binarne shaderów są ściśle powiązane zarówno z wersją gry, jak i sterownikiem GPU. Ponieważ sterowniki graficzne są często aktualizowane, rekompilacja shaderów staje się znaną frustracją dla graczy korzystających z komputerów PC.

Dlaczego programiści nie mogą po prostu dostarczać wstępnie skompilowanych shaderów? W przypadku naszych ukochanych komputerów PC sprzęt i sterowniki są po prostu zbyt zróżnicowane. Kompilacja shaderów zależy od architektury procesora graficznego, wersji sterownika i interfejsu API grafiki, więc skompilowany shader, który działa w jednym systemie, nie będzie działał w innym. Konsole unikają tego problemu, ponieważ są platformami stałymi, ale komputery PC nie są.

Kiedy więc następnym razem będziesz patrzeć na ekran ładowania shadera, pamiętaj, że służy on zmniejszeniu zacinania się obrazu i poprawie wydajności podczas gry. To moc, która służy dobru.

Screenshot from CoD MW3

JOIN OUR OFFICIAL CORSAIR COMMUNITIES

Join our official CORSAIR Communities! Whether you're new or old to PC Building, have questions about our products, or want to chat the latest PC, tech, and gaming trends, our community is the place for you.