找回密码
 立即注册
搜索
查看: 18585|回复: 66

[NS] [XB3气氛组]异度之刃的画面进化之路

[复制链接]
     
发表于 2022-7-28 16:22 | 显示全部楼层 |阅读模式
本帖最后由 GuardHei 于 2022-7-28 16:22 编辑

前两天刚通关xb2,感觉真好啊。虽然我对jrpg没什么特别的兴趣,但是xb2真的让我感觉到了少年少女冒险的别样魅力:广阔又立体复杂的大地图,乍一看像网游但实际上有很多精心设计的支线,一流的音乐和美术设计,出色的战斗演出和战斗系统。高桥哥哥能在xb2塞进这么多内容,我对高桥的项目管理能力是佩服的五体投地。那么,在xb3即将发售之际,我也来发一篇帖子凑凑热闹,充当气氛组。在这个帖子里我想随便聊聊xb在初代之后引擎的进化和变革,从我个人的角度评价xbx,xb2等作品的画面,也会对诸如“为什么xb2的画面这么糊?”这类问题作出尽可能全面的解释(提前预告:这可不是分辨率一个因素)以及澄清一些由zest这些人散播的关于xb3画面的一些谣言。


开端-异度之刃1
(由于我没有wii,虽然相关图片来自于视频网站的截图,以对文字进行视觉补充)

虽然发售在wii上,异度之刃1在场景的规模上还是非常震撼的。尽管场景细节一般,但是开阔的原野在wii上属于是非常难一见的了。过场里不乏拉升的镜头,进一步体现游戏的规模感。


不过话虽如此,wii本身的机能也对游戏产生了众多限制。这里限制的本身不仅是简简单单的分辨率和帧数,而是机器老旧的硬件设计导致不支持更现代的特性。wii本身作为一个大号ngc,gpu虽然提频1.5倍,但是特性上和ngc是一模一样的。ngc的gpu在01年的时候还是非常先进的,支持诸如各向异性过滤,凹凸贴图,虚拟纹理等技术,gpu上的texture environment unit(TEV)也提供了基础的对每一个像素进行自定义处理的操作(了解硬件的朋友可以认为这是一个近似现代gpu上片元着色器的可编程blender unit)。再细节的我也不多赘述了,大家可以看看Rodrigo Copetti写的关于怀旧主机硬件的帖子https://www.copetti.org/writings/consoles/gamecube/,人家讲的比我好。

但是10年后到了2011年,这些特性就不够看了。隔壁ps3和xbox 360都支持开发者对每个像素的着色做复杂的自定义操作。360甚至支持了诸如gpgpu这样在gpu上做通用并行运算的特性(比如可以用来实现复杂的水面模拟等等),而ps3也有其独特的spu可以读取写入显存来实现类似gpgpu的效果。与之对比,wii只能使用8个硬件光源,TEV的自定义操作也非常基础--像风之杖那样的赛璐璐渲染还能自定义,但真次世代的光照模型就太为难了,哪怕实现了往往也因为需要太多cycle导致帧数暴跌。在这种情况下,异度之刃1总体的材质观感上仍然停留在01年。各种反射高光效果都被简单粗暴的画死在了贴图上。光源使用的很节约,各种爆炸虽然有特效但也往往不会照亮四周。全局光也就直接画在贴图上了事。不过,越是受到限制,也越意味着下一作画面的进步会越大。



高清化的第一次尝试-异度之刃X
异度之刃x是我接触的第一部异度之刃。我当时就是被开着机甲在异星球开放世界探索的旗号给吸引过去的(但当时截的图不在身边所以还得用网图)。作为第一部高清化的异度之刃,X的画面技术是既大胆又保守的。

不过在此之前,我们仍然有必要简单回顾下游戏所在平台wiiu的硬件特性。wiiu的gpu的基础特性级别可以对应到pc显卡的dx10,除此之外也支持不少dx11的特性,比如支持曲面细分和计算着色器(compute shader,也就是上文所说xbox 360用于gpgpu计算的程序)。配合上gpu里32mb高速的edram,简单来说,wiiu的gpu特性和xbox 360的非常类似,实际上就特性而言也没比更新dx12 sdk前的xbox one差多少。终于,硬件第一次现代化了,那么游戏呢?

大胆的无缝开放世界
如果要说xbx最独特的点,那就是完全无缝的开放世界。玩家在游戏中肉身横穿多个大陆,开着机甲从基地出发/返回,埋头跳进深不见底的洞窟全都不需要任何的加载画面。玩家玩的很爽的同时,这也对游戏渲染带来了极大的挑战 -- 玩家的视线可能包含了地型表面的基础模型,山体里的各种洞窟模型,高大的瀑布和湖泊,城市的外表模型和里面的各种建筑物,近处的花草植被,远处的飞禽走兽等等。地图设计师设计了各种独特的地标,无论多远都需要保证玩家看到。开着doll飞上天后看到的地图更大,也意味着需要一套伸缩性强的渲染系统来降低渲染负担。作为m社在现代硬件上的第一作,xbx这样的设计不可谓不大胆。



那么结果上我们也都看到了,monolith确实实现了目标,xbx在帧数上可以说相对稳定的保持在了30fps,而世界的规模感也并没有被妥协。幸运的是,我们只要注册个账号就能看到monolith在cedec上分享的xbx大地图制作经验;不幸的是lz不会日语。不过凭借油猴翻译脚本和感谢霓虹人专业术语都用片假名拼英语,lz可以简单给大伙介绍下。我也把整个ppt机翻成了英语,分享在这了:谷歌drive。以下是一个非常简化的解释:

在xbx里,地图被以各种方式进行划分。首先monolith把不同的环境划分出来,方便设计师管理。


但是不同的环境有不同的模型复杂度,在绘制负担上并不能很好的均衡。所以Monolith需要对模型等绘制数据进行单独的划分。首先,monolith把地形数据存在一个基础地图里(base map - 这个英语其实不重要,m社随便起的,方便理解)。



这张基础地图组织起了游戏里大粒度表现,不过缺少了太多诸如树木,岩石等等的中粒度细节,因此monolith把这些细节模型存在了一个实例分布地图里(instance map)。实例地图里记载了在xxx坐标需要哪些模型,同时这些模型也有数个依次简化的版本,用来做层次等级(lod)--也就是越远模型面数越少,减小渲染负担也不引入太明显的视觉瑕疵。这歌实例地图其实有三个,分别对应一个区域近景,中景,远景应该显示的模型,用来降低渲染负担。



不过尽管如此,游戏画面里还有重要的细节没有被提及,那就是 -- 草。光秃秃的地表不铺草的话,玩家观感可好不到哪里去。那么理所当然的,花草这类低矮的数据也被单独存在了一个草分布地图里(grass map)。



通过对不同的分布图进行不同的切割和管理,在游戏时根据玩家所能看到的距离加载需要的复杂度(比如只有近距离的模型加载高分辨率贴图,非常远距离的模型只加载基础的固有色贴图,不加载法线贴图这类的“细节”),monolith对主要物体和奇观实现了几乎“无限远”的视距。我在上面的解释是非常简化的,只是给大家一个直观感受。其实很多做法也都是大家能想到的,更多的是工程上的合理统筹,monolith其实有更多的细节需要考量,这我也都没有说明了。

当然,xbx的技术挑战也不止这些,实时的光影也是一个重要环节。在这一点上,xbx的大世界有着完全实时的光影变化 -- 当然也有它的限制。游戏有着相当远的阴影绘制距离,无论是高高飞在天上的还是匍匐在远处地面的异兽都往地面上投射实时的阴影。




除此之外,xbx也对实时天光进行了简单的模拟。当物体处在黑夜或者阴影下时,直接光的影响变得微薄,环境光的比重就大了起来。而在原野里,最重要的环境光来自于天空。根据论坛上某位截帧看过xbx渲染的大佬的言论,xbx里的天光用了一个非常取巧的做法:提前烘焙静态的光照探头,然后根据实时的天空盒颜色对这个光照探头进行“染色”达到实时变化的效果。当然,这种方法离物理正确差了十万八千里,整体环境光效果也会缺乏层次感。与此同时,游戏里也对天空做了进一步的处理:云层动态的流动;一束束阳光透过云层洒下来;静谧的夜色下一缕缕青绿色的极光飘动。



保守的技术选型
虽然夸了xbx画面上这么多的优点,但老实说作为一个15年的游戏,xbx的观感还是显著落后于同时代的。一部分是平台性能的限制,但另一部分则是相当一部分仍停留在ps3/xbox 360时代的技术抉择。

就上文而言我们说到了动态的天空盒,但其实所用的技术并不高深。天上的云朵其实就是一个个永远面朝玩家的面片。尽管一些场景下美工发挥了最大努力让云朵体现出厚重感,但不难看出这些云朵是缺乏体积感的,显得有些单薄。




游戏里阳光从天空投射下来模拟的丁达尔效果也并不是真正的体积渲染,而是在屏幕空间对高亮区域,根据光影的位置做一个径向模糊 -- 当高亮区域在屏幕里时效果很好,但是一旦镜头离开,光束就直接消失了。



如果你仔细看上面一张图,你也会发现一个问题:诶?怎么左边的树枝看起来边缘这么不清晰?异度之刃X不是一个固定在720p的游戏吗?
不错,游戏里最终输出分辨率确实是720p,实际上大部分物体也都是按照720p的规格去渲染的,但是为了降低gpu显存带宽的开销,所有的半透明物体都按照一半的分辨率进行渲染。这样的好处是哪怕各种半透明特效叠在一起也能大为降低反复绘制混合的开销,而且对于大多数半透明效果来说,天生就不清晰,降分辨率不太能看得出。但是在不透明物体和半透明物体交错的边缘,视觉瑕疵就会被放大了:半透明的雾气从树枝上流过时能明显看到游动的锯齿。

游戏里的阴影距离虽然远,但是阴影的精度并不够,锯齿明显,阴影的方向也并不会变化,白天黑夜变化的只有阴影的强度。这其实并不意味着阴影不是动态的,而是因为实时改变方向的阴影对精度有很高的要求,否则移动起来阴影锯齿会很明显。(大家如果观察一些开放世界游戏就会发现很多阴影并不是实时连续改变方向的,比如天外世界里每隔几十秒才变化一次)而且在太阳要落山时,由于投影角度带来的长阴影对目前主流的阴影绘制方法也非常不友好。间接光的阴影模拟则直接用一个带渐变的圆片代替,只能说非常凑活。



游戏绘制距离固然很远,但是像npc或者小物体的绘制距离就短了很多了。在NLA主城里跑来跑去时经常看到npc直到眼前了才堪堪显示出来,这就显得很突兀了。另一个为人诟病的就是草地的渲染。xbx使用了经典的纸片草 -- 一个永远面向玩家的草叶面片。调到俯视角的时候你就会发现这草也“躺下了”看着你。草的摇摆动画做得也比较普通,反而更容易凸显草的纸片感。



游戏里的反射也是传统做法,使用一个实时更新的反射探头来为水面提供反射,类似我之前发的这篇帖子里说的反射技术 https://bbs.saraba1st.com/2b/thread-1971518-1-1.html 虽然是实时的,但是不少时候水面的反射内容有着视差错误,和实际水面上的内容对不上。



当然上述内容里,其实有很多都是为了保证稳定的帧数而不得不阉割画面品质,总体来说xbx的画面技术在wiiu上也算数一数二了。但是下面这个就让人有些摸不着头脑了,确实显著落后时代了。下面我先放两张都是wiiu平台上游戏的截图。首先是马车8,然后就是异度之刃x:



感觉到右边异度之刃x的画面有什么怪怪的地方吗?可能有些人说这是因为马车8调色比较明艳鲜亮,这固然有一部分原因,但是右边这个画面里的材质有个非常明显的问题 -- 材质和真实世界难以对应起来。怪物身上的皮革肉质看起来像是塑料的,人身上穿的装甲也像是塑料的。。但也有点像金属?地面的沙土岩石倒和别的材质光滑的表面区分了开来,明显灰突突的只有漫反射。总的来说,材质的区分度不高,虽然能看出有些反光多一点少一点,但是对物体表面属性的把握不够准确。与之相比马车8里我们就能很轻易地分别出不锈钢的轮毂,橡胶的论坛,带点塑料油的地面,金属的出发标志......

这就是因为马车8使用了一套基于物理的材质系统(如果做过3d美术的朋友可能对PBR这个词比较熟悉)。基于物理的材质系统并不是说完全用物理模拟去推导材质的表面特性,而是先人为的选取一些重要基础的影响表面属性的参数(比如粗糙度,漫反射率,金属度等等)。然后根据现实观察到的表面光学现象,使用这些参数去对光照进行一些近似的拟合。由于是以现实作为参考,那么最后出来的结果也自然而然更接近现实了。这里要强调的是,使用了基于物理的材质系统并不一定比传统的光照模型开销要高很多,但是效果却实打实的要好很多。那么作为一个2015年发售的游戏,xbx的材质系统还是沿用旧时代美工手动调整材质高光度的做法,就显得非常落后了。毕竟,同平台上的3d马,马车8,splatoon也都用上了PBR。也许是项目美工素材制作的太早,也许是人手太紧来不及升级美术管线?但不得不说,这确实是xbx画面的一个遗憾。

总的来说xbx的画面在wiiu有限的机能上显得可圈可点。而这个阶段的monolith在画面技术上也是非常克制的:一方面大胆的实现了无缝畅游的开放世界,同时也乐意为了稳定720p30fps的技术指标
阉割一些特性。所以不少人觉得xbx的画面为系列最佳,虽然技术上这值得商榷,但是从观感上也不难理解。

激进的画面革新-异度之刃2
终于该聊谭游的画面了。谭游的画面在网上可谓争论不息,一些人称赞为ns平台上数一数二的光影效果,但也总是能见到一些人张口就是“不如ps2”“梦回psp”。那么在正式谈论xb2画面之前,我们还是先来看看硬件平台提供了怎样的能力。

switch作为一台可以主掌机切换的机器,基本注定了其性能释放和散热设计都要被掌机模式的存在所拖累。单就机能而言,一个常见的估计是掌机下ns的性能约等于wiiu,主机下ns的性能则能翻个倍。对于大多数wiiu移植游戏来说,这也确实是移植后的指标(当然也有少部分主机下才和wiiu分辨率一样的,说的就是你,皮克敏3)。当然实际上ns那颗cpu还是比wiiu强很多的,但现在这样ns上很多游戏cpu也没跑满,不过这就是另外一个话题了。而特性支持上,和dx10 + 部分dx11的wiiu latte gpu相比,switch的tegra x1的gpu部分提供了完整的dx12支持(当然不包含后来的dx12u,以及maxwell架构下对dx12的async compute支持有点问题)。当初老黄展示英伟达shield的时候不仅展示了孤岛危机3的演示画面(其实也上了ps3所以特性上要求没那么高),也宣布了完全支持虚幻4(但我们也知道这不代表ue4游戏就能在ns上随便跑的好)。但不管怎么说,和ps4还有xbox one相比,switch在硬件特性上并没有什么差别。某种意义上这也是为什么我很喜欢观察ns上游戏画面水平的原因:在一台性能有限但是特性完备的机器上,不用考虑像手游那样适配低端机,我们能看到怎样的画面水平?这实际上基本依靠技术理论的进步了。好比之前提到的基于物理的材质系统就以相对小的性能开销换来了改头换面的观感。

就xb2来说,不管你觉得画面水平到底如何,我觉得大家都应该会赞成一点 -- 画面好糊啊!不管是在掌机还是主机下,xb2的画面都离清晰锐利无缘。在掌机模式下不仅糊还往往显得非常杂乱,有种很多的噪点一样的东西。那么为什么xb2的观感这么糊呢?有的人会说分辨率太低,有的人会说是因为用了taa。这些解释都不错,但也没有涵盖所有因素,下面我们从三个方面看一下:

1. 打摆的分辨率

不可否认的,xb2的分辨率和其他任天堂第一二方比起来要低很多。这里我们引用digital foundry的数据,主机模式下最高720p,但是由于动态分辨率的存在,最低能掉到540p,在复杂场景也经常掉到560p。掌机下最高540p,最低甚至能掉到368p(当然,过场动画的时候m社似乎对动态分辨率的调用更加谨慎,很多时候看起来都是保持在最高分辨率的,观感还是不错的)。无论是和主机稳定1080p的马车8相比,还是和主机大部分时候能保持在900p的荒野之息相比,这个分辨率似乎都显得惨了点。尤其和前作wiiu的720p对比起来,怎么主机下分辨率还不如了?这是怎么一回事?更进一步,和xbx一样,半透明物体也是以半分辨率进行渲染。那么很自然的,分辨率低,画面自然就糊。。。且慢,分辨率低细节看不清楚是正常,锯齿多也正常,但是异度之刃2很多时候是细节糊起来,而不简简单单是锯齿多,色块大的问题,这是怎么回事呢?

2. 让人又恨又爱的TAA

既然单纯分辨率低解释不了这么糊的原因,那么还有啥呢?这就要说到xb2的抗锯齿方式了。xb2用的抗锯齿是时域性抗锯齿(temporal antialiasing),简称taa。传统的抗锯齿方式在现代越来越复杂的渲染管线下实用性太低:老旧的MSAA对于现在常见的延迟渲染不能直接使用,要专门适配,但是结果也没法对复杂光照模型产生的光照着色锯齿进行很好的处理;基于后处理的fxaa以及smaa这类技术也是根据邻近像素明暗度去搜索锯齿边缘,也对上述问题束手无策。在这种情况下,我们只有超采样,提高分辨率,才能减弱锯齿。但是提高分辨率的代价是很高的。而且往往对于不少游戏来说,哪怕是提高到4k,实际上锯齿也还是很明显的,所以这是非常低效的做法。那么一个聪明人就想了:游戏里画面其实存在一种连续性,大部分时候这一帧画面和下一帧画面差别不是很大,那我们可不可以复用这个信息呢?答案是 -- 可以的,不过问题多多,不过大家也在用,不过玩家经常喷,不过没办法为了省性能还是得用。

尽管一个好的TAA的实现需要非常细致的调节,但是它的核心思想很简单:对于当前帧的每个像素,我们找到它在上1(或者N)帧对应的位置,然后复用这个信息。这样,如果我往前倒退1帧,分辨率不就乘了2?往前退2帧不就乘了3?这里就存在一个小问题,假设一个相机一直不动,它所渲染的画面也都是静态的,那么一个像素无论在多少帧前渲染出来的颜色都是完全一样的,这也没法超采样啊?为了解决这个问题,我们需要对一个相机每帧都进行一个轻微的抖动,这个抖动距离在一个像素以内(有n多种抖动方法,最简单的就是2x抗锯齿就把像素上下或者左右均分,然后选两个区域的中心,不过这种很少用),这样每一帧同一个像素采集到的像素就不一样啦!其实这就类似把一个4k画面,每帧只渲染2x2像素里1个像素,然后下一帧换一个,以此将渲染负担均分,类似摄影里面抖抖乐的思想。


在xb2里可以观察到,相机动起来的时候锯齿是最明显的,停下来的时候静态物体的锯齿快速收敛(左:运动画面;右:精致画面,注意楼梯扶手的锯齿):



那么这和xb2糊有什么关系?xb2使用了时域超采样不应该变得更清楚吗?这就又是一个经典的“想法是好的,但现实总有缺陷”的例子。在实际游戏里,画面往往不会是静止的,相机会移动,物体也会移动,这就意味着我们需要计算每个像素在每帧之间移动了多少距离,从而找到它上一帧在的位置。这里我们还是借用动视关于taau的ppt来解释。c_m是当前帧的像素,我们根据像素移动的位置找到了前一帧的像素c_m,然后复用这个历史信息。


但像素的移动距离未必是正好能落在像素中心的,如果它最后落在了图上我标注的红点的位置,那历史像素信息应该怎么判断呢?这就是一个大家都想解决的问题。最简单的方法就是只用最近的包含红点的像素,但这样并不正确,会加重锯齿。那如果对邻近的4个像素根据红点距离进行插值呢?把这些像素颜色混合一下?我猜这就是xb2的做法,但这个也带来了一个很大的问题。两个像素中间的颜色并不是两个像素的平均值 -- 如果真的是这样,那也不会有锯齿产生了。如果直接按照线性距离对邻近像素混合的话,我们相当于模糊了历史帧的数据,我们实际上获得的历史帧数据是有误差的,而这个误差就是现在很多TAA做法里模糊的来源。

这个问题不是不能改善,比如使用双三次方过滤,或者像fsr 2.0里用lanzcos滤波,但往往会引入额外的纹理采样开销(ns作为移动设备的带宽开销是很紧张的),也许这就是为什么xb2还是用基本双线性采样历史帧的原因。当然taa引发模糊还有另外的一些诱因,限于篇幅我就不长篇大论了,不然大家看的也没劲。xb2为了解决这个问题在taa后使用了一个锐化后处理,而这个大概是嫌掌机模式分辨率太低,m社在掌机下调了个奇高无比的锐化值。这种均一无差别锐化配合低分辨率,让掌机模式下的画面看起来噪点尤为严重,很多细小物体周围都有一圈过锐导致的色偏,整个画面感觉乱乱的:



3. 低质量纹理滤波和Mipmap
那么xb2画面糊的罪魁祸首的第三点就是低质量的纹理滤波。我很少看到有人说到这点,但其实这对画面细节还是非常重要的。我们先来看一张图:





明明是同样的木板纹理贴图,但是在近距离的方框里显得细节多多,而在远处的圆框里就糊成一片,缺少细节了。这是为什么呢?那么原谅我还是得解释一些无趣的术语以提供一些合适的背景:当我们把一张贴图画在模型上的时候,我们并不是无脑的直接使用这张贴图,而是要选择一个合适的贴图分辨率。可是难道贴图不是越清晰越好吗?这是为了抗锯齿的需要。由于屏幕实际渲染分辨率和贴图采样分辨率是不匹配的(举个例子,贴图里相机非常远,一整个贴图都被包含在了一个屏幕像素里,这样相机轻微移动都会导致采样出来的颜色不一样),永远使用最高分辨率的贴图会导致纹理锯齿明显,就类似下图这样,由于斜面角度越来越大,远处的一个屏幕像素能包含许多纹理像素,导致锯齿激增:



我们当然可以提高屏幕分辨率来解决,但往往几百倍的分辨率提升才能完全解决问题,这很明显是不现实的,因此大家觉得我们要不提前把贴图做个模糊吧!这样绘制贴图的时候,根据一个屏幕像素实际包含多少纹理像素来选择对应提前模糊好的贴图,这样避免了纹理锯齿。而这个技术就是大家耳熟能详的mipmap。

(借用下虎书经典实例)


但是这个方法存在一个问题,斜面倾斜角度不同,在每个方向的模糊程度其实是不同的,但是mipmap是在纹理空间均一化的模糊,所以往往会导致呈现结果比实际要更加的模糊(都按最糊的选了)。为了解决这个问题,游戏里有各向异性过滤(anisotropic filtering),这又是一个耳熟能详的词语。虽然是个gamecube就支持的技术,但是高质量各向异性过滤意味着纹理采样需要更多次,而,再一次的,switch的带宽是严重的瓶颈,吃不住这个开销。实际上ns上就没有几个游戏用了高质量各向异性过滤。xb2里这就是用了这个技术,对于斜面和远处物体,使用了更高级(分辨率更低)的贴图。那么,没有各向异性的情况下,自然而然就显得很糊。这也不是没有优点,远距离用的贴图分辨率越低,由于现代gpu纹理采样单元的机制,越容易触发纹理缓存的命中,可以降低采样开销。

这样我们对xb2为什么看起来这么糊的问题进行了回答。综合来说就是 较低的分辨率,不够完善的TAA 和 缺乏各向异性过滤的纹理采样 三个效应互相叠加,导致游戏画面看看糊糊的。而全屏锐化效果又凸显了画面上凌乱的噪点(话虽如此,我大概80h都是在掌机下打的,其实也能接受。。。)

那xb2的画面为什么会变成这样子呢?为啥xbx没问题,到xb2就不行了呢?难道xb2真的“画面不如ps2”?这就不得不说xb2画面的进步了 -- 而某种意义来说xb2的技术选型是相当的激进的。





延续自xbx的视距和阴影距离
首先,xb2的视距仍然是相当惊人的。之前看国外论坛里流出的xb2画质配置文件,相机的远裁剪面有80,000单位之远,实际在游戏里我们也能体会到像地形城镇这样的重要物体,视距也都是非常远的。同时和xbx相比,小细节的视距也相对增加了,物体突然起来的闪现总体也减少了很多。与此同时,场景的复杂度也**增加 -- 比如古拉的托里格镇,设计上立体感十足,建筑架构纵横交错,npc到处漫步,**增加了绘制负担。据我目测,xb2应该使用了某类基于gpu的遮挡剔除算法,让被遮挡的物体不参加绘制,所以有时候在一些特殊相机运动和角度下能看到某些物体需要等个1、2帧才会绘制出来。但没有截帧所以无责任猜测。

阴影上也没有吝啬,xb2哪怕是动态物体的阴影都非常远。这里我放一个视频来体现动态阴影的距离:b站视频链接。看不了视频的谭友我简单贴张图,红圈里就是远处风车投下的阴影:



这和隔壁旷野之息里保守的阴影距离形成了鲜明的对比。而且软阴影的质量也有了较大的提升,近距离的阴影不再像xbx里那么低精度了。当然这也是沾了taa的光,可以0开销超采样软阴影效果。不过也不是没有遗憾。除了太阳月亮这些主光源外,场景里其他的光源并不会投射阴影,不过考虑到性能,这也是没办法的事。

基于物理的材质系统
还记得之前说的PBR吗?除了角色使用了卡通渲染外,诸如场景,道具,衣物之类的材质,xb2都是用了基于物理的材质系统。商会就是个很好的例子,这个场景里有各种各样的材料:粗砺的地毯,糯糯的绒毯,粗糙的木板,油润上漆的木扶手,金属的灯架,光滑的陶瓷...各种物体的材质和现实一一对应。在PBR的加持下,画面对比X立马有了很大的提升。



动态的全局光照明
和xbx的天光比较起来,xb2的全局光明显有了不少改善。尽管不知道具体的实现方式,但我们可以看看它在游戏里的表现和局限性。
地上绿色的草地反射在了动物的腹部:



不过为了省性能,似乎永远采样最近的一个光照探头,导致有时候室内看室外,环境光会显得不太对。这大概是因为实时光照变化所以只负担的起更新一个探头的开销:
(从室内看室外觉得阳光明媚,但来了外面发现是阴沉沉的)



基于屏幕空间的环境光遮蔽
xbx里简单的圆片状间接光阴影也不再出现,取而代之的是根据屏幕空间深度信息进行碰撞检测得到的环境光遮蔽,也就是所谓的ssao。xb2里的ssao实现是我非常喜欢的一种,不仅仅是在物体边缘有一圈窄窄的黑边(比如消逝的光芒里的ssao,图源来自df):





(防止剧透简单打了个码)当然屏幕空间的办法自然有他的缺陷,当遮挡体离开镜头的时候这个遮挡效果自然就消失了,就像第二张图里红框内的遮蔽效果就突然没了一样了。想看动态的可以看这里:b站视频。值得一提的是,这里的ssao也用了类似taa的做法,复用累计前几帧的ssao结果,以降低最后的噪点,因此出来的效果还是非常不错的,实际上也是xb2里最吃资源的效果之一(再一次考虑下ns那个带宽)。

基于屏幕空间的细节阴影
为了进一步提高过场演出时的阴影精度,让角色身上的小细节也能投下较为锐利的阴影,xb2还使用了屏幕空间深度信息来追踪阴影。无论是巴恩会长胸前的饰品,还是雷克斯的额发或者衣领都依靠这个技术提供了接触阴影。




改进的丁达尔效应/体积光
在xbx里这是一个简单的径向模糊。而在xb2里这个效果则是根据需求由以下三种方式构成:
1. 在部分场景里(比如商会),仍然使用xbx的手法来描绘太阳光的丁达尔效果。缺点就是如果看到光源的话也就看不到体积光效果了(左图:无遮蔽;右图:有遮蔽)。



2. 对于大量射灯之类的体积效果,用半透明特效面片模拟。当玩家走近的时候渐渐隐藏,防止穿帮。



3. 对于过场动画,使用比较昂贵的raymarch的体积光效果,这样哪怕看不到光源也能模拟出真正的体积光效果(希望s1压缩不要太狠,人物边缘遮挡住了体积光)



完全改进的云海渲染
不止光照收到了体积加强,作为xb2世界观重要组成部分的云海的渲染进行了完全革新。尽管一些地表的雾气效果仍然在用一直面向玩家的面片,但是无论是天穹上的云朵还是脚下浮动的云海都是真正基于体积渲染出来的了。你可以跳进云海里而不会产生面片导致的穿帮,云海的光照也充满了体积感。理所当然的,这也是个非常吃带宽的特效,为了能上ns不可避免的要砍精度,所以偶尔能看到云海暴露出来一片片的感觉,其实就是有限的raymarch导致的视觉瑕疵。除此之外,云海的分辨率也是低于游戏渲染分辨率的,放的很大可以看到噪点。这时候又可以借助taa进行免费的降噪(这下明白为啥现在游戏都要上taa了吗?)



(面片制作的地表雾气,其实也很有氛围感)


实时反射探头+屏幕空间反射
xb2的水面反射一方面继承了xbx的实时更新反射探头。为了降低开销,这个更新的帧率是低于30fps的,一般其实看不出来,我废了半天劲才找到xb1决定版的一个画面(来源df关于xb1de的评测开头),可以看到反射探头更新的滞后,这个可惜只能视频看了:b站视频

反射探头的问题就是视差不正确,因此xb2还用上了屏幕空间反射(ssr)来提供视差正确的反射效果。因为ssr需要多次采样贴图进行raymarch,对带宽的开销也是很大的,因此xb2里的ssr精度也是砍了的。



ssr受限于屏幕空间,同样没办法反射不在屏幕上的内容,这就由反射探头来提供反射了。ssr也不知道物体的厚度,因此偶尔也会错误的把前景反射进去。比如下图里光的头发就被错误的反射了,而雷克斯周围则被正确的判断出被遮挡了,该用反射探头的内容造成了类似“空洞”一样的效果。



模拟人眼的曝光适应
虽然xb2的美术设计非常动漫向,但就渲染管线来有一些意外的模拟物理现象的效果。比如这里提到的人眼的曝光适应。xb2里从昏暗的区域向亮的区域看的时候,亮的区域会有一种类似“过曝”的效果,当慢慢走向亮区时消失:



逐物体的动态模糊
为了体现人物动作的速度感,xb2也用了逐物体的动态模糊效果(xbx用了全屏的动态模糊,我个人不太喜欢,一转镜头就会糊)。当然这里动态模糊质量不够高,采样数低,而且前后景也错误的融合了,不过基本都是为了降低开销的取舍。



虽然还是纸片草,但是有那么一丢丢进步了
xb2的草还是非常纸片,但和xbx里全是面向相机的面片草比起来,xb2做法稍微复杂了点:他们让一部分面片永远面向相机,一部分穿插的面片保持在不变,混合起来从而产生更好的观感。所以正着看的时候还是不错的,俯视的时候的穿帮也少了一点:



不过这个草缺少光照,在掌机下有时候看起来一大片一大片像纯色色块一样,还是有点突兀的:


这样差不多涵盖了xb2引擎大部分的渲染特性。不难看出,xb2为了上很多高级特效,不惜砍了游戏的基础分辨率。这样的激进的技术抉择和xbx时的保守形成了鲜明的对比,不禁让人想问当初monolith是不是错误的估计了ns的性能。所以要说xb2画面不如ps2游戏,那肯定是胡扯。英伟迪亚的樱花雨相信每个看过人都会印象深刻:



这里得额外提一下另外一件事。在最近xb3相关的帖子里经常看到有人说xb3过场动画远景模糊,阉割了画质,但我看了图之后发现这只是xb2也有的景深而已,模拟相机聚焦处清晰,焦外模糊的效果。由于ns的带宽有限(话说我提了多少次了?),承受不起全分辨率高斯模糊的开销,因此这个效果是降分辨率做的模糊,但是完全不影响游戏原生分辨率。xb3那张图我就不放了,真要看可以去xb2模拟器楼看,我记得也不涉及剧透,但这在xb2里其实也一样,焦外的雷克斯明显像素化严重,但这并不意味着原生分辨率被砍了。



其实第三章英伟迪亚那个标题图能更好地展示,但当时忘截了。

=====================结尾语=====================

呼,总算写完了。本来还想写xb3的,但是篇幅太长了实在写不动了(估计你们也读不动了吧)。如果你能全部看完,我深表感谢;如果看不完也太正常了。我力图以最大的努力提高文字的可读性,不用难理解的专业术语缠住谭友,但是在只有文字和静态图片的情况还是会觉得力不从心,希望各位读者不要嫌弃。另外大部分图片我为了防止剧透都打码了,如果有遗漏还望指出。这篇文章本来是想庆祝xbx移植ns的时候写的,但是xb3发售前心情激荡,仍不住还是花了两天写了这篇文章。期间花了很大时间去收集图片和视频资料(指打开xb2,然后开始刷挑战之地浪费了一个项目),希望能为等待xb3解禁的各位谭友提供点乐子。

最后:




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

评分

参与人数 106战斗力 +154 收起 理由
折木奉太喵 + 1 好评加鹅
wfantasia + 2
魂淡放我出去 + 1 好评加鹅
KyonSuzumiya + 1 好评加鹅
馥郁西多士 + 1 好评加鹅
ぽんぽこ仮面 + 2 好评加鹅
zhjnppy + 2 好评加鹅
HOBBITXDD + 2
byran1996 + 1 好评加鹅
hhgjf + 1 言之有物
咕咕咕9527 + 1 好评加鹅
2296506 + 1
路西恩 + 1 好评加鹅
hansel + 2 好评加鹅
66367749 + 1 好评加鹅
ultraseven + 2 好评加鹅
Hanzong + 1 好评加鹅
forerunner01 + 1
faithlifer + 2 欢乐多
childhood20 + 1 好评加鹅

查看全部评分

回复

使用道具 举报

     
发表于 2022-7-28 16:31 来自手机 | 显示全部楼层
本帖最后由 阝东水扁 于 2022-7-28 16:34 编辑

佩服你写这么多,从头到尾看完了,写的真好。不过任天堂放弃高性能路线后,孱弱的机能决定了其上限远远落后时代,要有理有据的表扬他的画面技术不是一件轻松的事
回复

使用道具 举报

     
 楼主| 发表于 2022-7-28 16:32 | 显示全部楼层
阝东水扁 发表于 2022-7-28 16:31
佩服你写这么多,从头到尾看完了,写的真好。不过任天堂放弃高性能路线后,孱弱的机能决定了其上限远远落后 ...

在低性能平台如何利用新的技术平均画面和性能,我觉得值得一聊。当然没什么惊人的,但很有意思。

图一乐

—— 来自 S1Fun
回复

使用道具 举报

头像被屏蔽
     
发表于 2022-7-28 16:33 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

头像被屏蔽
     
发表于 2022-7-28 16:35 来自手机 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

头像被屏蔽
     
发表于 2022-7-28 16:35 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

     
发表于 2022-7-28 16:35 | 显示全部楼层
只能说Monolith尽力了,希望1-2个世代后能玩上remaster
回复

使用道具 举报

     
发表于 2022-7-28 16:39 来自手机 | 显示全部楼层
GuardHei 发表于 2022-7-28 16:32
在低性能平台如何利用新的技术平均画面和性能,我觉得值得一聊。当然没什么惊人的,但很有意思。

图一乐 ...

楼主觉得ns平台目前画面最好的游戏是什么呢?
回复

使用道具 举报

头像被屏蔽
     
发表于 2022-7-28 16:40 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

     
发表于 2022-7-28 16:43 | 显示全部楼层
回复

使用道具 举报

     
发表于 2022-7-28 16:46 | 显示全部楼层
本帖最后由 collasong 于 2022-7-28 16:48 编辑

有个东西要提到的是,xb的天气虽然是动态的,但是环境阴影是锁死的,虽然节省了开销但是整体还是遗憾。这个在df的xb3评价里面有说到。xb2反射的分辨率好像只有1/4还是1/8,之前和折腾模拟器的朋友聊过。
回复

使用道具 举报

     
发表于 2022-7-28 16:47 | 显示全部楼层
好多东西都得到了解答,感谢lz!这样一看虽然机能是拖了后腿,但是开发组的技术力一直不算低的,有些做法很激进前沿了
回复

使用道具 举报

     
发表于 2022-7-28 16:49 | 显示全部楼层
好文,不过看着看着眼就花了
回复

使用道具 举报

     
发表于 2022-7-28 16:51 | 显示全部楼层
感谢科普。
回复

使用道具 举报

头像被屏蔽
     
发表于 2022-7-28 16:51 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

     
发表于 2022-7-28 16:51 | 显示全部楼层
好东西
回复

使用道具 举报

     
 楼主| 发表于 2022-7-28 16:55 | 显示全部楼层
collasong 发表于 2022-7-28 16:46
有个东西要提到的是,xb的天气虽然是动态的,但是环境阴影是锁死的,虽然节省了开销但是整体还是遗 ...

阴影就是我说方向不变的
但那个阴影是能投射到动态物体上面的,我猜方向不动要不然是用了某种shadowmap cache技术,要不然是防止阴影连续移动时边缘游动的锯齿

所有屏幕空间特效都降分辨率做的,像ssao,接触阴影也能看到白边,这个就明显是低分辨率upscale上去了。ns这个带宽还是伤不起

—— 来自 S1Fun
回复

使用道具 举报

     
 楼主| 发表于 2022-7-28 16:59 | 显示全部楼层
阝东水扁 发表于 2022-7-28 16:39
楼主觉得ns平台目前画面最好的游戏是什么呢?

这个嘛
a说某游戏分辨率高,b说某游戏特效多,c说某游戏帧数稳定60
这个很大程度其实看开发团队的抉择和取舍。
比如我很喜欢奥德赛的材质和美术,但不可否认奥德赛无论是分辨率,阴影分辨率还是细节绘制距离都是有缺陷的。
另一方面xb2堆了很多特效,但本身分辨率损失太严重。
荒野之息倒是个很平衡的结果,即没有完全放弃分辨率,也挺注重特效,但作为开放世界,虽然技术难点高但细节上就不会有鬼屋3这样这么好。
要不然还有纸马这种材质和光照的做得很牛x,但是画风另类的游戏(但他画面确实好)

—— 来自 S1Fun
回复

使用道具 举报

     
发表于 2022-7-28 17:06 来自手机 | 显示全部楼层
本来想说本质是螺蛳壳里做道场的“落后产能”
不过上半年刚在3A大作艾尔登法环里体验到了屋内望外美如画,黄金大地生机勃勃,出门一看暗淡惨,甚至还在下雷雨的奇葩场景
回复

使用道具 举报

     
发表于 2022-7-28 17:06 | 显示全部楼层
GuardHei 发表于 2022-7-28 16:59
这个嘛
a说某游戏分辨率高,b说某游戏特效多,c说某游戏帧数稳定60
这个很大程度其实看开发团队的抉择和 ...

不知道Retro会不会带来惊喜,有点期待他们在ns上的表现
回复

使用道具 举报

     
发表于 2022-7-28 17:10 | 显示全部楼层
NS的机能注定就搞不出什么高画质游戏
凑合能看就行了,就算是号称神级优化的doom,稍微仔细看还是能看得出阉割了非常多画面质量
不过第一次玩XB2看到大草原那一幕糊的还是吓到我了。。。
回复

使用道具 举报

头像被屏蔽
     
发表于 2022-7-28 17:18 来自手机 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

     
发表于 2022-7-28 17:23 | 显示全部楼层
好评加鹅,看到楼主的文章回想起以前在数毛楼交流的日子,也感谢楼主让我学到了很多相关知识
回复

使用道具 举报

     
发表于 2022-7-28 17:26 来自手机 | 显示全部楼层
只能说,MONO很多在画面上的取巧,反而为他们在填充要素,加强细节,堆演出上节约出了资金。
回复

使用道具 举报

     
发表于 2022-7-28 17:29 来自手机 | 显示全部楼层
好文顶,比df写得好多了。为了让实机的观感过得去我专门买了个小尺寸便携OLED屏,让720p显得没那么尴尬——
回复

使用道具 举报

头像被屏蔽
     
发表于 2022-7-28 17:31 来自手机 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

     
发表于 2022-7-28 17:40 来自手机 | 显示全部楼层
whzfjk 发表于 2022-7-28 17:31
我也是鬼迷心窍买了oled屏,结果忘了像素排列的事,买回来一看文字观感全灭,最适合的 gal 都很微妙。
不 ...

基本我就是给ns御用而已,从外部提升一下可怜的观感……
回复

使用道具 举报

     
发表于 2022-7-28 17:41 来自手机 | 显示全部楼层
写的很好,正好刚看了数毛社对xb3的测评,希望等3代通关了可以看到楼主的新作。
回复

使用道具 举报

     
发表于 2022-7-28 17:49 | 显示全部楼层
全读完了,感谢楼主的科普,学到不少
回复

使用道具 举报

     
发表于 2022-7-28 17:55 来自手机 | 显示全部楼层
好分析,楼主写的很到位
回复

使用道具 举报

     
发表于 2022-7-28 17:56 | 显示全部楼层
好文 期待3代评测
回复

使用道具 举报

发表于 2022-7-28 18:36 | 显示全部楼层
好贴,几乎解释了XBX和XB2观感和细节上的差异问题

另外XBX还有个特点,就是边缘场景部分,多边形数剧降
森林有个边缘的山,面向大地图的一边还是PS3时代的多边形数,结果另一边的悬崖就干脆跳回了PS1的完全方块状

为了分辨率,实在是牺牲了很多细节
回复

使用道具 举报

头像被屏蔽
     
发表于 2022-7-28 18:41 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

     
发表于 2022-7-28 18:46 | 显示全部楼层
先码待会看
顺带放个别人转国外的一个白树大陆剪辑(当然重度调色+fov就算X有翻炒机会也不会靠近这种效果啦]
https://www.bilibili.com/video/BV1Ka411v7DS
回复

使用道具 举报

     
发表于 2022-7-28 18:50 | 显示全部楼层
感谢,学习了,请问有知乎之类的链接可以分享么
回复

使用道具 举报

     
发表于 2022-7-28 18:58 来自手机 | 显示全部楼层
楼主每个技术分析贴都保存了,非常有趣,等过几个月有空再写写XB3呗。个人一直对“低性能”的设备情有独钟,如何平衡取舍或是“取巧”制胜是门艺术,也是真实力。XB2还让我放弃了淘汰家里那台50英寸PDP的想法😂
回复

使用道具 举报

     
发表于 2022-7-28 18:58 | 显示全部楼层
这才是精华贴
回复

使用道具 举报

头像被屏蔽
     
发表于 2022-7-28 19:18 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

头像被屏蔽
     
发表于 2022-7-28 19:19 来自手机 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

     
发表于 2022-7-28 19:22 来自手机 | 显示全部楼层
战狼PTSD 发表于 2022-7-28 16:35
不至于,GBA也落后,上面用的画面技术现在都还有UP主做解析
螺丝壳里做道场更有意思,虽然NS一直被骂不如 ...

中低端手机原画面根本没法看,只是大家默认用高配pc顶配手机画质聊画面
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|上海互联网违法和不良信息举报中心|网上有害信息举报专区|962110 反电信诈骗|举报电话 021-62035905|Stage1st ( 沪ICP备13020230号-1|沪公网安备 31010702007642号 )

GMT+8, 2024-9-23 05:24 , Processed in 0.154226 second(s), 6 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表