Czy interpolacja klatek, taka jak zastosowana w SmoothVideo Project, może być opcją do zwiększenia liczby klatek na sekundę gier bez tak dużej wydajności?

11

SmoothVideo Project wykorzystuje interpolację klatek, aby zwiększyć liczbę klatek na sekundę z 24 do 60. Wyniki są imponujące . Zastanawiałem się, czy można to zastosować i czy dobrze by to wyglądało w grach wideo?

Zużywa znacznie mniej zasobów niż renderowanie wszystkich ramek, więc pozwoliłby renderować urządzenia z niższej półki w jakości znacznie lepszych zestawów na pewnym poziomie kompromisu. Wiem, że nie będzie tak dokładny i nieznacznie zwiększy opóźnienie wejściowe, ponieważ musi trzymać najnowszą ramkę, aby móc wygenerować i wstawić interpolowaną. Nie jest to jednak tak złe jak pełna klatka, z mojego rozumowania, tylko opóźnienie byłoby czasem interpolacji plus połowa oryginalnego czasu odświeżania fps. Tak więc dla 30 fps będzie to 33ms / 2 + czas interpolacji.

Być może to opóźnienie nie nadaje się do szybkich gier pierwszoosobowych, ale wątpię, czy byłoby to przeszkodą w wolniejszych grach.

Opóźnienie staje się niższe przy wyższych stawkach początkowych, więc pomyślałbym, że z pewnością warto byłoby przejść od 60 klatek na sekundę do 100 + klatek na sekundę, co poprawia wrażenia, choć coraz bardziej marginalne, przy jednoczesnym ekstremalnym obciążeniu systemu.

cybrbeast
źródło
W pewnym sensie dzieje się to już przy rozmyciu ruchu. Brak pochodnych danych o ruchu (opisanych w niektórych odpowiedziach) rozwiązuje się za pomocą ruchów znanych obiektów. Jedyna różnica polega na tym, że zamiast płynnej interpolacji renderery dokonują kilku interpolacji i tworzą ich mieszankę. Opisana interpolacja prawdopodobnie nie jest używana, ponieważ zmiany okluzji ulegają zmianie i powoduje niepożądany wynik.
tranzystor09

Odpowiedzi:

6

System wzdłuż tych linii został użyty w The Force Unleashed . Nie znam jednak innych tytułów, które z niego korzystały.

DMGregory
źródło
1
Dzięki za informację. Znalazłem na nim publikację: dl.acm.org/citation.cfm?id=1837047 Wygląda na udaną, więc dlaczego nie znalazła szerszego zastosowania?
cybrbeast
Głównie z powodów przedstawionych w odpowiedzi Byte56: nie jest to pozbawione wad i w wielu przypadkach te wady nie są tego warte, biorąc pod uwagę, że istnieją również inne sposoby osiągnięcia wyższych częstotliwości odświeżania.
1
Zgodnie z tym artykułem, stosując interpolację predykcyjną, ta metoda może faktycznie zmniejszyć opóźnienie! eurogamer.net/articles/… Tak więc wydaje się lepszy we wszystkich metrykach. Coś jednak musi brakować, ponieważ można by pomyśleć, że byłoby to stosowane wszędzie, gdyby to była prawda.
cybrbeast
@David: artykuł oznacza, że ​​zmniejsza pozorne opóźnienia w porównaniu z uruchomieniem przy 30 fps, dla niektórych typów danych wejściowych. Natywna praca z prędkością 60 kl./s jest nadal lepsza, gdy jest to wykonalne (lepsze opóźnienie i brak artefaktów interpolacji), więc wielu programistów uważa, że ​​jest to cel pierwszego wyboru. Gdy gry nie osiągają 60 klatek na sekundę, nie zawsze ma wystarczająco dużo czasu lub budżetu, aby napisać system interpolacji, aby wyrównać luki - ten system jest dość skomplikowany, aw przypadku TFU jest wspomagany przez niektóre aspekty ich potoku renderowania, które nie są powszechnie udostępniane przez wszystkie gry.
DMGregory
Próbowałem powiedzieć lepiej we wszystkich metrykach w porównaniu do 30 klatek na sekundę bez
poprawy
9

Tak, jest to możliwe, ale nie jest bez komplikacji.

Podczas gdy interpolacja klatek może działać w czasie rzeczywistym na filmach, niekoniecznie tak jest w przypadku gier wideo. Mimo że wideo przetwarza w czasie rzeczywistym, oprogramowanie jest w stanie „patrzeć przed siebie” do następnej klatki. Jest to dość krytyczny element interpolacji. W tym przypadku problem wchodzi w grę. Przez większość czasu następna następna klatka nie była jeszcze renderowana! Więc oprogramowanie nie zna następnego punktu interpolacji.

Z pewnością istnieje możliwość uruchomienia gry o jedną lub dwie klatki z tyłu, aby dać Twojemu oprogramowaniu do interpolacji klatki, z którymi musi współpracować. Nie działa to jednak tak dobrze w przypadku interaktywnych mediów. Teraz to, co jest wyświetlane na ekranie, jest opóźnione w stosunku do odbieranego wejścia. Utrudnia to przetwarzanie danych wejściowych i zapewnia dobrą reakcję na grę. To jak budowanie w sztucznym opóźnieniu wydajności. Ponadto jest mało prawdopodobne, aby natywne wsparcie miało miejsce w żadnym z głównych silników gier, co oznacza pisanie własnego.

MichaelHouse
źródło
Jakakolwiek reakcja na tę inteligentniejszą metodę interpolacji wymienioną poniżej, która twierdzi, że zapobiega jakimkolwiek wzrostom opóźnień? eurogamer.net/articles/…
cybrbeast
W takim przypadku zastosowanie ma przede wszystkim ostatnie zdanie. Nie jestem pewien, jak bardzo ich technologia wyodrębniła tę funkcję. Być może zajęło to znacznie więcej pracy, aby nie przerwać interpolacji, lub mogło „po prostu zadziałać”. Wyobrażam sobie, że gdyby to był ten ostatni, moglibyśmy zobaczyć, jak pokazuje się w niektórych głównych silnikach (jeśli nie jest opatentowany). Nie jestem pewien, czy ta funkcja jest warta stworzenia i utrzymania własnego silnika.
MichaelHouse
Niepewność co do twierdzenia, że ​​przekroczenie ramy jest główną przeszkodą dla interaktywności. Wszelkie gry wieloosobowe korzystające z autorytatywnej interpolacji serwera w / (stan gry) między dwiema ostatnimi aktualizacjami często wykazują większe opóźnienie, ale obejmuje to niektóre z najszybszych strzelanek. Niekoniecznie potrzebujemy też następnej klatki do tworzenia półproduktów w grach, ponieważ w przeciwieństwie do wideo, gry mogą generować prawdziwe maski obiektów i informacje o prędkości przestrzeni ekranu (podobne do efektów rozmycia w ruchu), które można ekstrapolować.
DMGregory
2

Tak, jest to nie tylko możliwe, ale już dostępne: podłącz komputer / konsolę do gier do telewizora z interpolacją ruchu . Opinie są różne, a to jest mniej odpowiednie dla gier typu twitch, takich jak FPS, ze względu na opóźnienie interpolacji, ale w przypadku zwiększania częstotliwości klatek z 60 do 120 Hz działa dobrze.

Jeśli chodzi o to, czy można to zrobić w samej grze, nie ma jeszcze wystarczającego impulsu, ponieważ większość monitorów nie jest w stanie wysyłać tak wysokich częstotliwości klatek. Monitory 120 + Hz dla komputerów są mniej powszechne, choć sądząc po tym, jak działają telewizory, może się to wkrótce wydarzyć. Posiadanie monitora o wysokiej częstotliwości odświeżania ma zalety, nawet jeśli gra nie jest w stanie osiągnąć tych częstotliwości: oprócz wspomnianej wyżej interpolacji ruchu opartej na telewizji, może oferować płynniejsze klatki, jeśli gra może wysyłać klatki tak, jak są gotowe, zamiast synchronizacji w górę ala v-sync. Gdy monitory 120 + Hz są powszechne, spodziewam się, że twórcy gier nadrobią zaległości i zaczną używać więcej sztuczek, w tym interpolacji ruchu, aby osiągnąć te wysokie częstotliwości klatek.

congusbongus
źródło
3
Z mojego doświadczenia wynika, że ​​systemy te mają ogromne opóźnienia wejściowe, na przykład 200+ ms (12+ klatek przy 60 fps). Jest to powód, dla którego te telewizory zazwyczaj mają „tryb gier”, który wyłącza tę funkcję.
BlueRaja - Danny Pflughoeft
0

Opóźnienie między momentem, w którym użytkownik coś robi, a momentem pojawienia się wyniku na ekranie, nigdy nie powinno przekraczać 100 ms lub użytkownik może zauważyć opóźnienie.

Monitor użytkownika może potrwać około 30 ms, aby wyświetlić otrzymany obraz. Dostępne są znacznie szybsze monitory, ale wielu przeciętnych użytkowników ich nie ma. Jeśli karta graficzna oblicza 30 klatek na sekundę, obliczenie klatki zajmuje 33 ms. Zakładam 30 fps, ponieważ nie potrzebujemy interpolacji klatek, jeśli gra działa już przy 60 fps. Jeśli użyjemy potrójnego buforowania, zostanie ono podwojone do 66 ms. To 90 ms.

Myślę, że potrzebujemy potrójnego buforowania dla interpolacji klatek, aby mieć sens. Jeśli więc użyjemy interpolacji ramek, aby uzyskać 60 fps, zwiększymy opóźnienie o jedną ramkę 60 Hz, co stanowi kolejne 17 ms + czas interpolacji X, doprowadzając nas do 107 ms + X. Problemem nie jest interpolacja, ponieważ takie, ale fakt, że jesteśmy już blisko punktu, w którym opóźnienie jest zauważalne przed wprowadzeniem interpolacji.

Prawdopodobnie byłoby dobrze w przypadku gry, która jest w większości wirtualnym filmem, ale w FPS użytkownicy zauważyliby, że coś jest nie tak z celowaniem.

Piotr
źródło