Quais são os usos da rasterização de software em mecanismos de jogos modernos?

9

Estou fazendo um curso de computação gráfica neste trimestre. Um de nosso projeto de laboratório é sobre rasterização de software.

Agora, estou planejando a proposta do projeto e pensando em como torná-la útil para outras pessoas no desenvolvimento de jogos contemporâneos.

Após uma breve pesquisa, aprendi uma técnica chamada Software Oclusion Culling. Faz rasterização de software em buffers de várias resoluções. E podemos consultar a oclusão usando os buffers z hierárquicos.

Minha pergunta : Quais são os usos da rasterização de software em mecanismos de jogos modernos , além do Software Oclusion Culling?

TheBusyTypist
fonte

Respostas:

4

Que eu saiba, Software Oclusion Culling (que você já mencionou), é praticamente a única coisa para a qual um rasterizador de software ainda seria usado. A Procworld utiliza uma técnica semelhante para exibir seus enormes ambientes de voxel.

A maioria dos outros métodos de seleção, como o frustum culling, funciona na CPU, mas, para ficar com o exemplo, o teste contra o frustum acontece no nível do objeto, provavelmente com uma caixa delimitadora alinhada ao eixo (AABB). Esse teste de interseção é bem mais simples do que usar um rasterizador de software completo.

Em certos casos, a rasterização de software pode ser usada para a seleção de objetos pelo mouse. Nos motores de jogos, isso geralmente é resolvido usando um mecanismo de física e colisão de raios-triângulo com uma malha simplificada.

Com a CPU ociosa enquanto aguarda a GPU em aplicativos 3D interativos modernos, pode-se pensar que pode ser benéfico usar esses ciclos ociosos para renderizar na CPU usando um rasterizador de software. O problema aqui, além da renderização ficar terrivelmente complexa e complicada, geralmente será a largura de banda. As imagens renderizadas na CPU precisam ser transferidas para a GPU antes de serem exibidas, o que pode cancelar o benefício.

David Kuri
fonte
0

Jogos com o conceito de "nevoeiro de guerra" geralmente têm uma grade de visibilidade para definir o estado do nevoeiro de guerra em cada local. Às vezes, a rasterização é usada para modificar o estado de neblina da guerra para formas específicas na grade.

Por exemplo, usando uma habilidade que revele um círculo do mapa com um raio específico, ou talvez algo que revele um quadrado.

Não estritamente relacionado a gráficos, mas definitivamente um uso de rasterização em jogos modernos, e uma técnica usada nos RTSs.

Outros dados baseados em grade nos jogos podem usar a rasterização para situações semelhantes.

Alan Wolfe
fonte
-2

A rasterização é um tópico enorme com muitas partes e eu não sou programador de mecanismo, mas farei o possível para fornecer algum tipo de visão geral (isso estará longe de ser uma lista completa!).

Algumas coisas básicas e de baixo nível incluem:

  • Seleção frustrada: joga fora tudo que está fora do frustrum da câmera (pense nisso como a área de visualização da câmera).
  • Seleção da face posterior: jogue fora todos os polígonos que não estão direcionados para a câmera.
  • Algoritmo do pintor: desenhe objetos na ordem em que estão distantes da câmera, comece com objetos distantes e depois vá para a câmera.

Coisas mais avançadas usadas em jogos incluem coisas como:

  • Tesselação : na verdade, muito parecido com o LOD (veja abaixo), mas agora as versões mais recentes do DirectX introduziram o tesselação, que fornece divisão ou redução automática de malha. Isso dá um enorme impulso no desempenho gráfico, porque você pode obter polys se precisar deles e se livrar deles se não quiser mais.
  • LOD : Um sistema de nível de detalhe substitui a malha de um objeto com base na distância entre o objeto e a câmera. por exemplo, seu personagem tem três malhas: uma com 10.000, uma com 5.000 e outra com 1.000 polis. se você ficar bem na frente dele, a malha de alta resolução (10.000 polys) é mostrada; se você se afastar, depois de 100m, o personagem é substituído pela malha média e após outros 100m é substituído pela malha de baixa resolução. Em vez de substituir a malha, você pode reduzi-la, mas isso seria mais complexo de codificar.
  • partições de espaço binário : o espaço é dividido em dois volumes. isso será repetido até que você atinja seu objetivo, por exemplo, até que o espaço contenha apenas polys que devem ser desenhados na tela
  • Portais e células : (também conhecido como portal abate) é usado em cenas internas e / ou atiradores em primeira pessoa. A cena é dividida em células (por exemplo, salas de um edifício) que são conectadas através de portais (por exemplo, portas). você pode definir portais para serem abertos e fechados.

Supondo que você tenha um entendimento básico do pipeline de gráficos, tentei me concentrar na rasterização. você também pode dar uma olhada em iluminação e sombreamento ou outras coisas.

Isso inclui apenas algumas tecnologias possíveis para incluir no seu projeto. Como não tenho reputação suficiente no stackexchange, não posso fornecer muitos links, mas você encontrará todas essas coisas no google :)

Micha Grandel
fonte
2
A questão é sobre rasterização de software (leia-se: CPU). Algumas das informações que você forneceu são sobre rasterização em geral, algumas técnicas - no meu livro - não têm nada a ver com rasterização. Você poderia esclarecer em sua resposta como as técnicas usam ou se beneficiam da rasterização de software?
David Kuri