作者cjcat2266 (CJ Cat)
看板PlayStation
标题Re: [问题] 战神 画面问题
时间Wed May 9 03:23:32 2018
※ 引述《zongshi (SPIDEY)》之铭言:
: 不知道是不是只有我这样
: 就是这次战神的画面,在用右类比转动人物时
: 很明显可以看到奎爷的模组跟背景的交界处呈现较低画质的现象
: 有点像人物周围被上了一圈马赛克的感觉
: 各位有这个问题吗?
之前我推文提到有可能是"时域反锯齿"的副作用
(temporal anti-antialiasing, TXAA)
当时不确定纯猜测,今天玩GoW的时候突然想到
就靠近萤幕去观察,然後看到原po所谓一圈马赛克的感觉了
现在几乎确定是TXAA的副作用
在此分享一下原理:)
(为了避免用太多术语,有些地方有简化或不甚严谨)
注: 看完本文之後有可能以後会更加注意到TXAA副作用
进而影响游戏体验,不想冒此险者请左转
嗯?还在继续读吗?该给的警告已经给了唷!
在TXAA开始流行之前,传统反锯齿做法是"超取样"
大致概念是使用比实际像素数目还要高的取样数目
每个取样点当作是个像素渲染一次
每个像素对应超过一个取样点
像素最终颜色是多个取样点渲染结果的的加权平均值
基本上可想成是运算较高解析度的画面
然後把一些像素融合後缩小成实际解析度
TXAA则是每个frame稍微挪一下摄影机
让摄影机有小於单一像素大小的"微震动"
然後跟上一个frame结合渲染,得到到新frame
如果每个像素只是单纯跟上个frame的同位置像素做加权平均
那效果就只会是单纯的视觉暂留模糊,看起来会更糟!
所以要推测每个像素在上个frame时在哪里
然後用上个frame该位置的像素来做加权平均
这样相当於是用多个frame的时间达到超取样的效果
在算图的时候,不是只算玩家看到的最终颜色结果
中间的运算结果还含像素在空间中的深度、材质参数、速度等资料
速度资料可以用来反推算一个像素在上个frame的位置
就是这个位置的像素颜色被拿来跟当前像素做加权平均
但如果用速度反推算上个frame的像素位置,找不到资料怎麽办?
很多情形都会有这种资料不足的状况
例如位置反推算出来之後发现其实在萤幕外面,根本没有被运算
或是上个frame的像素应该出现的位置被其他物件挡住了
後者就是原po提到的问题
画面旋转的时,角色後绕出来的背景部分在上个frame是被遮住的
用像素速度反推算会找不到需要的资料
所以一般的做法就是对没有过去资料的像素做模糊处理带过
这个副作用,有突然出现或消失的物件
或有迅速移动跨过大量像素的物件时,尤其明显
需要跨过数个frame,经过多次加权平均之後才会把旧资料的影响"清掉"
这样就会产生残影(俗称ghosting)
看看这个Unreal Engine 4的Kite demo
https://youtu.be/nwuFd5uK_xQ
在1:22左右的地方可以看到
快速大面积移动的鞋子,在有高频细节加上风吹变形的草皮背景上留下残影
TXAA另外一个副作用
常常出现在有高频率细节加上特殊扭动效果的物件上
例如被风吹动的头发或者草
扭动效果是用动态方式算出变型的
如果没有正确地同时算出速度
那就无法准确反推上个frame的像素位置
有时候使用的变型函数速度计算太复杂而吃效能
又有时候甚至不可能算出正确速度
因为使用的变型函式无法微分而算出速度
这样就只能将就用估算的方式计算速度
结果还是比完全没有速度资料好
但是多少会有诡异的残影
还有一个TXAA常见的副作用
会出现在没有整合到核心渲染流程的元素上
例如某些半透明物件或者某些特效
绘制这些元素的时候用的是经过微震动後的摄影机位置
但是没有经过时域加权平均的流程
所以能看到这些元素没有经过反锯齿处理、且又有微震动
例如GoW中Niflheim一开始桥上的石头大门上的蓝色发光符文
就近观察就可以注意到小於一个像素大小的微振动
既然TXAA有这些副作用,那为什麽还这麽热门呢?
两个字: 便宜 (运算资源消耗方面)
跟增加取样数量的反锯齿方法比起来
每个frame需要运算的像素数量维持不变
只是增加了用速度反推上个frame像素位置和读取结果的额外运算
就像为什麽几乎所有游戏都要用LOD (level of detail)
过远的物件用比较简单的模型替换
替换过程没有处理好,就会让玩家看到视觉不连续性(俗称pop)
原因也是两个字: 便宜
或是像仁王,较远敌人的动作帧率会减半
原因还是这两个字: 便宜
开发游戏有很大心力是花在从众多效能优化手段中取舍
在副作用可接受的范围内,想办法让玩家体验最佳化
能够好好享受游戏是最重要的
我在玩GoW会被的优化副作用干扰到吗?不会
偶然间注意到TXAA副作用时,顶多想说 "啊,是TXAA"
然後照样继续玩,我觉得GoW超赞的啊!
以上
--
Web
http://AllenChou.net
Twitter
http://twitter.com/TheAllenChou
LinkedIn
http://linkedin.com/in/MingLunChou
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 160.33.43.15
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/PlayStation/M.1525807419.A.50C.html
1F:推 itsawar99: 先推一个免得人家以为我文组的看不懂05/09 03:48
※ 编辑: cjcat2266 (160.33.43.15), 05/09/2018 05:16:34
※ cjcat2266:转录至看板 GameDesign 05/09 05:23
2F:推 nonedude: 推CJ 05/09 05:46
3F:推 e04su3no: 嗯嗯 原来如此 05/09 06:26
4F:推 kimisawa: 你们家有没有因为战神感到压力啊?XD TLOU2期望很高 05/09 08:06
5F:→ kimisawa: 良性竞争 05/09 08:07
6F:推 PTTfaggot: 推 05/09 08:26
7F:推 yanuichou: 推 CJ大 05/09 08:27
8F:推 zorroptt: 哼哼 和我想的一样 (心虚 05/09 08:28
9F:→ cjcat2266: 玩战神然後说 "哇,那个效果想试试看" 的情况是有的 05/09 08:32
10F:推 dklassic: 推 CJ 05/09 08:51
12F:→ dklassic: 细的反锯齿解说影片,应该看这个最简单 XD 05/09 08:51
13F:推 moritsune: 先推一下以免人家发现我看不懂 05/09 08:53
14F:推 antony0310: 也许该看一些电脑图学的书,不然也只是好像懂 05/09 09:04
15F:推 itsdelovely: 推 05/09 09:20
16F:→ MadMagician: 便宜以外还有降低运算负担吧 05/09 09:38
17F:→ cjcat2266: 那就是我所谓便宜的意思 05/09 09:47
18F:→ cjcat2266: 等等,我的目标是不会图学也看得懂,还有什麽地方需要 05/09 09:47
19F:→ cjcat2266: 简化吗? 05/09 09:47
20F:推 dklassic: 应该没问题吧 XD 大概只是「先推以免别人觉得我看不懂」 05/09 09:52
21F:→ dklassic: 的梗 05/09 09:52
22F:推 kincaid520: 谢谢你的解说,想请问传统反锯齿是指FXAA或MXAA吗(不 05/09 10:08
23F:→ kincaid520: 知道我有没有记错名字> <||| 05/09 10:08
24F:→ cjcat2266: FXAA是後制手法,效能好但效果有限,MSAA是超取样的一 05/09 10:39
25F:→ cjcat2266: 种 05/09 10:39
26F:推 OROCHI97: 推,写的算好懂啊 05/09 10:44
27F:推 evo2001: 推解说,浅显易懂 05/09 10:46
28F:推 kincaid520: 谢谢回答 05/09 11:11
29F:推 xul4rmpcl4: 可以懂 05/09 11:20
※ 编辑: cjcat2266 (23.242.26.50), 05/09/2018 11:22:45
30F:→ kuku321: TXAA对於特效也是蛮破坏性的要素 FF15的特效美术师对TXAA 05/09 12:45
31F:→ kuku321: 造成的破坏很头痛 也因此DQ11没有采取TXAA 和粒子特效等 05/09 12:45
32F:→ kuku321: 的相性并不是很好 很容易让特效整个糊掉 05/09 12:45
33F:推 sarusama: 看不懂还是要推~ XD 05/09 12:50
34F:推 x12118: 推,回家开战神来试试开眼了吗?XD 05/09 13:11
35F:推 jakechen1027: 推,很清楚 05/09 13:55
36F:→ ksng1092: 其实搭配慢动作影片(其实动态gif也就够了)会更好懂XD 05/09 14:03
37F:推 patrickleeee: CJ的文推就对了 05/09 14:16
38F:推 graphict: 大推啊 05/09 22:38
39F:推 PangYen: 推 每次看cj大的文章都可以学到一些东西 感谢分享 05/09 23:24