为Doom而生!大神纯FPGA实现Doom游戏芯片,无CPU、无指令计数器
机器之心报道
机器之心编辑部
无 CPU、无操作码、无指令计数器纯 FPGA 实现 , 图形学大神 Sylvain Lefebvre 为经典射击游戏 Doom 打造打造了一款芯片 。
本文插图
毁灭战士系列(Doom)是由 id Software 开发的第一人称射击电子游戏系列 。 在电子游戏界中 , 人们普遍认为 Doom 系列是第一人称射击游戏的开拓者之一 。 自 Doom 于 1993 年发布以来 , 该系列已有 4 部续作、无数的扩展关卡以及同名电影《毁灭战士》 。
作为经典的射击游戏 , Doom 拥有大量拥趸 , 它能够在大量设备上运行 , 如数码相机、旧版诺基亚手机等等 。 在强化学习领域 , Doom 也被用作策略训练环境之一 。
最近 , 计算机图形学大神级人物、法国国家信息与自动化研究所(INRIA)研究总监、MFX 团队负责人 Sylvain Lefebvre 在新的设备上运行 Doom 游戏 , 并放出了一段视频 , 展示他自制的无 CPU、无操作码、无指令计数器 , 仅靠纯 FPGA 实现的芯片运行 Doom 的效果 。
本文插图
使用 Altera CycloneV FPGA 运行 Doom 游戏 。
为 Doom 游戏而生:DooM-chip
Sylvain 在推特上介绍了该芯片 DooM-chip 的具体细节:
本文插图
DooM 芯片可以运行 E1M1 直到世界末日(或者电量耗尽) 。 代码烧写到了 FPGA 的 LUTs 及触发器中 , 其中无 CPU , 无操作码 , 无指令计数器 , 可以说是纯硬件实现 。
简而言之 , DooM 芯片的运行只需要:SDRAM 控制器、分隔符、BSP 遍历、纹理单元等 。 主渲染器(没有数据)有 666 行代码!
下图展示了一个不错的测试用例 , 我们可以看到它做出了一些改进 , 修复了一些问题 , 并在 CycloneV + Quartus 上学到了很多 。
本文插图
渲染使用的是原始 BSP 树 , 不过为了配合硬件实现 , Sylvain 对其进行了修改 。 所有列经过光影投射 , 并立即从前向后绘制 , 直到被完全填充 。
当 BSP 从前向后遍历时 , 列总是自顶部或底部向中间生长 。
本文插图
据介绍 , 该芯片的制作利用了多个信息源:
Fabien Sanglard 写的「Doom 黑皮书」(Game Engine Black Book DOOM);
Doom Specs v1.666 的非官方版本及其源代码(https://github.com/id-Software/DOOM) 。
此外 , Sylvain 还利用了真实的游戏数据:在编译过程中 , 使用 Lua 预处理器从 Doom WAD 中抽取数据 , 并基于此写表和硬件 。
由于计算会随着游戏中墙的不同而发生变化 , 因此获得天花板和地板的纹理并非易事 。 Sylvain 提供了一个 debug 视图 , 可以帮助确保计算与天花板和地板的纹理相匹配 。
本文插图
在介绍完 DooM-chip 的基本细节后 , Sylvain 还说明了一些有待改进和优化的地方:并行化列 , 隐藏绘制、纹理映射和 BSP 树遍历之间的延迟;有一些纹理没有对齐 , 一些小问题还有待修复(下图即为 debug 展示图);以 320x200 60Hz 运行 , 而不是 70Hz 。
本文插图
Sylvain 表示 , Doom 诞生的时候自己还在学习如何编码图形 。 不管是那时 , 还是现在 , Doom 都是其灵感和动力的来源 。
推荐阅读
- 电脑吧评测室|高效全能小电脑,时尚精致大神通,华硕MiniPC家族好物推荐
- 百合网|情感需求成时下痛点 年轻化视频社交APP花丛应运而生
- 科技小旦|现在为啥没有人刷机了?大神:没必要,还不如换新的
- 电脑数码精通|电脑加装双通道内存条,无知放开了人的想象力,“大神”请慢走
- 英特尔|Intel成功挖角AMD显卡研发大神 重返独显市场势在必得
- 老王那些事|苹果iOS12.1.3正式版推送,依然为iPhoneXR/XS Max而生
- 『智能』京东开启5G好物盛典 专为手游而生的电竞路由竟是它?
- 『』分享几款我喜欢的国外大神制作的改造机箱
- 大神是如何短视频创业的?十几万粉收入远超上千万粉丝
- 电子芯吧客盘点!各路大神的C语言编程建议和技巧