网易游戏的《逆水寒》算是近期热度较高的MMORPG网游了。游戏的背景,玩法,架构都不是本文的重点,我们来聊聊《逆水寒》(以下简称为此游戏)运用了哪些AMD的技术。
FP16

FP16,奇怪的字母与数字的组合。FP16是Floating Point 16bit的简写,是一种精度要求较低的浮点数规格,现在被大范围应用在AI,深度学习领域,而AMD告诉我们,FP16同样可以用于游戏。
在统一渲染架构问世时,决定使用FP32运算任何任务,FP32也就被定义为单精度浮点数(Single-Precision Floating Point)。相对于FP32而言,更高精度的FP64就成了双精度浮点数,FP16由于只占用单精度一半的字节,所以就成了半精度浮点数。而在计算的世界中,对于运算精度是极为挑剔的,达成更高精度运算所需的成本也越来越高,于是拥有高性能FP64性能的专业卡自身就是另一个GPU市场。
更低的精度要求意味着更低的算力要求,大家还是注意到FP16并且越来越多地去使用它的主要原因是能源效率。GPU设计上能效越高,间接意味着其性能潜力更大。AMD在GCN3和GCN4加入了对FP16的支持,但由于其并未针对半精度浮点数做考虑,这两代的半精度浮点数性能与单精度浮点数性能相差无几。而到了GCN5,AMD为其加入了Rapid Packed Math机制(RPM),实际上是AMD版本的半精度打包技术,可以理论实现2倍于单精度浮点数的计算性能。

开发者利用ROCm套件利用RPM技术可以获得不错的结果。成功使用RPM,有效利用FP16运算的游戏除了逆水寒以外,还有重返德军总部2以及孤岛惊魂5。

与纳粹斗智斗勇的德军总部2

只需说Yes的孤岛惊魂
这两款游戏除了游戏本身素质过硬以外,也得益于全新的半精度浮点运算的加成,可以在渲染阶段获得更高的每瓦性能。

在3DMark尚未公布的Serra演示场景中,使用FP16的FFT(快速傅里叶转换,计算领域最常见的方程式)处理耀斑特效可以提升20%性能。同时,Radeon也支持16位整数计算,可以在材质表面纹理和体积光照方面提高效率。
要说逆水寒中对半精度运算的应用,最直观的就是体积雾和壮观的云海了。




要实现真实的雾化效果,正确的光照,反射与自阴影缺一不可。也多亏游戏使用了顶级的Enlighten全局光照系统,协助使用半精度运算出来的云雾达到了准照片级水准。

