LOD em jogos modernos [fechado]

14

Atualmente, estou trabalhando na minha tese de mestrado sobre LOD e simplificação de malha, e tenho lido muitos artigos e artigos acadêmicos sobre o assunto. No entanto, não consigo encontrar informações suficientes sobre como o LOD está sendo usado nos jogos modernos. Eu sei que muitos jogos usam algum tipo de LOD dinâmico para terrenos, mas e em outros lugares?

O Nível de detalhe dos gráficos 3D, por exemplo, indica que o LOD discreto (onde os artistas preparam vários modelos com antecedência) é amplamente usado devido à sobrecarga de desempenho do LOD contínuo. Esse livro foi publicado em 2002, no entanto, e estou me perguntando se as coisas estão diferentes agora. Houve alguma pesquisa na realização de LOD dinâmico usando o shader de geometria ( este artigo, por exemplo, com sua implementação no ShaderX6), isso seria usado em um jogo moderno?

Para resumir, minha pergunta é sobre o estado de LOD nos videogames modernos, quais algoritmos são usados ​​e por quê? Em particular, a simplificação contínua dependente da visualização é usada ou a sobrecarga do tempo de execução torna o uso de modelos discretos com mistura adequada e impostores uma solução mais atraente? Se modelos discretos são usados, é utilizado um algoritmo (por exemplo, agrupamento de vértices ) para gerá-los offline, os artistas criam manualmente os modelos ou talvez seja usada uma combinação dos dois métodos?

Firas Assaad
fonte
Eu sugiro adicionar uma tag 'rendering', pois você tem interesse apenas em gráficos LOD, enquanto LOD também pode ser aplicado à física, IA e qualquer outra área em que a importância possa ser reduzida com base na distância a algo ou desempenho.
Kaj
@Kaj: Bom ponto. Estou falando de simplificação de malha poligonal em particular.
Firas Assaad
Ah, parece que editamos ao mesmo tempo (esqueci que poderia adicionar tags, sinta-se à vontade para remover a programação gráfica: o \). Tentarei encontrar uma resposta mais tarde - estou em crise hoje.
Kaj

Respostas:

9

Por enquanto, parece que LOD discreto ainda é o preferido, mas resta saber se isso mudará com a próxima geração de hardware de console.

Pelo que vale a pena, Tom Forsyth escreveu muito sobre LOD contínuo, que ele chama de "malha progressiva". A Game Programming Gems 2 pretende ter um desses artigos, mas parece estar refletido aqui .

Acredito que um dos jogos de Tom seja enviado usando uma malha progressiva no hardware do console de última geração. Eu não acho que seja a sobrecarga de computação que as pessoas estão preocupadas com o LOD contínuo. Eu acho que é mais fácil LOD discreto. O LOD contínuo faz um levantamento mais pesado no oleoduto das ferramentas e não possui vantagens claras suficientes.

Quanto à geração de LODs discretos, usamos uma combinação de ferramentas automáticas e criação de artistas. O DirectX SDK vem com algumas coisas para reduzir automaticamente a geometria e acredito que usamos isso como primeira passagem, se a qualidade não for boa o suficiente, os artistas geram os LODs discretos manualmente ou usando ferramentas adicionais no Maya.

Dan Olson
fonte
1
Eu acho que o Messias usou malhas progressivas extensivamente, parece que há eras atrás o mundo estava cheio disso. Mas eu concordo, a vida estática ainda parece prevalecer para onde olho. É difícil decidir por algoritmos quais detalhes são essenciais para preservar, embora muitos artigos da SigGraph tenham sido escritos sobre isso, como tenho certeza de que a OP sabe. Como um aparte, um método atraente que eu sempre me lembrei foi o capítulo 'verdadeiro impostor' em uma das gemas de Programação de Jogos que acredito ... onde eles usam impostores com mapeamento de oclusão de parralaxe. Eu sei que eu já vi mais artigos escritos ao longo da mesma metodologia (Fabio Policarpo talvez?)
Kaj
1
Outro ataque ao LOD contínuo é a quantidade fixa de memória disponível no ambiente do console. Objetos discretos permitem que você jogue fora os modelos de alta resolução e todas as texturas / shaders dependentes e troque por um modelo de custo muito mais baixo com um shader simples e uma textura menor pré-combinada. Nos títulos de mundo aberto, a luta por quais dados preenchem a memória disponível limitada geralmente é uma luta maior do que os ciclos de CPU / GPU.
wkerslake
6
  • Comandante Supremo (1 e 2) - este RTS orgulha-se de que você pode diminuir o zoom suavemente até ver um mapa do campo de batalha e, em seguida, aumentar o zoom em uma área e gerenciá-lo. Ele usa LOD muito bem quando você aumenta e diminui o zoom para não sobrecarregar a placa gráfica, e em um certo nível de redução de zoom as malhas são substituídas por imagens 2D de que tipo de unidade são, para que o mapa do campo de batalha possa claramente mostre onde estão as coisas (uma vez que obviamente uma malha 3D com poucos detalhes a 20.000 pés seria indistinguível). Você pode ver claramente o efeito de substituição 2D nos primeiros segundos deste vídeo .
  • RollerCoaster Tycoon 3 - Semelhante ao Supreme Commander, este jogo permite ampliar e reduzir à vontade, visualizando todo o parque temático ou gerenciando uma única montanha-russa. Ele não usa substituição de imagem 2D, mas devido ao LOD, tudo permanece suave; não apenas as grandes malhas reduzem a qualidade, mas pequenos detalhes, como as pessoas andando por aí, desaparecem quando você diminui o zoom o suficiente.
  • Legend of Zelda: Wind Waker - Enquanto você navega em mar aberto, pode olhar ao redor e ver as ilhas mais próximas a você; elas são apenas silhuetas das ilhas, no entanto, e os modelos 3D reais não são carregados até você se aproximar de uma ilha. Outras características da ilha também são carregadas, como inimigos e tufões nas águas próximas; infelizmente, o jogador pode vê-los "surgir" à medida que se aproxima, mas no geral é uma boa técnica que impede sobrecarregar o hardware do Nintendo GameCube, dando ao jogador uma sensação bastante precisa de navegar pelos mares e ser capaz de distinguir ilhas de referência em a distancia.
  • Elder Scrolls IV: Oblivion - não jogo há muito tempo, mas sei que ele usa modelos em silhueta ou detalhes muito baixos para estruturas de marcos distantes, como a torre alta de uma das cidades e montanhas distantes .

O LOD não é usado apenas para terrenos, mas também para silhuetas de estruturas distantes e para vistas de olho de águia de jogos de estratégia / simulação. Não conheço os detalhes dos algoritmos e acho que essa é a parte principal da sua pergunta, mas queria dar alguns exemplos do estado de LOD nos videogames modernos.

Ricket
fonte
4

Uma abordagem moderna para o LOD contínuo é o mosaico de hardware. O mosaico de hardware foi implementado no DirectX 11 e fornece essencialmente subdivisão programável de superfícies. Como isso é implementado na GPU, permite detalhes muito mais altos do que os fornecidos pelo mosaico gerado pela CPU. Ao subdividir superfícies com base na distância da vista, por exemplo, você pode fornecer uma forma de LOD contínuo.

O mosaico de hardware é um recurso muito novo das GPUs e não há muitos jogos que o utilizam. Eu suspeito que os jogos que o usam principalmente como um drop-in para mapeamento de resposta - em vez de mapa de resposta no pixel shader, você pode modificar a geometria real. Provavelmente, há muito espaço para pesquisas adicionais sobre simplificação e aprimoramento de malha usando o mosaico de hardware.

Mais alguns recursos:

thekidder
fonte
Até o momento, considero mais uma tecnologia de demonstração do que prática, já que você realmente exclui um grande número de públicos-alvo. Mas sim, os procedimentos podem ser o caminho a seguir de alguma forma ou forma, apenas não tendo certeza da implementação atual da MS. O tempo vai dizer.
Kaj
4

Aqui está uma sugestão alternativa, apenas para mantê-la interessante. A decomposição convexa pode criar geometrias aproximadas rapidamente, e geralmente é para malhas de colisão. Essas malhas funcionam bem como LOD e é plausível como uma dizimação em tempo real para acelerar um pipeline.

http://codesuppository.blogspot.com/2009/11/convex-decomposition-library-now.html

underscorediscovery
fonte
3

LOD é sobre tentar manter a quantidade de processamento constante ao longo do tempo. O nível hierárquico de detalhes é a única maneira de fazer isso em cenas com detalhes consideráveis. Se você estiver próximo o suficiente de um objeto, ele se decompõe em vários objetos. Esse LOD recursivo fornece não apenas um mecanismo simples para lidar com os pontos de transição para alternar em novos níveis de detalhes, mas também permite que a contagem de chamadas de renderização permaneça a mesma, não importa o quão longe / perto você esteja dos objetos do mundo.

Está tudo muito bem com ótimos LODs para suas malhas e texturas, mas em pelo menos um jogo que eu entreguei no PS2, a maneira como economizei tempo foi juntar toda a folhagem dos setores em um único sorteio. Essa chamada de desenho maior demorou quase 90% menos tempo do que renderizar todas as variantes de baixo nível, mesmo com transições de material cuidadosamente solicitadas e renderização em lote de cada tipo de malha. Portanto, considere o LOD com cuidado. Não se trata apenas de objetos individuais. É sobre toda a fase de renderização.

Richard Fabian
fonte
1

Outro assunto a ser discutido em seu artigo (embora uma tese inteira possa ser facilmente escrita apenas sobre esse assunto) é a geração processual de terrenos.

Muitos projetos modernos estão começando a usar a geração processual de terrenos em tempo real para produzir grandes extensões de terreno (Outerra, Infinity (INovae), para citar alguns dos mais importantes). LOD discreto simplesmente não é uma opção, devido à natureza processual das malhas.

Esses terrenos costumam usar estruturas de particionamento hierárquicas, como quadríceps, para determinar o LOD e gerar uma malha da resolução apropriada com base na profundidade do nó da árvore.

Sem o uso de LOD contínuo, esses projetos impressionantes seriam simplesmente impossíveis.

homem-peixe
fonte