Por qué es importante: En un mundo dominado por potentes GPU de Nvidia y AMD, un programador autodidacta está demostrando que es posible crear impresionantes gráficos 3D desde cero. Alex Fish ha lanzado un motor 3D notablemente fluido que funciona con una pequeña GPU casera impulsada por un microcontrolador Espressif ESP32-S3.
Esta no es la primera incursión de Fish en los gráficos caseros. Inicialmente desarrolló el motor «Pescado» en WebGL para navegadores web y luego lo portó a OpenGL para tarjetas gráficas de PC. Sin embargo, lograr una representación 3D fluida en un microcontrolador de bajo consumo es un salto significativo.
El motor de Fish, denominado «ESPescado» por el puerto ESP32, está totalmente hecho a mano utilizando C++ y OpenGL. Creó las bibliotecas matemáticas de vectores, matrices y renderizado desde cero. Como explica Fish, «el procesamiento de la física y la geometría se produce en 3D, pero cuando se muestra la imagen en un monitor 2D, sólo se pueden trazar puntos 2D».
ESPescado utiliza proyección en perspectiva para aplanar los objetos 3D en 2D para la pantalla.
Además, es bastante receptivo. Gracias al diseño de doble núcleo del ESP32, el código de Fish puede manejar la física y el procesamiento de entrada a 700 fotogramas por segundo en un núcleo, mientras que el otro núcleo se centra en renderizar sin problemas estructuras alámbricas a 40 fps.
El hardware en sí es el sueño de un hacker: una pantalla compacta de 1,9 pulgadas y 320 x 160 píxeles rodeada por cerebros ESP32, combinada con joysticks externos que permiten un control 3D total. Un joystick incluso se conecta a tu dedo para disfrutar de una experiencia inmersiva. Un acelerómetro proporciona entrada de movimiento para ajustar la cámara del juego.
Ver también: FuryGPU es una GPU de hardware de código abierto construida desde cero
Debajo del capó, ESPescado utiliza el conjunto de herramientas 3D estándar de mallas, vértices y matrices. Las mallas, construidas a partir de triángulos de puntos y líneas, forman los objetos y el terreno básicos que se ven en los videojuegos. Luego, el motor puede aplicar transformaciones como escalar, rotar y posicionar para colocar estas mallas en el mundo virtual 3D.
Una demostración de YouTube muestra ESPescado en acción, con Fish manipulando un simple objeto triangular verde sobre un fondo negro. Ofrece una visión básica de las capacidades del motor, lo que demuestra que incluso los gráficos 3D más fundamentales pueden desarrollarse desde los primeros principios.
Para los aficionados y estudiantes de matemáticas 3D, el proyecto de Fish ofrece una visión fascinante de los conceptos básicos detrás de los motores 3D. Ambos ESP32 versión «ESPescado» y el original OpenGL «Pescado» se han lanzado en GitHub para que cualquiera pueda estudiarlos y desarrollarlos.