机器之心编辑部
无 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 都是其灵感和动力的来源。
网友热议:有赞许,也有质疑
这款纯 FPGA 实现芯片在 Doom 游戏中的效果引起了广大游戏发热友的把稳,并纷纭揭橥自己的意见。有人投以赞许,也有人严谨地提出了质疑。
有网友认为这款 Doom 芯片有点像是原始街机游戏 Pong 芯片或 AY-3-8500 芯片。不须要操作系统(OS),只须要输入驱动输出视频即可。
更有网友认为这有助于促进 Doom 游戏的永恒。Doom 游戏险些可以被移植到任何具有 CPU 的系统上,如 Linux。用户乃至可以搜索到 JSDoom 以及 RISC-V 游戏端口。如果能够超越以往大略的绘制水平,统统将会非常有趣,往后 Doom 游戏乃至都不须要 CPU 运行了。
不过,有网友对这款 Doom 芯片的运行帧率以及本钱提出了质疑。
ta 表示虽然 Doom 芯片能够以 60fps 的帧率运行,并且不须要太多的 headroom,但是这远远慢于当代 GPU 的速率。最新的 Doom 游戏能够以 200fps 以上的帧率运行,并且更加繁芜。因此,结合硬件本钱以及与游戏数字拷贝的比较来看,ta 认为这款 Doom 芯片对游戏行业的益处不大。
针对这位网友提出的质疑,作者承认自己的实现过于大略,很多东西还需进一步优化。
末了,有网友表示状态机的「状态」可以看作是一种指令计数器。
针对此意见,作者承认利用了 vga、sdram 掌握器、帧缓冲器、texturing、分频器和渲染器等几种状态机,并且每个状态机都有活动状态指数。个中,渲染器最大,具有 69 个状态。并且,作者也赞许将状态指数看作是一种指令计数器,只管它是非常专业的指令。
但同时,作者表示给定的模块中没有两个相同的指令,每个指令各自实现算法的精确子部分。此外,状态还决定了流程以及选择下个状态,以是没有可以编程或重排列的指令。基于此,他的想法是将算法完备嵌入到电路本身,而不实行任何其他操作。
作者简介
Sylvain Lefebvre
Sylvain Lefebvre 在法国国家信息与自动化研究所(INRIA)Grenoble-Rhône-Alpes 研究中央得到博士学位,所在的团队为 iMAGIS/EVASION 团队。他在博士阶段紧张研究利用 GPU 的前沿纹理方法。2005 年,Sylvain 前往微软研究院(西雅图)任博士后研究员。之后他和 Hugues Hoppe 一起研究纹理合成和纹理化。2006 年 9 月,Sylvain 加入 INRIA Sophia Antipolis 研究中央 REVES 团队。2009 年年底,加入 INRIA Nancy 研究中央 ALICE 团队。2018 年开始,Sylvain 成为 MFX 团队的领导者。
2010 年,Sylvain 得到 EUROGRAPHICS 青年研究者奖项。2012 年,他的 ShapeForge 项目得到了 ERC 启动资金。此外,Sylvain 还是 IceSL 软件的创始人和紧张开拓者。
Sylvain 的研究方向是简化内容创建,尤其是天生高度细节化的模式、构造和形状。运用范围从打算机图形学到 3D 打印、渲染高度细节化的场景、设计繁芜工具,或者建模须要遵照精确规格的技能部件。








