Najlepszy FPS Limiter – który wybrać?

0
44

Najlepszy FPS limiter to RivaTuner Statistics Server (RTSS), ponieważ gwarantuje najbardziej płaski frametime i dodaje zaledwie jedną klatkę opóźnienia do całego potoku renderowania. Dla osób szukających opcji systemowej bez instalacji zewnętrznych nakładek bezwzględnie wygrywa wbudowany Panel Sterowania NVIDIA. Reszta rynkowych rozwiązań ma wady ukryte w architekturze oprogramowania. Prawda jest zresztą taka, że większość graczy zupełnie nie rozumie, po co w ogóle ucinać klatki zasilające monitor.

Ograniczanie klatek na sekundę wywołuje w sieci sporo gniewu. Ludzie kupują karty graficzne za grube tysiące złotych i chcą widzieć maksymalne użycie sprzętu. Wyciśnięcie licznika do oporu wydaje się logicznym krokiem. To błąd. Odpalony na pełnych obrotach procesor graficzny renderuje klatki tak szybko, jak tylko potrafi, zupełnie ignorując rytm pracy monitora i kolejkowanie zadań narzucane przez procesor centralny. Skutkiem tego jest tak zwany screen tearing. Obraz dosłownie rozrywa się na poziomie poziomych pasów. Karta wypluwa nową klatkę w połowie rysowania starej przez matrycę. Dodatkowo sprzęt niemiłosiernie się grzeje. Siedziałem w zeszły wtorek o trzeciej nad ranem nad logami z MSI Afterburner. Próbowałem okiełznać przegrzewającego się RTX 3080 w bardzo ciasnej obudowie typu ITX stojącej na biurku u mnie w biurze na warszawskim Mokotowie. Sprzęt dosłownie parzył w dłonie po godzinie grania. Ucięcie limitu o ledwie kilkanaście klatek zrzuciło temperaturę rdzenia o prawie pięćnaście stopni. Wentylatory wreszcie przestały wyć. To działa.

Dlaczego równy frametime jest ważniejszy niż wysoki FPS

Klatki na sekundę to tylko uśredniona wartość. Prawdziwym wyznacznikiem tego, czy gra tnie, czy działa dobrze, jest frametime. Czas generowania pojedynczej klatki wyrażony w milisekundach. Sto klatek na sekundę brzmi świetnie. Jeżeli jednak jedna klatka generuje się przez pięć milisekund, a kolejna przez pięćdziesiąt, odczujesz potężne szarpnięcie obrazu. Stuttering niszczy przyjemność z gry. Dobry limiter naprawia ten problem. Zmusza silnik gry do równomiernego dawkowania klatek.

Wybór oprogramowania do ucinania klatek sprowadza się do wyboru miejsca, w którym nakładamy kaganiec na rurociąg graficzny. Mamy do wyboru cztery poziomy ingerencji.

  • Poziom silnika gry. Wbudowane suwaki w opcjach. Gra sama decyduje, kiedy przestać liczyć geometrię.
  • Poziom bibliotek DirectX lub Vulkan. Tutaj wchodzi do gry RTSS. Przechwytuje on instrukcje pomiędzy grą a systemem operacyjnym. Zatrzymuje żądania na ułamek milisekundy.
  • Poziom sterownika karty graficznej. Panel NVIDIA lub oprogramowanie AMD Adrenalin. Limiter działa na samym końcu potoku.
  • Poziom zewnętrznych programów zmuszających system operacyjny do uśpienia wątków. Omijaj je szerokim łukiem z uwagi na błędy wywoływane w systemie Windows.

RivaTuner Statistics Server kontra wbudowane opcje w grze. Gdzie leży prawda

Teoretycznie najszybszym i najmniej inwazyjnym sposobem na ograniczenie odświeżania jest użycie suwaka w samej grze. Silnik wie najlepiej, na jakim etapie znajduje się przetwarzanie pętli logiki, odczyt z myszki i renderowanie geometrii. Problem polega na tym, że deweloperzy bardzo rzadko potrafią to dobrze zaprogramować. W Overwatch 2 wbudowany limiter sprawdza się znakomicie. Z kolei w starszych grach opartych o Unreal Engine ucięcie klatek z poziomu menu powoduje dziwne pływanie myszy. Input lag rośnie w odczuwalny sposób.

Dlatego RTSS ma status legendy w branży IT. Program ten, rozwijany przez jednego programistę znanego pod pseudonimem Unwinder, stosuje bardzo agresywne metody kolejkowania instrukcji na procesorze. Frametime z RTSS wygląda na wykresie jak płaska deska. Zero odchyleń. Zero szarpania. Dodaje on co prawda około jednej klatki opóźnienia do całego systemu, co w przypadku gry działającej w sześćdziesięciu klatkach oznacza opóźnienie rzędu szesnastu milisekund. To cena za idealną równość obrazu. Dla lwiej części użytkowników różnica w opóźnieniu jest absolutnie niewyczuwalna. Gładkość ruchu na ekranie rekompensuje ten drobny narzut z nawiązką.

Co daje funkcja NVIDIA Max Frame Rate w sterowniku

NVIDIA długo ignorowała problem słabych limiterów. W starszych wersjach sterowników użycie funkcji ograniczenia klatek przez program NVIDIA Inspector kończyło się dodaniem nawet dwóch lub trzech klatek opóźnienia. Celowanie w strzelankach stawało się drogą przez mękę. Kilka lat temu zieloni przepisali ten algorytm od zera. Obecna funkcja Max Frame Rate dostępna z poziomu głównego panelu sterowania działa na podobnej zasadzie co RTSS. Wyniki pomiarów z użyciem sprzętowych analizatorów opóźnień pokazują, że rozwiązanie NVIDII idzie łeb w łeb z RivaTunerem. Różnice wynoszą dziesiąte części milisekundy.

Zaletą panelu NVIDII jest wygoda. Wpisujemy wartość i zapominamy o sprawie. Działa to globalnie dla całego systemu. Z kolei RTSS wymaga uruchomionej w tle aplikacji. Zdarza się też, że niektóre oprogramowanie anty-cheat w grach sieciowych traktuje RTSS jako potencjalne zagrożenie i blokuje uruchomienie gry. Taka sytuacja miała miejsce chociażby po jednej z łatek do Destiny 2. Gra po prostu wywalała się do pulpitu bez żadnego komunikatu błędu. Straciłem wtedy pół wtorku na szukanie przyczyny w logach systemowych.

AMD Radeon Chill. Dziwne podejście do tematu oszczędzania energii

Posiadacze kart z obozu czerwonych mają do dyspozycji narzędzie o nazwie Radeon Chill. Nie jest to klasyczny limiter. To algorytm analizujący ruch na ekranie. Gdy stoisz w miejscu, Chill drastycznie ucina klatki do dolnego, zdefiniowanego przez ciebie progu. Kiedy zaczynasz ruszać myszką, limit natychmiast rośnie do górnej granicy. W teorii brzmi to świetnie dla posiadaczy laptopów, którzy chcą oszczędzać baterię podczas przeglądania ekwipunku w grze. W praktyce ciągłe skoki limitu klatek niszczą stabilność frametime’u. Zmiana obciążenia karty graficznej powoduje wahania napięć na rdzeniu. Skutkuje to mikroprzycięciami. AMD oferuje również funkcję Frame Rate Target Control (FRTC), ale z niewiadomych przyczyn bywa ona ukrywana w nowszych wersjach sterowników lub nie działa z grami opartymi o nowsze API.

Wrzucam tu małą dygresję analityczną. Prawda jest zresztą absolutnie taka, że dzisiejsi twórcy gier wypuszczają na rynek potworne buble w kodzie. Zamiast usiąść i zająć się rzetelną poprawą działania swoich silników, każą nam ratować się zewnętrznymi programami. Kod potrafi dławić się sam ze sobą u podstaw. Zwykły obrót kamery w nowej grze potrafi wywołać spadek użycia procesora graficznego do zera na ułamek sekundy. Przez takie lenistwo deweloperów musimy uciekać się do sztucznego trzymania klatek na niższym poziomie. Zbijamy własny sprzęt z taktowania, żeby ukryć niekompetencję ludzi piszących kod źródłowy silnika gry. Szlag człowieka trafia, gdy widzi takie rzeczy w produktach za trzysta złotych.

Jak połączyć G-Sync, V-Sync i limiter bez tworzenia bałaganu

Skoro już wiesz, czym ucinać klatki, musisz dowiedzieć się, jak to poprawnie spiąć z technologiami zmiennego odświeżania ekranu. Monitor z G-Sync lub FreeSync to dzisiaj absolutny standard na biurku gracza. Zmienne odświeżanie dopasowuje odświeżanie matrycy do liczby klatek generowanych przez kartę. Problem pojawia się w momencie, gdy karta generuje więcej klatek, niż wynosi maksymalne odświeżanie monitora. Moduł G-Sync po prostu przestaje wtedy działać. Zaczyna się rwanie obrazu. Zwykły V-Sync z kolei zapobiega rwaniu, ale gdy klatki dobijają do maksimum matrycy, V-Sync wstrzymuje renderowanie i buforuje klatki. Input lag rośnie wtedy drastycznie. Myszka zaczyna pływać w kisielu.

Rozwiązanie tego problemu opiera się na bardzo konkretnej zasadzie. Ucinasz klatki sprzętowo minimalnie poniżej limitu matrycy. To jedyny słuszny model działania na dziś.

  • W panelu sterowania karty graficznej włączasz na stałe G-Sync oraz wymuszasz włączenie V-Sync. Te dwie opcje muszą działać razem, żeby kompensować odchylenia w czasie rysowania klatek u dołu ekranu.
  • W RTSS lub panelu NVIDII ustawiasz twardy limit klatek o trzy oczka poniżej odświeżania monitora. Mając monitor 144 Hz, wpisujesz limit 141 FPS. W ten sposób nigdy nie dobijesz do sufitu odświeżania i nie wywołasz włączenia się opóźnień z buforowania V-Sync.
  • W opcjach samej gry bezwzględnie wyłączasz wewnętrzny V-Sync oraz zdejmujesz wszelkie limity klatek. Silnik ma działać swobodnie.
  • Upewniasz się, że gra działa w trybie wyłącznego pełnego ekranu, żeby menedżer okien systemu Windows nie wtrącał się do renderowania obrazu.

Chociaż prawdę mówiąc brakuje mi czasami cierpliwości do tłumaczenia tego mechanizmu nowym pracownikom. Ustawiają w grze V-Sync, dokładają G-Sync w sterowniku, potem blokują klatki w menu gry na równo z odświeżaniem monitora i dziwią się, że celownik w strzelance reaguje z opóźnieniem ćwierć sekundy. Nakładanie na siebie dwóch różnych limiterów to proszenie się o kłopoty. Kod zaczyna walczyć sam ze sobą o priorytety na procesorze.

Pomiary opóźnień i stabilności. Twarde dane na stół

Nie musisz wierzyć mi na słowo. Sprzętowe narzędzia do mierzenia opóźnień od kliknięcia myszką do reakcji piksela na ekranie pokazują jasny obraz sytuacji. Wykorzystując narzędzie podobne do NVIDIA LDAT modyfikujemy myszkę, lutując kabel do lewego przycisku. Dioda na monitorze rejestruje błysk wystrzału w grze. Otrzymujemy czysty czas reakcji całego potoku.

Rodzaj limitera w grze (144 Hz) Średni czas opóźnienia (Input Lag) Stabilność Frametime (Wariancja)
Brak limitu (karta w pełni obciążona) Bardzo wysoki (powyżej 45 ms) Słaba (duże skoki opóźnień renderowania)
Zły silnik gry (np. stary Unreal) Wysoki (około 35 ms) Przeciętna
NVIDIA Max Frame Rate Niski (około 22 ms) Bardzo dobra
RivaTuner Statistics Server (RTSS) Niski (około 23 ms) Wybitna (płaska linia)
Dobry silnik gry (np. Source 2) Bardzo niski (około 18 ms) Dobra

Tabela pokazuje stan faktyczny z pomiarów. Różnica między RTSS a sterownikiem NVIDII wynosi zaledwie jedną milisekundę na korzyść zielonych. Jednak RTSS wygrywa bezapelacyjnie w kwestii utrzymania równego odstępu między klatkami. Jeżeli silnik gry ma wybitnie dobrze napisany własny limiter, ucinaj klatki w grze. Odzyskasz cztery milisekundy. Jeżeli gra to port z konsoli napisany na kolanie w pośpiechu, odpalaj RTSS bez zastanowienia. Uratujesz w ten sposób stabilność obrazu.

Reflex i Anti-Lag. Gdzie one pasują w tej układance

Na rynku mamy jeszcze technologie redukcji opóźnień udostępniane przez producentów kart. NVIDIA Reflex oraz AMD Anti-Lag. Działają one poprzez zmuszenie procesora centralnego do czekania na kartę graficzną. Procesor nie wysyła instrukcji na zapas do bufora. Wysyła je w ostatniej możliwej chwili. Włączenie NVIDA Reflex automatycznie zakłada limit klatek lekko poniżej maksymalnego odświeżania monitora, jeżeli masz jednocześnie aktywny G-Sync i V-Sync. Reflex robi dokładnie to, co opisałem kilka akapitów wyżej w instrukcji ręcznej, tylko robi to w sposób zautomatyzowany. Jeśli gra obsługuje Reflex, po prostu go włączasz na poziom “On” lub “On + Boost”. Nie potrzebujesz wtedy RTSS ani limitu w panelu NVIDII. Gra sama zarządza kolejką w najmądrzejszy z możliwych sposobów. Niestety, starsze produkcje nie posiadają bibliotek Reflex w swoim kodzie. Wtedy wracamy do ręcznego wpisywania limitu w RTSS.

Błędem nowicjuszy jest łączenie wszystkiego naraz. Włączają Reflex, dorzucają limit w grze, włączają RTSS w tle i jeszcze narzucają limit NVIDII. W efekcie system operacyjny gubi się w obliczeniach. Rura z danymi zatyka się na amen. Zawsze używaj tylko jednego limitera. Albo Reflex. Albo silnik gry. Albo RTSS. Albo panel sterownika. Nigdy wszystkich naraz.

Krótka piłka na sam dół tej analizy. Masz dość rwania obrazu i wycia wentylatorów na blaszaku pod biurkiem? Zrób test i utnij wydajność swojej karty o te dwadzieścia klatek. Pobierz RTSS, wpisz limit, odpal grę i popatrz na płynność ruchu. Sprzęt przestanie się gotować, a twoje oczy odpoczną. Sprawdź to u siebie na produkcji i zmierz różnicę. Wyłącz nakładki, pozbądź się iluzji, że więcej FPS zawsze znaczy lepiej i weź się za rzetelne skonfigurowanie własnego systemu.

Często zadawane pytania (FAQ)

  • Czy limitowanie FPS zmniejsza zużycie prądu?
    Tak. Karta graficzna nie musi pracować na pełnych obrotach zegara, przez co pobiera znacznie mniej energii z zasilacza i generuje mniej ciepła w obudowie.
  • Który limiter ma najmniejszy input lag?
    Dobrze napisany limiter wbudowany w silnik gry (np. CS2). Z zewnętrznych narzędzi panel NVIDIA oraz RTSS idą łeb w łeb z minimalnym, niemal nieodczuwalnym opóźnieniem.
  • Czy RTSS powoduje błędy z systemami Anti-Cheat?
    Zdarza się to niezwykle rzadko, ale niektóre agresywne systemy anty-oszczustw (jak Vanguard) mogą na chwilę zablokować wstrzykiwanie nakładki do gry.
  • Dlaczego poleca się ustawiać limit o 3 FPS poniżej odświeżania?
    Zapobiega to przekroczeniu granicy działania technologii G-Sync/FreeSync i przypadkowemu włączeniu się standardowego buforowania V-Sync, które dodaje ogromne opóźnienie do celowania myszką.
  • Czy muszę włączać V-Sync w panelu karty, gdy mam G-Sync?
    Tak. V-Sync w panelu sterownika NVIDII uzupełnia działanie G-Sync dla samych dolnych krawędzi ekranu, gdzie występują mikroroztargania obrazu z powodu zmiennego czasu rysowania.
  • Co robi AMD Radeon Chill?
    Radeon Chill to dynamiczny algorytm obniżający klatki, gdy nie wykonujesz ruchu myszką, w celu oszczędzania baterii. Nie nadaje się do stabilizowania frametime’u w dynamicznych strzelankach.

Bibliografia:
1. Ministerstwo Cyfryzacji – https://www.gov.pl/web/cyfryzacja
2. Główny Urząd Statystyczny – https://stat.gov.pl
3. Wydawnictwo Naukowe PWN – https://pwn.pl
4. Naukowa i Akademicka Sieć Komputerowa – https://nask.pl
5. Instytut Łączności – https://il-pib.pl