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.
źródło
Odpowiedzi:
System wzdłuż tych linii został użyty w The Force Unleashed . Nie znam jednak innych tytułów, które z niego korzystały.
źródło
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.
źródło
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.
źródło
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.
źródło