-
Resumen del proyecto
- He trabajado durante varios años en escenas y niveles 3D que se ejecutan en el navegador
- Al principio comenzaron como demos individuales, pero poco a poco evolucionaron hacia proyectos interconectados con forma de juego
- Utilicé técnicas procedurales y generativas para implementar ciertos elementos
-
Shaders + Texturas
- La mayoría de las texturas están diseñadas para no tener costuras, de modo que no se noten patrones incluso en áreas grandes
- Creé shaders personalizados en Three.JS para aportar funcionalidad adicional
-
Triplanar Mapping
- Permite aplicar texturas a una malla sin mapas UV, lo que resulta útil para terrenos generados de forma procedural
- Puede implementarse de forma sencilla y aplicarse a distintas mallas
- Usé la función
pow()para ajustar los pesos, mejorar la calidad y optimizar el rendimiento
-
Hex Tiling
- Un algoritmo que oculta la repetición de texturas sin costuras
- Lo porté como una biblioteca independiente que puede integrarse fácilmente en proyectos de Three.JS
- Requiere mapas UV y tiene una sobrecarga de rendimiento considerable
-
Depth Pre-Pass
- Para mejorar el rendimiento, renderiza la escena dos veces y registra la profundidad de los píxeles
- Puede mejorar el rendimiento en más de 30% en escenas con mucho overdraw
-
Síntesis de texturas PBR impulsada por IA
- Usa texturas generadas por IA para elevar la calidad de la escena
- Genera mapas PBR con DeepBump y Materialize
-
Volumetric Fog/Clouds
- Desarrolló shaders para añadir nubes o niebla a la escena
- Usa búsquedas de ruido LoD para agregar distintas funciones
-
Meshes + Geometry
- Investigó técnicas para generar y deformar mallas en tiempo de ejecución
- Principalmente genera de forma procedural elementos decorativos o de fondo
-
LoD Terrain
- Genera terreno con funciones de ruido y ajusta dinámicamente la resolución según la distancia a la cámara
-
Pipeline de procesamiento y manipulación procedural de mallas
- Construyó un pipeline para subdividir y deformar proceduralmente mallas low-poly
- El tratamiento de las normales requiere mucho esfuerzo
-
Trabajo futuro
- Planea usar Constructive Solid Geometry (CSG) para fusionar o recortar mallas
- Busca portarlo a Rust para entenderlo mejor
Resumen de GN⁺
- Este artículo presenta varias técnicas y herramientas útiles para el desarrollo procedural de juegos
- Técnicas de texturizado como Triplanar Mapping y Hex Tiling mejoran al mismo tiempo el rendimiento y la calidad
- La generación de texturas con IA y los shaders de Volumetric Fog/Clouds aumentan el realismo de la escena
- Trabajos futuros como Constructive Solid Geometry tienen gran potencial para la deformación de mallas
- Proyectos con funciones similares incluyen ProBuilder de Unity y Houdini
1 comentarios
Comentario de Hacker News
En el pasado he intentado trabajar con generación procedural
La buena generación de terreno no es sencilla
Es un gran artículo sobre técnicas procedurales en la web
He tenido experiencias mixtas al usar un depth pre-pass
Como artista 3D, me pareció un artículo muy interesante