4 pontos por GN⁺ 2025-01-05 | 1 comentários | Compartilhar no WhatsApp

Voxel Space

Demonstração web: engine Voxel Space

História

  • Em 1992, a CPU era cerca de 1000 vezes mais lenta do que a atual, e a aceleração por GPU ainda era desconhecida ou cara.
  • Os jogos 3D eram calculados apenas pela CPU, e o motor de renderização renderizava polígonos de uma única cor.
  • Em 1991 foi lançado Gunship 2000 da MicroProse e, em 1992, Comanche da NovaLogic.
  • Comanche trouxe gráficos impressionantes para a época, exibindo texturas, sombreamento e sombras.

Algoritmo de renderização

  • O Comanche usa uma tecnologia chamada Voxel Space, baseada em uma ideia semelhante ao ray casting.
  • O engine Voxel Space é um engine 2.5D e não oferece toda a liberdade de um engine 3D tradicional.
Mapas de altura e de cor
  • A forma mais simples de representar terreno é usar mapas de altura e mapas de cor.
  • O jogo Comanche usa mapas de altura e mapas de cor de 1 byte com tamanho 1024 * 1024.
  • Esses mapas são periódicos e não conseguem representar estruturas complexas, mas o mapa de cor já inclui sombreamento e sombras, então não há necessidade de calcular iluminação durante a renderização.
Algoritmo básico
  • O algoritmo de renderização de um engine 3D é bastante simples.
  • O engine Voxel Space rasteriza os mapas de altura e de cor e desenha linhas verticais.
  • Limpa a tela e renderiza do fundo para frente para garantir a oclusão.
  • Determina as linhas do mapa que correspondem à distância óptica a partir do observador.
  • Rasteriza a linha e a adapta ao número de colunas da tela.
  • Obtém a altura e a cor correspondentes ao segmento de linha no mapa 2D.
  • Aplica projeção de perspectiva às coordenadas de altura.
  • Com a altura e a cor obtidas pela projeção de perspectiva, desenha linhas verticais.
Adicionando rotação
  • Com o algoritmo acima, só é possível ver para o norte.
  • Para visualizar outros ângulos, são necessárias algumas linhas de código para rotacionar as coordenadas.
Aumentando a performance
  • Há vários truques para melhorar o desempenho.
  • Em vez de renderizar do fundo para frente, é possível renderizar da frente para trás.
  • É necessário um y-buffer extra para garantir a oclusão.
  • Ajusta o nível de detalhe para renderizar mais detalhes perto e menos detalhes longe.

Links

  • Página de demonstração do projeto web
  • Introdução ao engine de terreno Voxel
  • Site pessoal

Mapa

  • Cor, altura

Licença

  • A parte de software está sob licença MIT.
  • A tecnologia Voxel Space pode ainda estar patenteada em alguns países.
  • Os mapas de cor e de altura foram obtidos por engenharia reversa do jogo Comanche e estão excluídos da licença.

1 comentários

 
GN⁺ 2025-01-05
Comentários do Hacker News
  • Sinto falta de uma era em que algoritmos originais e elegantes ainda ofereciam uma experiência meio mágica. Quando os recursos de hardware eram limitados, os desenvolvedores avançavam os jogos com novas técnicas e criatividade.

    • Hoje em dia, plataformas "fantasia" como o PICO-8 parecem mais interessantes do que os jogos repetitivos de estúdios AAA.
    • Algoritmos como o VoxelSpace mostram como renderizar terreno com poucas linhas de código.
  • O vídeo de um programa chamado mars.com parece interessante.

    • Você consegue encontrar informações sobre isso no site Pouet.
  • Esse método de renderização é legal, mas não é fácil classificá-lo como voxel porque não rende volume arbitrário. Na prática, é uma implementação limpa de um renderizador de heightmap.

  • Pode haver uma referência a discussões de 2020 ou 2017 no título. Em 2021 também houve conversa sobre o mesmo repositório.

  • Lembro de quando começei a aprender programação ter feito um programa em QBasic para gerar um heightmap de terreno e renderizá-lo em estilo isométrico. Foi uma das coisas que me fez continuar programando.

  • Eu fiz um jogo com essa técnica no Adventure Game Studio. Não está otimizado para as versões antigas do motor, mas pretendo atualizá-lo algum dia.

  • A maioria dos jogos modernos tem montanhas “vazias”, mas com esse método as montanhas parecem mais macias.

  • Lembro da primeira vez que joguei Comanche. Tinha a vibe de que aquilo era de um futuro de verdade, ou de um filme de ficção científica.

  • Projetos de renderizador por software são divertidos e ótimos para um projeto de fim de semana. Já fiz uma implementação similar no passado, mas a implementação atual é bem mais rápida e simples.

  • Quero viver numa linha do tempo alternativa em que a GPU seja baseada em voxels