Por que alguns jogos usam algum padrão de pontilhado em vez do alfa tradicional para transparência?

24

Recentemente, vi alguns jogos em 3D (por exemplo GTA IV:) para usar algum tipo de pontilhamento ordenado para simular transparência / alfa.

Os polígonos não são transparentes como de costume, mas renderizam uma textura pontilhada que muda gradualmente da esquerda para a direita para simular a transparência:

insira a descrição da imagem aqui

O efeito não é desagradável, mas surpreendente de ver de início (vs mistura alfa tradicional)

Exceto pelo efeito estético visual que produz, há alguma razão para alguns jogos fazerem isso (melhor desempenho, economia de largura de banda ou qualquer outra coisa em que eu não pense)?

Pesquisei na web, mas não encontrei nada sobre essa técnica.

tigrou
fonte
Provavelmente, ele veio junto com o estilo de pixel art.
MichaelHouse
@ Byte56 Estilo de pixel art? GTA IV? Hã?
Nathan Reed
@ NathanReed Heh, não no GTA IV. OP menciona vê-lo recentemente em jogos.
MichaelHouse
1
Acho a técnica mais agradável do que a mistura alfa ao desbotar objetos 3D que estão chegando muito perto do plano próximo.
Andreas

Respostas:

27

Essa é uma abordagem bastante comum à transparência em jogos que usam sombreamento adiado. A transparência adequada não funciona bem com sombreamento diferido, uma vez que apenas os dados de uma superfície (profundidade, vetor normal, cor etc.) podem ser armazenados em cada pixel, e a transparência adequada envolve várias superfícies sobrepostas em um pixel, cada uma exigindo independência iluminação.

Existem algumas maneiras pelas quais os mecanismos de jogo podem lidar com isso:

  • Use sombreamento para frente (possivelmente com um modelo de iluminação reduzido) para superfícies transparentes e sombreamento diferido para superfícies opacas. As superfícies transparentes devem ser desenhadas em um passe separado, com triagem de trás para frente.
  • Use pontilhamento, mais conhecido como pontilhado ou transparência da porta de tela, que funciona com sombreamento diferido, pois fornece apenas uma superfície por pixel. Isso funciona particularmente bem para transições de LOD, pois elas geralmente terminam em um período fixo de tempo, limitando quanto tempo o pontilhado é visível. Não funciona muito bem para, digamos, janelas de vidro de um prédio.
  • Também é possível usar pontilhado, mas aplicar um desfoque pós-processo que recombina os pixels pontilhados, fornecendo uma aproximação da transparência adequada. A Volition faz isso em Saints Row the Third (e talvez em outros jogos também), sob o nome de " iluminação inferida ". Isso pode parecer muito bom, mas o desfoque pós-processo é caro.
  • E, é claro, existem todos os métodos de transparência independentes de ordem por aí, embora eu não conheça nenhum jogo que os use. Eles são apenas para demonstrações de tecnologia até agora.

Pode-se também usar uma combinação dessas abordagens, por exemplo, sombreamento para janelas de vidro e pontilhado para transições de LOD.

Também vale a pena notar que alguns jogos usam pontilhado para sombras suaves. Esta é uma troca de desempenho; sombras mais agradáveis ​​exigem mais amostras de textura no sombreador de pixels, o que leva mais tempo, mas você pode obter resultados com boa aparência usando menos amostras e deslocando suas posições aleatoriamente. O deslocamento aleatório produz o efeito pontilhado.

Nathan Reed
fonte
eu não sabia sobre a técnica de sombreamento adiado (explicado aqui: en.wikipedia.org/wiki/Deferred_shading ). Eles também falam sobre possíveis problemas de alfa. Faz sentido agora. Obrigado pela resposta
tigrou
0

É uma simples troca de desempenho. A mistura alfa requer leitura do buffer de cores atual, enquanto esse tipo de pontilhamento é somente para gravação (ou somente para descarte, é claro).

É possível misturar essa técnica com a multisampling, que é chamada de alpha para cobertura .

sam hocevar
fonte
De que tipo de "troca de desempenho" você está falando? O Early-Z fica desativado se você usar um descarte no shader. A mistura é feita no hardware e é rápida.
Tara
Na verdade, eu apenas testei no meu mecanismo em uma cena adequada em alta resolução: ativar ou desativar a mistura para TODAS as geometrias não resultou em nenhuma diferença de desempenho. A resposta de Nathan Reed está correta, pois o pontilhamento é geralmente usado na renderização adiada.
Tara