从技术的角度来分析一下沙盒服的新画质(一)

2019-05-02 20:56:53 神评论

17173 新闻导语

前两天有幸收到了沙盒服的通过邮件,作为图形程序员果断翻出工具对新画质进行了一下分析,这里一步一步的给大家分析一下坦克世界的画面到底是如何渲染出来的(由于只能截取到各个Render Target的信息,所以很多东西只能凭经验去猜) 先来一张游戏的最终画面

前两天有幸收到了沙盒服的通过邮件,作为图形程序员果断翻出工具对新画质进行了一下分析,这里一步一步的给大家分析一下坦克世界的画面到底是如何渲染出来的(由于只能截取到各个Render Target的信息,所以很多东西只能凭经验去猜)
先来一张游戏的最终画面

一开始引擎画了一系列奇怪的贴图,根据后续信息的猜测,估计是跟新的水面有关,应该是用来计算水面顶点偏移的,所以这次坦克驶入水中后水面会根据坦克的包围盒形成更加逼真立体的波浪,而之前(也就是咱们正在用的版本)只是用几张Normal贴图来表现水面波浪。
这张Render Target应该就是波浪的计算结果,中间两个绿色的长条就是履带,周围的应该就是水面顶点的偏移值,然后根据这个来计算波浪的形状和高度等等
接下来开始绘制履带在地面的痕迹的Mask,用来标记哪里有痕迹哪里没有,每张图上面一半是近距离高精度,下半部分是远距离低精度,然后根据距离啥相机的距离进行混合,第二张图是把痕迹叠加到场景Normal Buffer上,和之前绘制波浪一样,相机的角度实在玩家的正上方朝正下方看,而且还是一个正交投影的相机

然后引擎在面板和小地图的那两个位置标记了一下,应该是用于后续的像素剔除,毕竟这两块地方挺大的而且没用,如果这些像素也参与到后续的计算中(比如光照、阴影和AO神马的)的话其实是完全的浪费,所以这样做能省掉不少的性能开销

接下来是场景的G-Buffer(Geometry Buffer),虽然只是把一些信息写入到Render Target中保存起来,但这是Deffered Shading中很重要的一环,毕竟后续的几乎所有计算都要用到这几个Target中的数据
第一个是反射率(通俗点就是漫反射贴图或者Diffuse贴图);第二个是Normal;第三个用来存储一些渲染参数,第四个是Stencil Buffer,感觉像是把材质ID存了进去。
其中坦克世界自从模型高清就开始使用PBR了,所以几乎所有材质只需要两个参数:粗糙度和金属强度,所以第三个Target中R通道存储了粗糙度(坦克世界里应该改叫光滑度,毕竟他们的贴图1表示最光滑),G通道存储了金属强度,B通道存储了边界信息(也就是边缘检测的结果)


【来源:贴吧】