1 pontos por GN⁺ 2024-05-25 | Ainda não há comentários. | Compartilhar no WhatsApp

Voxel Displacement Renderer — Modernizando a estética retrô do 3D

Motivação estética

  • Os jogos 3D do início e meados dos anos 90 (Doom, Quake, Duke Nukem) tiveram grande impacto em termos de tecnologia e jogabilidade.
  • Recentemente, as limitações visuais desses jogos passaram a transmitir um charme retrô.
  • A geometria dos ambientes era simples e cheia de imaginação, e as texturas tinham bordas de pixels bem definidas.
  • Esse estilo é semelhante à abstração estilizada da pixel art 2D.
  • Ele vem ganhando popularidade em jogos modernos inspirados no retrô e em títulos indie 3D.

Como voxels normalmente funcionam

  • Uma malha voxel é uma grade tridimensional em que todas as células em forma de cubo estão preenchidas ou vazias.
  • Voxels grandes têm textura, enquanto voxels pequenos são de cor sólida.
  • Para criar ambientes grandes, é possível colocar toda a geometria em uma grade compartilhada ou posicionar malhas voxel independentes no mesmo espaço.
  • Se você decide construir um mundo de jogo com voxels, precisa criar geometria voxel, e a renderização e a lógica de gameplay precisam operar no nível do voxel.
  • Adicionar ou remover geometria em uma malha voxel é fácil.

Como o deslocamento normalmente funciona

  • O mapeamento de deslocamento define o quanto cada pixel de uma textura deve se expandir para dentro ou para fora da superfície de uma malha.
  • Softwares de modelagem 3D podem aplicar mapeamento de deslocamento subdividindo a malha e deslocando novos vértices.
  • Em gráficos em tempo real, ele pode ser usado junto com efeitos de sombreamento de superfície para criar detalhes geométricos finos sem alterar a forma física da malha.
  • O shell mapping permite ver o deslocamento ao longo da silhueta do objeto.

O que eu fiz — uma mistura de voxels com mapeamento de deslocamento

  • Usei malhas low poly convencionais para modelar ambientes no estilo dos jogos 3D clássicos e apliquei mapas de deslocamento para definir detalhes de superfície em escala de voxel.
  • Com uma malha triangular e informações limitadas do mapa de deslocamento, o renderizador transforma os dados geométricos a serem carregados na GPU.
  • As texturas são pré-processadas para gerar as informações necessárias durante a renderização.
  • O estado da malha e da textura é usado para renderizar geometria com deslocamento por voxel.

Criação de assets de arte e ambientes

  • É preciso criar dois tipos de assets: texturas e malhas.
  • Cada textura é composta por um mapa de albedo e um mapa de deslocamento.
  • As malhas são malhas triangulares low poly convencionais com mapeamento de textura.
  • Há restrições na estrutura da malha e no mapeamento da textura.

Vantagens dessa abordagem

  • É possível criar conteúdo usando um fluxo de trabalho familiar.
  • Como os ambientes são feitos com malhas triangulares, não é necessário escrever um motor de física ou um controlador de personagem.
  • A maior parte dos sistemas de gameplay não precisa se preocupar com os detalhes em voxel.

Planos futuros

  • Ainda há muitos recursos para adicionar ou melhorar no próprio renderizador.
  • Estou pesquisando formas de integrar objetos pequenos ou animados.
  • Pretendo melhorar a implementação de iluminação.
  • Acho que integrar essa técnica de renderização a um jogo é um caminho viável.

Opinião do GN⁺

  • Desafio técnico: combinar voxels com mapeamento de deslocamento é uma tarefa muito difícil. Isso exige bastante trabalho mecânico personalizado.
  • Praticidade: essa técnica tem grande chance de ser integrada a engines de jogo existentes. Isso permite que desenvolvedores aproveitem sistemas já prontos.
  • Apelo estético: reinterpretar de forma moderna a estética dos jogos 3D retrô pode ser atraente para muitos jogadores.
  • Considerações de desempenho: essa técnica de renderização precisa de otimização de desempenho, especialmente em renderização em tempo real.
  • Potencial futuro: essa técnica pode ser aplicada a vários gêneros de jogos e pode ser especialmente útil para desenvolvedores indie.

Ainda não há comentários.

Ainda não há comentários.