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.