-
Visão geral do projeto
- Venho trabalhando há alguns anos em cenas e fases 3D executadas no navegador
- No início, eram demos individuais, mas aos poucos evoluíram para projetos mais parecidos com jogos interconectados
- Uso técnicas procedurais e generativas para implementar certos elementos
-
Shaders + Textures
- A maioria das texturas é projetada para não ter emendas, de modo que padrões não fiquem visíveis mesmo em áreas grandes
- Crio shaders personalizados em Three.JS para fornecer funcionalidades adicionais
-
Triplanar Mapping
- Permite aplicar texturas a meshes sem mapa UV, sendo útil para terrenos gerados proceduralmente
- Pode ser implementado de forma simples e aplicado a vários tipos de mesh
- Usa a função
pow()para ajustar os pesos, melhorar a qualidade e otimizar o desempenho
-
Hex Tiling
- Algoritmo que esconde a repetição de texturas sem emendas
- Foi portado como uma biblioteca independente que pode ser integrada facilmente a projetos em Three.JS
- Requer mapa UV e tem alto overhead de desempenho
-
Depth Pre-Pass
- Para melhorar o desempenho, renderiza a cena duas vezes para registrar a profundidade dos pixels
- Em cenas com muito overdraw, pode melhorar o desempenho em mais de 30%
-
AI-Powered PBR Texture Synthesis
- Usa texturas geradas por IA para elevar a qualidade da cena
- Usa DeepBump e Materialize para gerar mapas PBR
-
Volumetric Fog/Clouds
- Desenvolve shaders que adicionam nuvens ou neblina à cena
- Usa lookups de ruído com LoD para adicionar várias funcionalidades
-
Meshes + Geometry
- Pesquisa técnicas para gerar e deformar meshes em tempo de execução
- Gera proceduralmente principalmente elementos decorativos ou de fundo
-
LoD Terrain
- Gera terreno com funções de ruído e ajusta dinamicamente a resolução conforme a distância da câmera
-
Procedural Mesh Processing + Manipulation Pipeline
- Constrói um pipeline para subdividir e deformar meshes low-poly de forma procedural
- O tratamento de normais exige muito esforço
-
Future Work
- Planeja usar Constructive Solid Geometry (CSG) para unir ou recortar meshes
- Pretende portar para Rust para obter um entendimento melhor
Resumo do GN⁺
- Este artigo apresenta várias técnicas e ferramentas úteis para desenvolvimento procedural de jogos
- Técnicas de texturização como Triplanar Mapping e Hex Tiling melhoram ao mesmo tempo desempenho e qualidade
- Geração de texturas com IA e shaders de Volumetric Fog/Clouds aumentam o realismo da cena
- Trabalhos futuros como Constructive Solid Geometry têm grande potencial para deformação de meshes
- Projetos com funcionalidades semelhantes incluem o ProBuilder da Unity e o Houdini
1 comentários
Opinião do Hacker News
Já tive experiência tentando fazer geração procedural no passado
Boa geração de terreno não é simples
É um ótimo texto sobre técnicas procedurais na web
Tive experiências mistas com o uso de depth prepass
Como artista 3D, achei o artigo muito interessante