谷动谷力

 找回密码
 立即注册
查看: 785|回复: 0
打印 上一主题 下一主题
收起左侧

程序员从零开始制作流畅的3D图形引擎 并在DIY的GPU上运行

[复制链接]
跳转到指定楼层
楼主
发表于 2024-4-12 16:28:45 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
程序员从零开始制作流畅的3D图形引擎 并在DIY的GPU上运行



在这个被 NVIDIA 和 AMD 的强大 GPU 所统治的世界里,一位自学成才的程序员证明了从零开始创建令人印象深刻的 3D 图形是可能的。亚历克斯-费什(Alex Fish)发布了一个非常流畅的 3D 引擎,该引擎由 Espressif ESP32-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 英寸 320 x 160 像素显示屏,周围环绕着 ESP32 大脑,配上可实现全 3D 控制的外置操纵杆。其中一个操纵杆甚至可以连接到手指上,带来身临其境的体验。加速计提供运动输入,用于调整游戏中的摄像头。

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

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

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

+13

最近谁赞过

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|深圳市光明谷科技有限公司|光明谷商城|Sunshine Silicon Corpporation ( 粤ICP备14060730号|Sitemap

GMT+8, 2024-12-27 03:29 , Processed in 0.093347 second(s), 45 queries .

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表