L'interpolazione dei fotogrammi come quella usata da SmoothVideo Project potrebbe essere un'opzione per aumentare il framerate dei giochi senza un grande impatto sulle prestazioni?


11

Il progetto SmoothVideo utilizza l'interpolazione dei fotogrammi per aumentare i fps del video da 24 a 60. I risultati sono piuttosto impressionanti . Mi chiedevo se questo potesse essere applicato e se sarebbe stato bello nei videogiochi?

Utilizza molte meno risorse rispetto al rendering di tutti i frame, quindi consentirebbe ai rig di fascia bassa di renderizzare con qualità di rig molto migliori a un certo livello di compromesso. So che non sarà così accurato e aumenterebbe leggermente la latenza di input in quanto deve rimanere sul frame più recente per essere in grado di generare e inserire quello interpolato. Non è poi così male come un fotogramma intero, dal mio ragionamento solo il ritardo sarebbe il tempo di interpolazione più metà del tempo di aggiornamento fps originale. Quindi per 30 fps sarebbe 33ms / 2 + tempo di interpolazione.

Forse questo ritardo lo renderebbe inadatto per i giochi passati in prima persona, ma dubito che sarebbe un ostacolo nei giochi più lenti.

Il ritardo si riduce a tassi di avvio più elevati, quindi penso che ne varrebbe sicuramente la pena quando si passa da 60 fps a 100 + fps, il che migliora l'esperienza sebbene sempre più marginalmente, pur essendo tassazione estrema sul sistema.


Sotto alcuni aspetti questo è già stato fatto con motion blur. La mancanza di dati di movimento derivati ​​(descritti in alcune risposte) viene risolta utilizzando i movimenti di oggetti già noti . L'unica differenza è che invece di interpolare senza problemi, i renderer effettuano diverse interpolazioni e ne creano un mix. L'interpolazione come descritta non è probabilmente utilizzata perché l'occlusione cambia e crea un risultato indesiderato.
transistor09

Risposte:


6

Un sistema di questo tipo è stato utilizzato in The Force Unleashed . Non sono a conoscenza di altri titoli che l'hanno usato però.


1
Grazie per le informazioni. Abbiamo trovato una pubblicazione su di esso: dl.acm.org/citation.cfm?id=1837047 Sembra avere successo, quindi perché non ha visto un uso più ampio?
cybrbeast

Principalmente per i motivi delineati nella risposta di Byte56: non è privo di inconvenienti e in molti casi questi svantaggi non ne valgono la pena, dato che esistono altri modi per ottenere frame rate più elevati.

1
Secondo questo articolo, usando l'interpolazione predittiva, questo metodo può effettivamente ridurre la latenza! eurogamer.net/articles/… Quindi sembra meglio in tutte le metriche. Ma qualcosa deve mancare perché penseresti che sarebbe usato ovunque se questo fosse vero.
cybrbeast

@ David: l'articolo significa che riduce la latenza apparente rispetto all'esecuzione a 30 fps, per alcuni tipi di input. Correre a 60 fps in modo nativo è ancora preferibile quando possibile (migliore latenza e nessun artefatto di interpolazione), quindi molti sviluppatori considerano il loro obiettivo di prima scelta. Quando i giochi non riescono a raggiungere i 60 fps, non è sempre abbastanza tempo o budget per creare un sistema di interpolazione per colmare le lacune - questo sistema è abbastanza complicato e, nel caso di TFU, è aiutato da alcuni aspetti della loro pipeline di rendering che non lo sono universalmente condiviso da tutti i giochi.
DMGregory

Stavo cercando di dire meglio in tutte le metriche rispetto a 30 fps inalterato, non riprodotto a 60 fps
cybrbeast

9

Sì, è possibile, ma non è privo di complicazioni.

Mentre l'interpolazione dei fotogrammi può funzionare in tempo reale sui video, non è necessariamente il caso dei videogiochi. Anche se questo sta elaborando in tempo reale sui video, il software è in grado di "guardare avanti" al frame successivo. Questa è una componente piuttosto critica dell'interpolazione. È qui che entra in gioco il problema con i giochi. Il più delle volte, il prossimo fotogramma successivo non è stato ancora reso! Quindi il software non conosce il punto successivo dell'interpolazione.

C'è sicuramente la possibilità di far girare il gioco con un frame o due dietro per dare al tuo software di interpolazione i frame con cui deve lavorare. Tuttavia, questo non funziona altrettanto bene per i media interattivi. Ora ciò che viene mostrato sullo schermo è ritardato dall'ingresso ricevuto. Questo rende le cose più difficili per l'elaborazione dell'input e per fornire una buona reattività al gioco. È come costruire un ritardo di prestazione artificiale. Inoltre, è improbabile che abbia un supporto nativo in uno dei principali motori di gioco, il che significa scrivere il tuo.


Qualche reazione a questo metodo di interpolazione più intelligente menzionato di seguito, che sostiene di prevenire un aumento della latenza? eurogamer.net/articles/…
cybrbeast

In quel caso si applica principalmente la frase finale. Non sono sicuro di quanto la loro tecnologia abbia sottratto questa funzionalità. Potrebbe aver richiesto molto più lavoro per non interrompere l'interpolazione, oppure avrebbe potuto "funzionare". Immagino che se fosse quest'ultimo, potremmo vederlo apparire in alcuni dei principali motori (se non è brevettato). Non sono sicuro che questa funzione da sola valga la pena creare e mantenere il proprio motore.
MichaelHouse

Non sono sicuro dell'affermazione che l'esecuzione di un frame dietro sia un grosso ostacolo per l'interattività. Qualsiasi gioco multiplayer che utilizza un server autorevole con interpolazione (stato del gioco) tra gli ultimi due aggiornamenti mostrerà spesso un ritardo maggiore, ma questo include alcuni dei giochi sparatutto più veloci. Inoltre non abbiamo necessariamente bisogno del prossimo frame per costruire intermedi nei giochi, perché a differenza dei video, i giochi possono generare maschere di verità e informazioni sulla velocità dello spazio dello schermo (simili agli effetti di motion blur) che possono essere estrapolati.
DMGregory

2

Sì, questo non è solo possibile, ma ora disponibile: collega il tuo PC / console di gioco a una TV che utilizza l' interpolazione di movimento . Le opinioni variano e questo è meno adatto per i giochi di contrazione come FPS a causa del ritardo di interpolazione, ma per l'upscaling di frame rate da 60 a 120Hz funziona bene.

Per quanto riguarda se questo può essere fatto nel gioco stesso, non c'è ancora abbastanza slancio, dal momento che la maggior parte dei monitor non può emettere quei frame rate elevati. I monitor da 120 + Hz per computer sono meno comuni, anche se a giudicare dall'andamento della TV, ciò potrebbe accadere presto. Avere un monitor ad alta frequenza di aggiornamento presenta vantaggi anche se il gioco non riesce a raggiungere quei frame rate: oltre alla summenzionata interpolazione di movimento basata su TV, può offrire fotogrammi più fluidi se al gioco è consentito produrre fotogrammi quando sono pronti, anziché sincronizzati su ala v-sync. Una volta che i monitor da 120 + Hz sono all'ordine del giorno, mi aspetto che gli sviluppatori di giochi riescano a mettersi al passo e iniziare a usare più trucchi, tra cui l'interpolazione del movimento, per raggiungere quei frame rate elevati.


3
La mia esperienza è stata che questi sistemi hanno un'enorme latenza di input, come 200 + ms (12+ frame a 60fps). Questo è il motivo per cui quelle TV hanno in genere una "modalità di gioco" che disabilita quella funzione.
BlueRaja - Danny Pflughoeft

0

Il ritardo tra quando l'utente fa qualcosa e quando il risultato appare sullo schermo non dovrebbe mai superare i 100 ms o l'utente potrebbe notare il ritardo.

Il monitor dell'utente potrebbe impiegare circa 30 ms per visualizzare l'immagine che riceve. Sono disponibili monitor molto più veloci, ma molti utenti medi non li hanno. Se la scheda video calcola 30 fotogrammi al secondo, sono necessari 33 ms per calcolare un fotogramma. Presumo 30 fps perché non abbiamo bisogno di interpolazione di frame se il gioco funziona già a 60 fps. Se utilizziamo il buffering triplo, questo viene raddoppiato a 66 ms. Sono 90 ms.

Penso che abbiamo bisogno di un triplo buffering affinché l'interpolazione dei frame abbia un senso. Quindi se usiamo l'interpolazione del frame oltre a ciò per ottenere 60 fps, aumentiamo il ritardo di un frame da 60Hz, che è un altro 17 ms + tempo di interpolazione X, portandoci a 107 ms + X. Il problema non è l'interpolazione come tale, ma il fatto che siamo già vicini al punto in cui la latenza è evidente prima di introdurre l'interpolazione.

Probabilmente andrebbe bene per un gioco che è principalmente un film virtuale, ma in un FPS gli utenti noterebbero che qualcosa non va con l'obiettivo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.