Por que o mapeamento de sombras é o padrão?

41

Embora eu seja um programador profissional, mal toquei no desenvolvimento de jogos. Eu tenho essa pergunta há algum tempo, e agora que estou estudando o desenvolvimento de jogos, pensei que seria um bom momento para perguntar.

Por que o mapeamento de sombras parece ser a maneira exclusiva que os jogos usam para criar sombras? Para ser franco, parece terrível. Até jogos modernos com configurações de sombra maximizadas têm sombras irregulares em blocos que são muito perturbadoras.

O Doom 3, criado há 11 anos, usou volumes de sombra que pareciam muito melhores do que qualquer implementação de mapa de sombras que eu já vi, que inclui jogos AAA lançados na mesma semana em que esta pergunta está sendo publicada. Mods de terceiros para Doom 3 até suavizaram as bordas das sombras, tornando-as ainda mais impressionantes visualmente.

Existe algum tipo de problema técnico ou limitação na implementação de coisas como volumes de sombra? Os mapas de sombras são tão fáceis de implementar que os desenvolvedores nem consideram mais nada?

A única informação que pude encontrar sobre o assunto é que os polígonos que compõem os volumes podem ser bastante grandes, tornando-se mais exigentes. Talvez os volumes-sombra tenham requisitos de sistema muito mais altos, mas se for esse o caso, como eles conseguiram usá-los em 2004?

Esta pergunta não é específica para mapeamento de sombra versus volumes de sombra. Eles são simplesmente os únicos 2 que eu já vi usados ​​em produtos completos e simplesmente não consegui encontrar muita informação sobre outras técnicas.

gnoblin
fonte
3
Apenas uma observação - o Doom 3 foi extremamente intensivo em desempenho para o seu dia, e ainda é instável, mesmo em alguns sistemas modernos (e não estou falando de GPUs integradas, mesmo que não seja realmente inapropriado aqui; claro, é mais provável devido à sua idade, mas ...). E eu já vi isso rodar em muitos computadores, onde as sombras e a iluminação simplesmente não funcionavam . Obviamente, há muitas complexidades em acertar as sombras em um jogo, e Doom 3 é um bom exemplo de quão difícil é o realismo dos gráficos em uma infinidade de configurações de computadores.
Luaan 02/09/2015
11
Doom 3 estava anos à frente de seu tempo em que o desenvolvimento começou (pelo menos, dada a escolha da API gráfica). Ele possuía vários back-ends para lidar com gerações de hardware anteriores ao Shader Model 2.0 e isso significava que cerca de 1/4 do mecanismo era quase portátil (pré-datado até o GLSL) e os 3/4 restantes são caminhos de código para extensões de hardware antigas NV e ATI que eram irrelevantes quando o jogo foi lançado. Sua escolha de volumes de sombra de estêncil foi talvez o menor de seus problemas.
Andon M. Coleman

Respostas:

48

O mapeamento de sombras e as sombras de estêncil (volumes de sombras) são definitivamente as duas grandes, como você mencionou, então vou comparar as duas. E como você apontou as deficiências mais óbvias do mapeamento de sombras e as vantagens das sombras de estêncil, farei o contrário.

Falhas na sombra do estêncil

  1. As sombras correspondem à forma da malha de fundição. Isso é muito limitante e provavelmente é o maior motivo técnico para não usar sombras de estêncil . Folhas de árvores, arbustos, cercas de arame, rasga de tecido e outros elementos comuns do jogo de projeção de sombras usam transparência alfa para definir a forma do objeto. Mas como as sombras do estêncil correspondem à malha e não estritamente às partes visíveis da textura na malha, elas não podem ser usadas para esses objetos. Por exemplo, um cacho de folhas em uma árvore geralmente será uma textura de um cacho de folhas em um quad. As sombras do estêncil só seriam capazes de mostrar a sombra do próprio quad (e isso terá problemas, já que um quad não é uma malha fechada, mas esse é um pequeno detalhe que pularemos para obter esta resposta, pois é geralmente capaz de ser contornado).
  2. Não é possível fazer sombras suaves precisas. Você apontou que Doom 3 foi modificado para permitir sombras suaves. Esta versão aqui , pelo menos, usa mapeamento de sombra para sombras suaves. Também vi técnicas de espaço na tela para suavizar sombras duras, mas são propensas a todos os tipos de problemas.
  3. Não é possível fazer sombras em objetos transparentes. Existem soluções alternativas para isso - renderizar sombras para objetos transparentes em passagens separadas e compondo-as posteriormente. Mas, além de soluções difíceis, a natureza das sombras de estêncil é tal que cada pixel na tela é , quer na sombra ou não. Esse também é o motivo de não haver sombras suaves, como mencionado anteriormente.
  4. A implementação geralmente preferida e mais robusta das sombras de estêncil, freqüentemente chamada de "Carmack's Reverse", é realmente patenteada, como Angew apontou nos comentários. (Não patenteado por Carmack; ele teve que contorná-lo para a versão de código aberto do Doom 3)

A favor do mapeamento de sombras

Além de não ter as limitações listadas especificamente para sombras de estêncil, existem algumas vantagens extras no mapeamento de sombras:

  1. Escalabilidade. Embora o mapeamento de sombras não seja barato nem perfeito ( ed: mas as sombras de estêncil também não sejam baratas ), é relativamente fácil trocar fidelidade por desempenho alterando a resolução dos mapas de sombras ou alterando a filtragem de sombras. Isso torna relativamente fácil ajustar a qualidade / desempenho das sombras para diferentes sistemas. Como você apontou, isso geralmente não é perfeito, mas muito disso depende da percepção do jogador e da resolução em que ele está sendo reproduzido (maior resolução da tela facilitará a visualização do bloqueio das sombras). mapeamento). Alguns jogos AAA (como Fracture ) fazem um trabalho incrível com o mapeamento de sombras, escolhendo os filtros certos e ajustando os botões certos, enquanto muitos apenas batem nele e dizem "bom o suficiente".
  2. Cookies (sombras texturizadas): adicione a textura de um holofote ou vitral e você poderá emular todos os tipos de fontes de luz do mundo real. A propósito, isso também é possível com sombras de estêncil, a propósito, mas envolve quase toda a configuração do mapeamento de sombras (as mesmas matrizes de projeção usadas para projetar a textura da luz nos objetos são as usadas no mapeamento de sombras).
  3. Sombras transparentes: a maioria dos jogos não tenta muito com isso, mas sombras transparentes são possíveis com o mapeamento de sombras. Não me refiro apenas a recortes alfa, como árvores e cercas, como mencionei antes, mas a sombras parcialmente transparentes, como fumaça e poeira.

Nenhuma dessas listas é exaustiva.

Portanto, enquanto suas observações sobre o mapeamento de sombras e sombras de estêncil estão corretas, as deficiências das sombras de estêncil são interruptores de exibição para muitos efeitos desejáveis, e o mapeamento de sombras tem algumas vantagens.

Jibb Smart
fonte
11
Ahhh, não considerei a maioria dessas coisas e texturas transparentes como folhas são uma questão bastante importante. Obrigado pela resposta!
Gnoblin # /
11
Não tem problema :) Alguns destes são fáceis de perder!
Jibb Smart
8
Eu diria que um problema extra com os volumes de sombra é que a passagem de profundidade não gosta da câmera estar dentro da sombra e a falha de profundidade é patenteada.
Restabeleça Monica
Bom ponto, Angew. Acrescentei isso a razões para não usar sombras de estêncil e esclarei o principal motivo para não usar sombras de estêncil como a "maior razão técnica " para não usá-las, uma vez que a questão da patente poderia, por si só, ser um obstáculo para o show.
Jibb Smart