写在前面:
必须先说明本回答从其视觉原理出发而对技术细节未有描写,希望大家看了回答能对棋盘格渲染这个概念有个直观的了解。据知乎用户YT IM和大萨比的回答透露,PS4pro 的插值方式也许在棋盘格渲染基础上保留了更多的 3D 信息来更好地优化渲染图像,达到更佳的视觉效果。
正文:
并非 PS4pro 独有,其他游戏,例如彩虹六号围攻在 PC 上的渲染技术也使用了棋盘格渲染(Checkerboard Rendering Technique)可以在画面选项中开启:
这里的 " 页框交错过滤 " 就是这个技术。而 TXAA 其实就是结合了反锯齿的页框交错过滤,开 TXAA 2X 已经能达到欺骗肉眼的效果了。
那么这个棋盘格渲染到底是怎么回事?
这是一种把低分辨率插值成高分辨率的一种画面拉伸技术。
首先要注意:很多人会混淆插值和拉伸,但严格来说它们不是同一个概念,我们先把它们理理清楚。
光栅图像(位图)拉伸画面(Upsampling),意味着需要更多的像素去填充增大的空间。
这就是插值(Interpolation)
图像处理早期,插值的方式就是简单地用邻近像素填充拉伸后的画面(Neighbors Interpolation)
例如电子游戏早期时代,大部分游戏输出到隔行扫描 CRT 上是只有半场图像的,就像这样:
放大后
而实际渲染的画面大小是这样的:
一帧实际渲染像素其实是 320*240,在电视上拉伸成 640*480 大小的画面(近似比方,实际 MD 的输出是 320*224)
如果在逐行扫描电视上,就会拉伸成这样:
也就是把每个像素在水平和垂直方向上拉伸了一倍。这是直接拉伸(Nearest Neighbor)的概念。
而进阶的插值处理,需要在像素之间用它们的中间色插补,相比拉伸直接复制相邻像素,这类插值有个计算过程。而计算中间色的方法有很多,这就形成了多种插值方式。
做个模拟,是这样的
水平拉伸,垂直方向线性插值(Linear Interpolation):
↓
水平和垂直方向都插值(双线性插值 Bilinear Interpolation):
↓
(想象一下黑色部分由相邻像素间生成中间值像素插补)
这个插值其实就是电脑模拟器上才有的柔化过滤的功能,看起来比直接拉伸稍微柔和一些。在当时的游戏主机上是没有这个处理的,因为:
一是在 CRT 电视上观察,基本没有区别。
二是插值是为了更保真地再现三维实体映射成二维位图前的画面,这在像素时代没有意义。
HD 分割线
------------------------------------------------------------
到了 HD 时代,在有限的硬件资源和无限的感官要求越来越难以调和的矛盾下,插值的作用就体现出来了,还是拿图说明(手机用户请点开看大图)
原图(488*540):
为了节省资源,更快地渲染,采用抽线渲染映射成了 244*540 的画面:
直接拉伸(Nearest Neighbor),锯齿真难受:
水平方向线性插值(Linear Interpolation),注意地砖边缘,锯齿弱了,但是雕塑还是很不爽:
怎么办呢?看来硬件不行原生分辨率上不去靠投机取巧还真没办法?
别急,看看这个:
这张图从垂直方向和水平方向都间隔地抽去像素,实际渲染像素总量也是减少一半。
直接拉伸看看
试试水平拉伸:
垂直部分边缘出现间隔锯齿。
试试垂直拉伸:
水平部分边缘出现间隔锯齿,但也比抽线方案强多了(这已经接近彩虹六号围攻的页框交错过滤技术)。
然后看看在所有相邻像素之间取中间色值,插值的效果:
怎么样,尽管还是有部分瑕疵,但是视觉效果怎么说都舒服多了吧;
放大对比:
(黑色部分像素由相邻四个像素的平均色值生成插补)
为了方便理解我采用了一个像素占一个棋盘格的方式插补,在实际的图形渲染技术中还有占 1/4 棋盘格等其他交替插补方式,视觉原理是一致的。
它的优点已经很清楚了,缺点就是在对比过于强烈的边缘会出现交错杂点,所以尽量要与反锯齿技术配合避免强烈的边缘。
拿 ARMA3 来举例(需要点大图看细节)
未经反锯齿处理的情况
原图:
50% 棋盘格抽取:
插值:
在边缘处锯齿更明显了。
经过反锯齿处理的情况
原图:
50% 棋盘格抽取:
插值:
差别小了,细看瑕疵都在对比强烈的物体高光边缘处。
这就是所谓的棋盘格渲染(Checkerboard Rendering Technique)的奥妙。
而且例图本身分辨率不高,要是在客厅坐沙发上看 4k 电视,这种插值法是很难看出瑕疵的;
要知道这可比直接渲染要少了一半的像素值啊,而简单的插值运算本身对资源消耗是可以忽略不计的。
也就是说可能带来大量的帧数提升!毕竟 60 帧才是起码的正义。
------
2016/9/29 补充更新题外知识点
在棋盘格插值渲染之外我们常用的除了线性插值(Linear Interpolation)、双线性插值(Bilinear Interpolation)和三线性插值(Trilinear Interpolation)外还有双立方插值(Bicubic Interpolation)
它们也通常出现在 3D 游戏的贴图处理领域,称为贴图过滤。
这是 50% 的双立方插值(Bicubic Interpolation):
很熟悉的朦胧感吧,它的计算会比较慢一些。其实双立方插值就是目前主流图片处理软件缩放图片的默认处理方式。
------
例图是 MD 上的 Final Fight CD
以及 Carlo Scarpa 设计的 CANOVA SCULPTURE GALLERY 扩建工程
和 ARMA3
所有插值效果图片都是本人手工用 PS 算出来的(计算机处理会有更多的优化方式,原理大同小异,也从侧面说明插值算法非常省资源)
商用平台转载需本人同意,论坛转载保留作者出处即可。
访问无忧岛网站,请使用谷歌和苹果浏览器!部分浏览器访问本站可能会造成内容页面的缺失
发表评论