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?
fonte
Respostas:
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.
fonte
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.
fonte
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:
fonte
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
fonte
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.
fonte
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.
fonte