在这个被NVIDIA和AMD的强大GPU所统治的世界里,一位自学成才的程序员证明了从零开始创建令人印象深刻的3D图形是可能的。亚历克斯-费什(AlexFish)发布了一个非常流畅的3D引擎,该引擎由EspressifESP32-S3微控制器驱动的小型自制GPU运行。

这并不是Fish首次涉足自制图形。他最初用WebGL开发了用于网络浏览器的"Pescado"引擎,然后将其移植到用于PC显卡的OpenGL上。不过,在低功耗微控制器上实现流畅的3D渲染是一次重大飞跃。

Fish的引擎被命名为"ESPescado",用于ESP32移植,完全使用C++和OpenGL手工制作。他从零开始创建了向量、矩阵和渲染数学库。正如Fish解释的那样,"物理和几何处理发生在3D中,但在2D显示器上显示图像时,只能绘制2D点"。

ESPescado使用透视投影技术将3D物体平面化为屏幕上的2D物体。此外,它的响应速度也相当快。得益于ESP32的双核设计,Fish的代码可以在一个内核上以每秒700帧的速度处理物理和输入处理,而另一个内核则专注于以每秒40帧的速度流畅地渲染线框。

制作硬件本身就是黑客的梦想:一个小巧的1.9英寸320x160像素显示屏,周围环绕着ESP32大脑,配上可实现全3D控制的外置操纵杆。其中一个操纵杆甚至可以连接到手指上,带来身临其境的体验。加速计提供运动输入,用于调整游戏中的摄像头。

在引擎盖下,ESPescado使用网格、顶点和矩阵等标准3D工具包。网格由三角形的点和线构成,是视频游戏中的基本物体和地形。然后,引擎可以应用缩放、旋转和定位等变换,将这些网格放置在虚拟3D世界中。

YouTube上的一个演示展示了ESPescado的运行情况,Fish在黑色背景中操纵一个简单的绿色三角形物体。它让人们对该引擎的功能有了一个基本的了解,表明即使是最基本的三维图形也可以根据第一原理进行开发。

对于工匠和三维数学专业的学生来说,Fish的项目让他们对三维引擎背后的核心概念有了迷人的一瞥。ESP32"ESPescado"版本和原始OpenGL"Pescado"版本都已发布在GitHub上,供所有人研究和构建。