为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 从前向后遍历时 , 列总是自顶部或底部向中间生长 。
本文插图
【为Doom而生!大神纯FPGA实现Doom游戏芯片,无CPU、无指令计数器】据介绍 , 该芯片的制作利用了多个信息源:
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 。
推荐阅读
- ACG次元饭|学会快去疼爱千代,火影忍者:傀儡忍者怎么玩?这些技巧大神总结
- ACG次元饭|火影忍者:傀儡忍者怎么玩?这些技巧大神总结,学会快去疼爱千代
- 技术大神 Native:使用Vue.js框架构建原生移动应用程序的指南,Vue
- 技术大神Vue Native:使用Vue.js框架构建原生移动应用程序的指南
- 一半的爱情|《奇葩说6》辩论大神黄执中输给新人不亏!詹青云一句话真相了!
- 金牌娱乐|月入十万左右,扣税额就高达两万,网红大神啊段晒收入
- 金牌娱乐|网红大神啊段晒收入,月入十万左右,扣税额就高达两万
- 伪大神|王者荣耀:对面都是脆皮,首选猴子本该乱杀,但为何总是打不过?
- 伪大神|近卫荣耀加双抗,却沦为备胎选择,王者荣耀:中看不中用的辅助装
- 伪大神|首选猴子本该乱杀,但为何总是打不过?,王者荣耀:对面都是脆皮
