欢迎光临散文网 会员登陆 & 注册

最美马赛克——简析八方旅人的render path

2019-07-15 01:11 作者:AICDG  | 我要投稿

序言

八方旅人6月份在pc上发布了(其实还有手游,不知道什么时候公测),还带来了新的价格单位“方”,不过这些不是本文讨论对象。虽然八方旅人没有参加夏促,但是在这个周末还是带来了PC版第一次打折,只要5.6方。在爆机NS版的时候就一直想研究八方旅人的渲染,现在机会来了,自然不能错过。

八方旅人在防截帧上还是做了一些努力的。很惭愧,我个人也做了点微小的工作。对于这种防君子不防小人的设计,我还是很喜欢的。

接下来分析一下画面,先提前说结论,和UE4的PC/Console的render path区别不是很大,经典的延迟渲染,对UE4 SM5很熟悉的同学可以直接跳过本文绝大部分内容。我就那欧菲利亚的出生点,圣火城,还有开头的第一个战斗的一些值得说的地方讨论一下。如果大家有什么见解和疑问,也欢迎在评论区指出。

场景

对场景抓帧之后,我直接被吓了一大跳,1690个drawcall,惊了!我以为八方旅人的场景非常复杂,但是完全想不到八方旅人的场景居然这么的复杂。这个时候,就要回想起延迟渲染的流程,然后按步骤依次拆解。

Depthonly pass

首先是延迟渲染的depthonly pass,没什么好说的。

Geometry pass

接下来是Geometry pass

可以看到,Geom pass和UE4的Geom pass非常的像

noraml,diffuse,depth这些延迟渲染该有的应有尽有。而且,可以看到,是3D场景+2D人物的方式来进行绘制,从drawcall的数量来说,已经完全不比3A游戏少了。

其中,有一个RT专门用来绘制人物。

人物的Color map的A通道用来存储mask。除了Color map之外,还有一张额外的Normal map,可以说八方旅人的人物渲染非常“3A”非常豪华了。

其中,还有一些我想额外说的。虽然是像素风的游戏,但是建模异常的精致,尤其是场景。在这个场景中举几个例子。

7w顶点的门窗
6000顶点的树
11w顶点的教堂

一扇门几扇窗就有7w顶点,而教堂更是超过了11w的顶点。这个模型精度可以说是相当的夸张,我的反应真的就是四个字——工匠精神。

也许是风格化的贴图需要,也许是性能确实OK,这些地方并没有使用LOD。整个渲染过程中有很多看上去可以batch的地方没有batch,也许GPU真的不瓶颈吧。

Shadow map

在Depthmap中绘制了大量的volume之后,就开始了shadowmap的绘制

我在Goem pass还给没有LOD找了个理由,但是看到shadow map之后,我只能说,犯懒了。shadowmap完全没有必要使用原模型。

紧接着绘制阴影

Pointlight and fog

球型是点光源的范围,最后几个全屏是雾

Decal

绘制场景中被雪覆盖的区域

体积光

场景中只有一道体积光,而且并不是十分明显,我高亮一下drawcall可以看得清楚一些

Particle

接下来就是八方旅人的粒子系统了,相信大家也被八方旅人的特效惊艳到了

其实就是UE4 cascade particle system,其中有一点需要注意,就是场景中的表示可互动的气泡也用粒子系统绘制了

Post-processing

后期效果包括Bloom,景深,Tone mapping。其中

该图是景深的mask,表示不要景深模糊的区域。由上下两半构成,上半是图像本身的mask,下半是bloom后的mask,颜色相反,bloom的mask可以看到比原图的mask稍微大一圈。

UI

和UE4相同,UI的绘制放在最后,记得我之前提过,场景中的3D UI以粒子系统的形式提供,而场景中的2D UI,可以说非常简单。

战斗

战斗画面的render path大体和场景一致,我就把一些不同的地方点出来吧。

人物


人物战斗是另外一套精灵图,真的是良心十足了。

阴影

可以看到战斗场景阴影贴图使用了SCM,人物阴影和场景阴影贴图是分开的

粒子

相比大地图场景,战斗场景要额外绘制技能特效

UI

战斗场景的UI比漫游场景还是复杂很多的,毕竟交互也多了不少

可以看到,UI使用了扭曲特效,也就产生了额外的读写RT


最美马赛克——简析八方旅人的render path的评论 (共 条)

分享到微博请遵守国家法律