A interpolação de quadros, como a usada pelo SmoothVideo Project, poderia ser uma opção para aumentar a taxa de quadros dos jogos sem um grande impacto no desempenho?

11

O Projeto SmoothVideo usa interpolação de quadros para aumentar os qps do vídeo de 24 para 60. Os resultados são impressionantes . Fiquei me perguntando se isso poderia ser aplicado, e se ficaria bem em videogames?

Ele usa muito menos recursos do que renderizar todos os quadros, de modo a permitir que plataformas de extremidade inferior renderizem com a qualidade de plataformas muito melhores em algum nível de comprometimento. Sei que não será tão preciso e aumentaria levemente a latência de entrada, pois precisa se apegar ao novo quadro para poder gerar e inserir o interpolado. Não é tão ruim quanto um quadro completo, pelo meu raciocínio, apenas o atraso seria o tempo de interpolação mais metade do tempo original de atualização de fps. Então, por 30 fps, seria 33ms / 2 + tempo de interpolação.

Talvez esse atraso o torne inadequado para jogos anteriores em primeira pessoa, mas duvido que seja um obstáculo para jogos mais lentos.

O atraso fica menor com taxas de início mais altas, então eu acho que certamente valeria a pena passar de 60fps para 100 + fps, o que melhora a experiência, embora cada vez mais marginalmente, ao mesmo tempo em que é extremamente exigente no sistema.

cybrbeast
fonte
De alguma forma, isso já está sendo feito com desfoque de movimento. A falta de dados de movimento derivados (descritos em algumas respostas) é resolvida usando movimentos de objetos já conhecidos . A única diferença é que, em vez de interpolar suavemente, os renderizadores fazem várias interpolações e criam uma mistura delas. A interpolação como você descreveu provavelmente não é usada porque a oclusão muda e cria um resultado indesejável.
transistor09

Respostas:

6

Um sistema nesse sentido foi usado em The Force Unleashed . Eu não estou ciente de outros títulos que o usaram.

DMGregory
fonte
1
Obrigado pela informação. Encontrei uma publicação: dl.acm.org/citation.cfm?id=1837047 Parece bem-sucedida, então por que ela não tem uso mais amplo?
18750 cybrbeast
Principalmente pelas razões descritas na resposta do Byte56: não há desvantagens e, em muitos casos, essas desvantagens não valem a pena, uma vez que existem outras maneiras de obter taxas de quadros mais altas também.
1
De acordo com este artigo, usando a interpolação preditiva, esse método pode realmente reduzir a latência! eurogamer.net/articles/… Portanto, parece melhor em todas as métricas. Mas algo deve estar faltando, como você pensaria que seria usado em qualquer lugar, se isso fosse verdade.
18718 cybrbeast
@ David: o artigo significa que reduz a latência aparente em comparação com a execução a 30 qps, para certos tipos de entrada. Rodar a 60 qps nativamente ainda é preferível quando possível (melhor latência e sem artefatos de interpolação), muitos desenvolvedores consideram esse o seu alvo de primeira escolha. Quando os jogos não atingem 60 fps, nem sempre há tempo ou orçamento suficiente para criar um sistema de interpolação para diminuir as lacunas - esse sistema é bastante complicado e, no caso do TFU, é auxiliado por algumas facetas de seu pipeline de renderização que não são universalmente compartilhado por todos os jogos.
DMGregory
Eu estava tentando dizer melhor em todas as métricas em comparação com 30 fps não melhorada, 60fps não prestados
cybrbeast
9

Sim, é possível, mas não é sem suas complicações.

Embora a interpolação de quadros possa funcionar em tempo real nos vídeos, isso não é necessariamente o caso dos videogames. Mesmo processando vídeos em tempo real, o software é capaz de "olhar adiante" para o próximo quadro. Este é um componente bastante crítico da interpolação. É aqui que o problema entra em jogo com os jogos. Na maioria das vezes, o próximo quadro ainda não foi renderizado! Portanto, o software não sabe o próximo ponto na interpolação.

Certamente, há a possibilidade de rodar o jogo um ou dois quadros atrás, a fim de fornecer ao seu software de interpolação os quadros com os quais ele precisa trabalhar. No entanto, isso não funciona tão bem para mídias interativas. Agora, o que está sendo mostrado na tela está atrasado com a entrada recebida. Isso torna as coisas mais complicadas para processar entradas e fornecer uma boa capacidade de resposta ao jogo. É como construir um atraso de desempenho artificial. Além disso, é improvável que tenha suporte nativo em qualquer um dos principais mecanismos de jogos, o que significa escrever o seu próprio.

MichaelHouse
fonte
Alguma reação a esse método de interpolação mais inteligente mencionado abaixo, que afirma impedir qualquer aumento na latência? eurogamer.net/articles/…
cybrbeast
Nesse caso, é principalmente a frase final que se aplica. Não tenho certeza de quanto a tecnologia deles abstraiu esse recurso. Pode ter sido necessário muito mais trabalho para não interromper a interpolação, ou poderia ter "apenas funcionado". Eu imagino que se fosse o último, poderíamos vê-lo aparecer em alguns dos principais motores (se não for patenteado). Não tenho certeza se esse recurso vale a pena criar e manter seu próprio mecanismo.
MichaelHouse
Não tem certeza da alegação de que correr atrás de um quadro é um grande obstáculo à interatividade. Qualquer jogo multiplayer usando um servidor autoritário com interpolação (estado do jogo) entre as duas últimas atualizações geralmente mostra um atraso maior, mas isso inclui alguns dos jogos de tiro em ritmo mais rápido. Também não precisamos necessariamente do próximo quadro para construir intermediários nos jogos, porque, diferentemente do vídeo, os jogos podem gerar máscaras de objetos reais e informações de velocidade do espaço na tela (semelhantes aos efeitos de desfoque de movimento) que podem ser extrapoladas.
DMGregory
2

Sim, isso não é apenas possível, mas disponível agora: conecte o PC / console do jogo a uma TV que usa interpolação de movimento . As opiniões variam, e isso é menos adequado para jogos como o FPS devido ao atraso na interpolação, mas para aumentar as taxas de quadros de 60 a 120Hz, funciona bem.

Quanto a se isso pode ser feito no próprio jogo, ainda não há ímpeto suficiente, pois a maioria dos monitores não consegue produzir essas altas taxas de quadros. Os monitores de 120 + Hz para computadores são menos comuns, embora, a julgar pelo andamento das TVs, isso possa acontecer em breve. Ter um monitor com alta taxa de atualização tem vantagens mesmo que o jogo não atinja essas taxas de quadros: além da interpolação de movimento baseada na TV acima mencionada, ele pode oferecer quadros mais suaves se o jogo puder gerar quadros como estão prontos, em vez de sincronizados até ala v-sync. Uma vez que os monitores de 120 Hz são comuns, espero que os desenvolvedores de jogos se atualizem e comecem a usar mais truques, incluindo interpolação de movimento, para atingir essas altas taxas de quadros.

congusbongus
fonte
3
Minha experiência foi que esses sistemas têm uma latência de entrada tremenda , como 200 + ms (mais de 12 quadros a 60fps). Essa é a razão pela qual as TVs geralmente têm um "modo de jogo" que desativa esse recurso.
BlueRaja - Danny Pflughoeft
0

O atraso entre quando o usuário faz alguma coisa e quando o resultado aparece na tela nunca deve exceder 100 ms ou o usuário pode perceber o atraso.

O monitor do usuário pode demorar cerca de 30 ms para exibir a imagem que recebe. Monitores muito mais rápidos estão disponíveis, mas muitos usuários comuns não os possuem. Se a placa de vídeo calcular 30 quadros por segundo, são necessários 33 ms para calcular um quadro. Eu assumo 30 qps porque não precisamos de interpolação de quadros se o jogo já roda a 60 qps. Se usarmos o buffer triplo, esse número será dobrado para 66 ms. Isso é 90 ms.

Eu acho que precisamos de buffer triplo para a interpolação de quadros para fazer sentido. Portanto, se usarmos a interpolação de quadros acima disso para obter 60 qps, aumentamos o atraso em um quadro de 60Hz, que é outro 17 ms + tempo de interpolação X, levando-nos a 107 ms + X. O problema não é a interpolação, pois isso, mas o fato de já estarmos perto do ponto em que a latência é perceptível antes de introduzirmos a interpolação.

Provavelmente seria bom para um jogo que é principalmente um filme virtual, mas em um FPS os usuários notariam que algo está errado com o objetivo.

Pedro
fonte