Wszystko o technikach skalowania. Czy jesteśmy skazani na FSR i DLSS? Omówienie na przykładzie Switcha 2

Wszystko o technikach skalowania. Czy jesteśmy skazani na FSR i DLSS? Omówienie na przykładzie Switcha 2

Maciej Zabłocki | 11.06, 22:00

Współczesna grafika komputerowa dotarła do ściany. Rosnące rozdzielczości ekranów i popularność ray-tracingu pchają zapotrzebowanie na moc obliczeniową znacznie szybciej, niż prawo Moore’a pozwala zwiększać liczbę tranzystorów w akceptowalnym budżecie energetycznym. Jedynym realnym wyjściem – zarówno na wydajnych kartach graficznych, jak i w urządzeniach mobilnych – stały się techniki skalowania obrazu, które przerzucają ciężar renderowania na uczenie maszynowe.

Dobór właściwego przykładu ma tu znaczenie kluczowe. Jeśli chcemy pokazać, jak daleko zaszła ta ewolucja, musimy sięgnąć po konfigurację o ekstremalnie ograniczonym poborze mocy, a zarazem taką, która mierzy się z najbardziej wymagającymi grami. Dlatego uznałem, że przykład Switcha 2 jest idealny, szczególnie w kontekście jego premiery i aktualnej popularności. Zacznijmy jednak od krótkiej historii, skąd właściwie wzięło się skalowanie.  

Dalsza część tekstu pod wideo

Pierwsze implementacje sprzętowego filtrowania dwuliniowego powstały na początku lat 90. w laboratoriach Silicon Graphics – tam, gdzie Jim Clark i jego zespół budowali stacje Onyx i RealityEngine do symulatorów lotu. Gdy Nintendo szukało partnera dla swojej 64-bitowej konsoli, zadaniem inżynierów SGI (m.in. David Barton i Andrew Hakeem) było przeniesienie tej samej jednostki filtrującej do taniego układu RCP, by konsola potrafiła powiększać mip-mapy kartridżowych tekstur bez skokowych krawędzi. Rozwiązanie szybko podchwycili projektanci następnej generacji konsol - Ken Kutaragi w PlayStation 2 i zespół Hideki Sato w SEGA na potrzeby Dreamcasta. W dokumentacji SDK obu platform technikę "bilinear stretch" opisano jako „najtańszy sposób zwiększenia rozdzielczości wyjściowej bez podnoszenia rozmiaru bufora klatki”. Od tego momentu filtracja liniowa stała się domyślnym narzędziem, po które studia sięgały zawsze, gdy VRAM okazywał się zbyt mały, a ramki musiały utrzymać 60 FPS.

Rozwój przeróżnych metod skalowania sięga blisko 30 lat

Super Mario Bros
resize icon

Czym jest bilinear stretch? To potoczna nazwa zabiegu, w którym cała klatka (lub tekstura) renderowana w niższej rozdzielczości jest „rozciągana” do rozdzielczości docelowej przy użyciu filtrowania dwuliniowego, czyli obliczania każdego nowego piksela jako średniej z czterech najbliższych pikseli oryginału; w praktyce daje to gładszy, lecz miękko-rozmyty obraz bez kosztownego ponownego renderowania. Super Mario Bros jest jednym z przykładów, gdzie wykorzystano te technikę po raz pierwszy. 

W drugiej połowie lat 90. pamięć VRAM w konsolach była na wagę złota. PlayStation 2 miało jej 4 MB, a Dreamcast 8 MB. Żeby zmieścić scenę 3D i tekstury, deweloperzy często sięgali po powyższą technikę. Rozwijając wątek - silnik rasteryzował ramkę w niskiej rozdzielczości (np. 512x448p) albo ładował tekstury 256x256p, po czym układ wyświetlania rozciągał obraz do pełnego 640x480p (czyli rozdzielczość docelową PS2). Filtr „bilinear” obliczał kolor każdego brakującego piksela jako średnią czterech najbliższych sąsiadów, zmiękczając krawędzie i ukrywając blokowość. Różnicę mogliśmy zobaczyć w Gran Turismo 3, gdzie modele samochodów renderowane są bardzo szczegółowo, ale asfalt i niebo powstają z rozciąganych, niskiej jakości tekstur (albo inaczej map). W efekcie otrzymywano płynniejszą rozgrywkę przy akceptowalnej ostrości. Rozwiązanie proste, tanie, lecz prymitywne, bo zamiast „więcej detali" serwowano „więcej rozmycia”.

GTA IV X360
resize icon

Przejście na HD Ready (720p) okazało się bolesne - 256-bitowa pamięć GDDR3 w Xboxie 360 (o przepustowości 22,4 GB/s) i PlayStation 3 (25,6 GB/s) nie wystarczała, żeby wypełnić ekran pełnymi cieniami z wygładzaniem krawędzi (chociaż Xbox 360 miał jeszcze super szybką pamięć eDRAM, która trochę w tym pomagała). Stąd powstała praktyka quasi-HD: wewnętrzne bufory miały nietypowe rozdzielczości - Halo 3 używało 1152×640p, Tekken 6 - 1024×576p, a GTA IV zadowalało się 1280×720p tylko na X360, schodząc do 960×720p na PS3. Obraz skalowano sprzętowo do 720p, czasem z prostym ostrzeniem. Jakość była wyraźnie lepsza niż w epoce "bilinear stretch", ale wciąż daleka od natywnej. Pojawiły się też pierwsze kodeki post-processowe (Quincunx AA, 2×MSAA), które łagodziły ząbki, ale kosztem ostrości. No i wymagały sporo mocy obliczeniowej.

W epoce PlayStation 4 i Xbox One oczekiwania względem grafiki – czyli realistycznych materiałów (PBR), dynamicznych odbić na powierzchniach i innych kosztownych efektów shaderowych – rosły znacznie szybciej, niż przybywało surowej mocy obliczeniowej w kartach graficznych. Remedy i Ubisoft wprowadziły Dynamic Resolution Scaling (DRS): silnik w każdej klatce mierzył czas renderingu i, jeśli przekraczał budżet 33 ms, tymczasowo obniżał rozdzielczość do nawet ~720p. Celem było utrzymanie 30 FPS bez widocznych spadków. Głośnym krokiem naprzód został rok 2016 i Temporal Anti-Aliasing w Unreal Engine 4 oraz Doom (2016): algorytm łączył dane kolorów i ruchu z wielu klatek, rekonstruując ostrzejszy obraz niż pozwalała natywna siatka pikseli. Okazało się, że czas można traktować jak dodatkową oś przestrzeni. Ta zasada stała się fundamentem Temporal Super Resolution (TSR), czyli pierwszego skalera opartego na historii pikseli zamiast statycznego filtru.

Od 2019 r. skalowanie wkroczyło w etap wspierany przez uczenie maszynowe. NVIDIA zbudowała w architekturze Turing dedykowane rdzenie Tensor do obliczeń macierzowych FP16/INT8 - pierwsza wersja DLSS trenowana była offline na superkomputerach i działała z predefiniowanymi modelami dla każdej gry. AMD i Intel poszły w stronę rozwiązań shaderowych (FSR 1/2, XeSS DP4a) wspieranych instrukcjami przetwarzania macierzy. Równolegle Epic zintegrował TSR bez wymogu dodatkowego sprzętu, korzystając wyłącznie z historii klatek i danych ruchu. W ciągu zaledwie pięciu lat skalowanie z roli „plastra ratunkowego” awansowało do etapu obowiązkowego węzła potoku renderingu. To właśnie on pozwala utrzymać rosnące oczekiwania wyższej rozdzielczości i lepszych efektów w granicach poboru mocy, który stoi w miejscu lub wręcz maleje na urządzeniach mobilnych.

Na rynku znajdziemy obecnie kilka technik skalowania

Technika Debiut / Wersja Kluczowe filary Frame Gen. Sprzęt
NVIDIA DLSS 4 CES 2025 Transformerowe SR + rekonstrukcja promieni + Multi-Frame Gen Tak (aż 3 dodatkowe klatki) RTX 50+, częściowo RTX 30/40
AMD FSR 4 „Redstone” marzec 2025 ML-enhanced TSR, rekonstrukcja promieni, AFMF 2.1 Tak (AFMF) RDNA 4 (HW) + fallback GPU/OpenCL
Intel XeSS 1.4 sierpień 2024 XMX-/DP4a-hybrydowy TSR, dynamiczne skalowanie rozdzielczości Planowany (XEFG) ARC, Lunar Lake i multi-vendor
UE 5 TSR 2021 → 5.6 (2025) Platform-agnostic temporal upscaler, plug-in dla konsol/PC Nie (silnik zewn. daje FG) Dowolne GPU (DX12/Vulkan/Metal)
Apple MetalFX WWDC 2022 → A18 Pro (2024) Tryb Spatial + Temporal, zestaw efektów post (...) Nie (FG może w Metal 3) Apple Silicon, iOS 17+, macOS 14+

Podstawę każdego współczesnego upscalera można streścić równaniem:

Io = U (In, Ht, D)

Gdzie poszczególne wartości w nawiasie oznaczają:

  • In – klatka wyrenderowana w niższej rozdzielczości (zwykle 25–67% rozmiaru liniowego obrazu docelowego).
  • Ht – historia pikseli z poprzednich klatek: kolory, wektory ruchu, losowe przesunięcia (czyli "jitter")
  • D – bufory pomocnicze, np. głębia, normal-mapy, maski materiałów oraz ewentualnie wstępne przebiegi ray-tracingu.

Sedno: to, co odróżnia poszczególne techniki (DLSS, FSR, XeSS, TSR), sprowadza się do tego, jak zdefiniowana jest funkcja U — czyli algorytm rekonstrukcji obrazu na podstawie tych trzech źródeł danych.

Dlaczego skalowanie weszło do użytku właśnie teraz, a nie dekadę temu?

  • Energia zamiast tranzystorów – każde podwojenie rozdzielczości daje czterokrotnie więcej pikseli do zacieniowania, a ray-tracing obciąża układ jeszcze mocniej. Limit mocy pozostaje nie­zależny od platformy: Switch 2 zadowala się ~10W w trybie przenośnym, a najmocniejsze karty desktopowe (RTX 5090) nie powinny przekroczyć 450W - co i tak jest olbrzymią wartością.
  • Zatrzymane prawo Moore’a – gęstość tranzystorów rośnie dziś niespełna dwukrotnie na siedem lat, podczas gdy wymagania graficzne rosną mniej więcej dwukrotnie co dwa–trzy lata. Łatwo policzyć, że bez dodatkowych sztuczek sprzęt po prostu nie nadąży.
  • Psychologia odbioru – gracze oczekują minimum 40 kl./s przy nominalnym 4K, a producenci telewizorów już oferują panele 8K/240 Hz. Renderowanie takiego sygnału bez upscalera wymagałoby układu o mocy dochodzącej do około 1500W – koszt i odprowadzanie ciepła byłyby całkowicie nieakceptowalne.
  • Wspólny ekosystem – te same algorytmy skalowania pracują dziś na serwerach streamingowych, w laptopach i smartfonach (np. MetalFX na Neural Engine, Snapdragon Game Super Res), więc deweloper może opracować jedną ścieżkę renderingu i używać jej na wszystkich platformach, oszczędzając budżet i czas produkcji.

DLSS w Cyberpunk 2077 na Switchu 2 – studium jednego tytułu

Cyberpunk 2077: Ultimate Edition jest pierwszym dużym przykładem na to, że przenośna konsola potrafi utrzymać 1080p/40 FPS (TV) oraz 720p/40 FPS (w trybie przenośnym) bez rezygnacji z wymagającej oprawy graficznej. Gra działa w dwóch stałych profilach: wydajności (40 FPS, brak ray-tracingu) i jakości (30 FPS, prawdopodobny ray-tracing dla cieni, szumy od skalera). Cała analiza poniżej odnosi się właśnie do profilu wydajności – to on buduje wrażenie, że układ Tegra T239 zachowuje się jak GPU mające teoretyczne (i hipotetyczne) 15 TFLOPs.

Redukcja rozdzielczości wejściowej do 960×540p obcina liczbę pikseli do 25% i niemal czterokrotnie zmniejsza obciążenie etapu cieniowania fragmentów. To najdroższy fragment potoku w Cyberpunku, dlatego zysk skaluje się prawie liniowo. Następnie rdzenie Tensor rekonstruują brakujące 75% obrazu, korzystając z klatki bazowej, wektorów ruchu, bufora głębi i historii kolorów. Koszt tej operacji to ok. 15% cyklu FP32. Po odjęciu narzutu pozostaje ~3,5-krotne przyspieszenie względem rasteryzacji z pełnego 1080p.

Trzeci składnik to zmiana celu renderingu z 30 FPS (33 ms na klatkę) na 40 FPS (25 ms). Profil wydajności w silnikach konsolowych zakłada rezerwę mocy dla nieprzewidzianych skoków obciążenia — przeciętnie 10–12 ms w każdej ramce. Skrócenie ramki pozwala wykorzystać tę rezerwę bez podnoszenia zegarów, co dokłada jeszcze około 40% przepustowości. Łączny mnożnik (4 × 0,85 × 1,4 ≈ 4,8) podnosi surowe 3,07 TFLOPs znajdujące się w T239 do ≈ 15 TFLOPs efektywnych – właśnie tyle potrzeba, by natywnie wyrenderować 1080p/40 FPS w Cyberpunku 2077 na tych samych detalach, ale bez skalowania. Oficjalny limit energetyczny Switcha 2 wynosi raptem 19W w trybie TV oraz taktowanie CPU w zakresie 0,998–1,10 GHz z opcjonalnym krótkim boostem do 1,7 GHz. Do tego mamy raptem 10W w trybie przenośnym. To jest KOSMOS. Oczywiście to tylko przykład i odnoszę go akurat do Cyberpunka na Switchu 2, ale ma zastosowanie w każdym innym przypadku.

WAŻNE

Skąd biorą się „efektywne 15 TFLOPs” w Switchu 2?

  • 3,07 TFLOPs — surowa moc układu Tegra T239 (12 SM, 1007 MHz).
  • × 4 — DLSS w trybie wydajności renderuje obraz w ¼ pikseli (960×540 px zamiast 1920× 1080p), więc koszt cieniowania spada ~4-krotnie.
  • × 0,85 — około 15% mocy pochłania inferencja na rdzeniach Tensor (rekonstrukcja + denoiser).
  • × 1,4 — cel 40 FPS (zamiast 30 FPS) wykorzystuje wolne cykle GPU, dodając ~40 % przepustowości bez podnoszenia zegarów.

3,07 TFLOPs × 4 × 0,85 × 1,4 ≈ 14,8 TFLOPs ⇒ zaokrąglamy do ≈ 15 TFLOPs efektywnych.

To nie oznacza, że Switch 2 ma fizycznie 15 TFLOPs. Oznacza jedynie, że w scenariuszu 1080p/40 FPS z DLSS jego realna wydajność odpowiada karcie graficznej, która musiałaby mieć około 15 TFLOPs, gdyby renderowała obraz natywnie.

Skoro Switch 2 zyskuje efektywne 15 TFLOPs, to ile zyskuje PS5? 40 TFLOPs? Nie do końca

Switch 2
resize icon

Pierwsza różnica między NVIDIA DLSS, a AMD FSR wynika ze sprzętu. DLSS działa na wyspecjalizowanych rdzeniach Tensor – niewielkich blokach w krzemie zaprojektowanych wyłącznie do mnożenia macierzy w formatach FP16 lub INT8. Ponieważ algorytm rekonstrukcji to w istocie sieć neuronowa, taka „kalkulatorowa” jednostka wykonuje go wielokrotnie szybciej i przy mniejszym poborze energii niż klasyczne jednostki FP32. Shaderowe potoki, które normalnie liczyłyby każdy piksel i efekt post-process, mogą w tym czasie zająć się cieniowaniem geometrii i ray-tracingiem. W praktyce oznacza to, że cała operacja upscalingu kosztuje kartę RTX około 10–15% czasu GPU, podczas gdy to samo zadanie realizowane w ogólnych shaderach – tak jak w FSR 2.1 na PS5 – pożera 20–25% budżetu.

Dlatego choć PlayStation 5 ma cztery razy szerszą magistralę pamięci i ponad 10 TFLOPs surowej mocy, spora część tej przepustowości idzie na samo wykonanie FSRa w shaderach. Efektywnie zwiększa to „pikselowy przerób” konsoli do ~15 TFLOPs, ale osiąga się to kosztem wyższego poboru mocy oraz mniejszej elastyczności. Gdy gra wspiera ray-tracing w wyższych ustawieniach, brakuje już wolnych jednostek. Z kolei Switch 2 oddaje rekonstrukcję sieci neuronowej wyspecjalizowanym Tensorom, więc jego skromne 3 TFLOPs FP32 może w całości pracować nad rasteryzacją i RT cieni, a sam upscaler kosztuje go mniej watów i mniej czasu.

No i tu właśnie wchodzi PSSR (PlayStation Spectral Super Resolution), czyli wewnętrzny projekt Sony wykorzystujący dedykowane NPU w odświeżonym SoC dla PS5 Pro. Jeśli rekonstrukcja obrazu trafi na układ AI – podobnie jak MetalFX na Neural Engine w iPhone’ach – odciąży nie tylko shadery, ale i pamięć, bo przesyła się mniej danych między blokami. To pozwoli osiągnąć jakość DLSS przy jeszcze wyższej rozdzielczości wejściowej lub podnieść licznik klatek do 120 FPS bez wzrostu TDP. Innymi słowy, PSSR sprowadza się do tej samej zasady co rdzenie Tensor, tyle że wykonanej w nieco inny sposób. Dostajemy więc osobny silnik ML, wyższą efektywność energetyczną i miejsce na ambitniejsze efekty graficzne tam, gdzie dziś zjada je podstawowy FSR pracujący na shaderach. Dokładnie to samo widzimy z AMD FSR 4. Czerwoni, chcąc iść naprzód, musieli zastosować to samo podejście co NVIDIA ze sprzętowym wsparciem swojego skalera. 

Dokąd zmierza skalowanie obrazu – cztery kierunki rozwoju

DLSS
resize icon

Połączenie z ray-tracingiem:

  • Najnowsze odsłony DLSS 4 i FSR 4 (Redstone ML) nie tylko powiększają obraz, lecz również zastępują klasyczny filtr wygładzający szum promieni (denoiser). Dzięki temu łańcuch obliczeń RT jest krótszy, klatka dociera do ekranu szybciej, a odbicia i cienie są wyraźniejsze. W efekcie dostajemy lepszą grafikę i mniejsze opóźnienie wejścia.

Frame Generation 2.0 → Multi-Frame Generation:

  • Do niedawna upscaler zajmował się wyłącznie rekonstrukcją pojedynczej klatki. Frame Generation (FG) dodało „dorysowywanie” kolejnych ramek animacji – np. gra liczy 60 FPS, a telewizor otrzymuje 120 FPS.
  • Nowy etap to Multi-Frame Generation (MFG), nazywany niekiedy FG 2.0. Algorytm analizuje nie dwie, lecz kilka ostatnich klatek i generuje dwie lub trzy pośrednie. W praktyce silnik może renderować 40 FPS w niskiej rozdzielczości, MFG podnosi obraz do 4K i dostarcza nawet 120 FPS wyjściowych. Gracz zyskuje ostrzejszą i ultramiękką animację, a GPU wciąż oblicza tylko ułamek pikseli i klatek.

Edge-AI – osobne „mózgi” do skalowania:

  • Apple (Neural Engine), Qualcomm i Samsung wyposażają SoC w układy NPU przeznaczone wyłącznie do zadań ML. Gdy rekonstrukcja i MFG lądują na NPU, GPU zostaje zwolnione dla klasycznego renderingu i ray-tracingu. W efekcie otrzymujemy wyższą wydajność lub dłuższy czas pracy na baterii bez podnoszenia TDP.

„Inteligentne szczegóły” w silnikach gier:

  • Unreal Engine 5.6 (Nanite Upscaled Clusters) i Unity 10 (Deep Geometry Proxy) pokazują, że odległe obiekty nie muszą być pełnymi modelami. Silnik tworzy uproszczone wersje (low-poly), a następnie podkręca i "doszczegóławia" je w locie, gdy kamera się zbliża. Gdy nie są widoczne z bliska, liczba trójkątów spada, GPU może odetchnąć, a gracz nie widzi „wyskakujących” detali. 

Techniki skalowania obrazu przestały być kosmetycznym dodatkiem, a stały się filarem całego łańcucha renderingu. Rekonstrukcja promieni w skuteczny sposób usuwa odszumiacze z potoku ray-tracingu, Multi-Frame Generation podwaja lub potraja liczbę klatek wyświetlanych na ekranie, a dedykowane jednostki NPU przenoszą ciężką inferencję poza GPU. W rezultacie nawet mobilny układ klasy Switcha 2 może prezentować sceny, które jeszcze niedawno wymagałyby desktopowej karty graficznej. Równolegle „smart LOD” w silnikach (Nanite Upscaled Clusters, Deep Geometry Proxy) ogranicza liczbę trójkątów w dalekim planie, dzięki czemu zyski ze skalowania nie są marnowane na zbędną geometrię.

Taki zestaw rozwiązań pozwala branży utrzymać rosnące wymagania rozdzielczości i płynności w granicach stałego budżetu energetycznego. Gracz dostaje ostrzejszy, bardziej płynny obraz przy niższym opóźnieniu, a producent sprzętu nie musi projektować układów o mocy rzędu kilkuset watów. W praktyce oznacza to, że nadchodzące generacje gier—zarówno na konsolach stacjonarnych, jak i mobilnych—będą rosły wizualnie już nie dzięki czystej sile obliczeniowej, lecz dzięki coraz sprytniejszym algorytmom rekonstrukcji i adaptacji grafiki. 

Wszystko sprowadza się do faktu, że współczesny łańcuch renderingu został już tak ściśle spleciony z algorytmami rekonstrukcji, generowaniem klatek i inteligentnym zarządzaniem szczegółowością, że kolejne skoki jakości będą możliwe tylko dzięki dalszemu udoskonalaniu skalowania obrazu. W praktyce oznacza to, że branża jest na takie techniki skazana, bo bez nich nie da się już osiągać wyższej rozdzielczości i płynności w rozsądnym budżecie energetycznym ani utrzymać tempa rozwoju wizualnego, którego oczekują gracze.

Źródło: Opracowanie własne
Maciej Zabłocki Strona autora
Swoją przygodę z recenzowaniem gier rozpoczął w 2005 roku. Z wykształcenia dziennikarz, ale zawodowo pracujący też w marketingu. Na PPE odpowiada głównie za testy sprzętów i dział tech. Gatunkowo uwielbia RPG, strategie i wyścigi. Uzależniony od codziennego czytania newsów i oglądania konferencji.
cropper