Re: [新闻] WoW 6.0 的图像引擎进化

楼主: ONISUKA (我不是鬼冢英吉)   2014-09-21 14:28:09
对这个领域稍微有点了解,底下介绍给不熟悉电脑图学的朋友
官方繁体中文版在这:
http://tw.battle.net/wow/zh/blog/15936285/
在讲CSAA跟MSAA之前,先要从AA说起。
什么是AA(Anti-Aliasing)呢?
http://zh.wikipedia.org/wiki/%E5%8F%8D%E9%8B%B8%E9%BD%92
撷取WIKI的解释:
在3D绘图时,每个图形由像素组成,每段瞬间画面由影格组成,因为萤幕上的像素有限,
如果要表现出多边形的位置时,因技术所限,使用绝对坐标定位法是无法做到的,只能使
用在近似位置采样来进行相对定位。由于没有足够的采样来表现出3D世界中的所有物品的
图形,所以在最后影像显示上,这些现象便会造成在物品与物品中过渡的边缘就会产生波
浪状、圆形、锯齿和闪烁等失真现象,严重影响了画面的品质。
简单来说,AA(反锯齿)顾名思义就是将画面上的锯齿给消除掉,
可以把它想成是一种柔化、模糊化的技术。
Aliasing的情形很常在电脑上看到,大家可以打开小画家,画一条斜线,
然后再用放大镜放大好几倍,就可以看到斜线的边缘呈现锯齿状。
会有这样的原因,是因为一般位图片储存的方式,都是用像素矩阵来储存。
由于斜直线很常会在相邻的整数X座标上,其Y值刚好差一的情形,
但我们又不能使用绝对坐标(因为像素矩阵是整数X整数),
所以斜直线在两个相邻的像素列上,就很容易出现锯齿状的现象。
如下图左。
http://www.markhamilton.info/wp-content/uploads/2011/08/Antialiasing.png
而AA的作用就是将这种现象柔化(模糊化),如上图右。
只要将线条边缘的地方用介于黑色跟白色之间的灰色来填补,
(颜色根据该像素距离黑色线条的远近而有所深浅)
远远的看就会发现眼睛不再觉得锯齿状那么明显(当然近看还是会有)。
回到游戏来说,由于电脑萤幕也是由像素矩阵所构成,
所以当游戏内的物体投影到萤幕时,
只要物体与物体相邻的地方,或者物体的边缘(与背景相邻的地方),
如果没有刚好都在整数数值(也就是刚好落在像素上)的话,
就容易出现锯齿或失真的现象。
那么Aliasing要怎么实作呢,最简单也最暴力的做法就是超级采样
Super sampling anti-aliasing (SSAA),又被称作Full-scene anti-aliasing (FSAA)。
http://www.spec.org/gwpg/publish/fsaa_in_vp10.html
作法很简单,先把影像放大几倍:
http://www.spec.org/gwpg/images/fsaa_in_vp10_clip_image005.gif
再用Super sampling进行采样。
通常是根据放大的倍率取对应的像素,上图就是把上头有绿点的四个像素的颜色值混合,
再除以四以后填回要填的像素位置。
http://upload.wikimedia.org/wikipedia/en/6/61/Supersampling.png
这样子做虽然简单暴力,但缺点就是很消耗GPU资源。
因此OpenGL就提出了多重采样的反锯齿技术,MSAA(Multisample anti-aliasing),
这个方法可以有效地降低GPU所需的资源。为什么呢?
由于多边形的内部通常不太会有锯齿或失真的情形发生,只会在多边形的边缘发生,
所以MSAA先使用Z buffer跟Stencil buffer(按:这两个有兴趣的可以自行估狗)
来找出到底有哪些像素正好是落在多边形的边缘,
然后找出有哪些物体或背景会落在这些像素,然后分别对这些点取颜色、混合、平均。
这样一来就可以省下很多资源,但又可以将输出的游戏画面更柔化。
那么为什么WOW要改用由nVIDIA所提出的CSAA(CoverageSampling Anti-Aliasing)呢?
原因是因为CSAA比起MSAA又更省GPU资源,
一般来说,16xCSAA的效果跟8xMSAA差不多,但其性能下降程度只比4xMSAA高一点。
由于许多新的绘图技术不断加入WOW,导致WOW对于GPU的需求比过去越来越高,
改用CSAA可以把GPU的资源分给那些新的绘图技术,让效能更加提升。
(CSAA的效能提升的原因是采样的方式不同,由于牵扯到很多技术内容,
所以略过不提,详情请参考:http://www.anandtech.com/show/2116/9 )
另外对于只支援DirectX 9的显示卡而言,
可以使用更快速的FXAA(Fast approximate anti-aliasing),
这种作法的取样方式并不会从3D模型上取样,而是直接从输出到萤幕上的图片来取样。
不过有点让人疑惑的就是,nVIDIA在最新推出的Maxwell架构中已不再使用CSAA,
那么使用这些显示卡可不可以获得CSAA效果呢?
由于我们并不知道WOW程式是怎么运行CSAA的,
如果是写在WOW里面,那就不成问题;
如果是需要使用显示卡的CSAA功能,
那么使用新一代不支援此技术显卡(800系列及之后)有可能就得使用其它的技术取代。
(例如用显卡上的MSAA)
但毕竟这些新的显示卡也是今年才推出的,短时间应该不用担心这问题。
而且我想暴雪应该会针对这点做出改良方案吧。
TLDR: CSAA比MSAA更不吃GPU资源,因此更多进阶的显像技术就能充分发挥GPU效果。
所以使用同样的配备,玩6.0的WOW应该可以获得更好的画面品质。
作者: zseineo (Zany)   2014-09-21 14:31:00
作者: frostmourne (Task Force141)   2014-09-21 14:34:00
优文
作者: Layase1 (Layase)   2014-09-21 14:35:00
你这个宅宅
作者: WindSpread (阳だまりの诗)   2014-09-21 14:50:00
长知识推
作者: kashiwa27 (UDON)   2014-09-21 14:50:00
2ch很多AA
作者: king45682 (KingCross)   2014-09-21 14:52:00
你这个宅宅
楼主: ONISUKA (我不是鬼冢英吉)   2014-09-21 14:55:00
...
作者: LeftNight (左曲夜鸣)   2014-09-21 15:00:00
你这个宅宅
作者: e04su3no (钢铁毛毛虫)   2014-09-21 15:04:00
所以我2年前的R6850还能全开吗?
作者: Depersonaliz (无用重物)   2014-09-21 15:46:00
推,简单易懂,专业优文

Links booklink

Contact Us: admin [ a t ] ucptt.com