Como funciona a reprojeção temporal?

10

O anti-aliasing temporal (e outros algoritmos temporais) funcionam combinando os pixels desse quadro com os pixels do último quadro e depois usando essas informações.

Entendo que você pode usar as matrizes de quadros atuais e últimas, juntamente com as informações do vetor de movimento, para combinar os pixels entre os quadros.

O que eu não entendo é como você sabe se o pixel reprojetado é válido ou não? Por exemplo, o pixel antigo pode agora estar oculto atrás de um objeto diferente.

É apenas por cor? Em caso afirmativo, como são tratadas as texturas animadas ou a alteração das condições de luz?

Alan Wolfe
fonte

Respostas:

4

Uma estratégia mencionada na palestra de Brian Karis sobre TAA é a fixação de bairro. A idéia geral é que, para que o pixel do quadro anterior seja válido, sua cor deve estar na faixa de cores encontrada na vizinhança (digamos, 3x3 pixels) do pixel atual desse quadro.

Isso rejeita a história de alterar as condições de luz, o que provavelmente é o que você deseja, se não deseja que sombras em movimento produzam fantasmas.

(As texturas animadas, dependendo da velocidade da animação, também podem ser manipuladas com um vetor de movimento, se você tiver um mapeamento UV previsível ou puder adivinhar razoavelmente bem.)

John Calsbeek
fonte
1
Você já ouviu falar de alguém usando o valor do buffer de profundidade como verificação de sanidade?
Alan Wolfe
@AlanWolfe Não, e acho que é porque a textura do vetor de movimento é geralmente de dois componentes: você precisaria de um componente de mudança em Z para saber qual deveria ser o valor do buffer de profundidade, e isso não é muito limitado pelo tamanho da tela . Suspeito que você possa obter melhores estratégias de rejeição adicionando mais informações por pixel.
John Calsbeek
Ah ok. Que tipo de informação você acha que seria útil adicionar? Material de tipo de parâmetro de sombreamento para saber se é o mesmo material?
Alan Wolfe
1
@AlanWolfe Não tenho muitas idéias concretas. Não sou especialista em quando a reprojeção temporal com a fixação de vizinhança se quebra e produz artefatos e quais informações seriam úteis nessas situações. Talvez transparências (sem informações sobre vetores de movimento) combinadas com iluminação de alta frequência estejam produzindo artefatos e você precise de algumas informações obscuras. Talvez o aliasing geométrico seja o seu problema e você precise de outras informações.
John Calsbeek