| |
技术分析!如何才能真正提高显卡的画质 |
出处:国外网站 责任编辑:zhouxijian |
| [04-9-27 9:38]
| 作者:太平洋译站 道是无情
| -
下面的文章将探讨在现代PC游戏中所存在的与画质相关的一些问题——的确,即使是在最新的硬件中我们仍然会遇到这些问题。虽然我更愿意直接谈论我们今天的第二个话题(alpha transparency在材质中的应用),不过在此之前我们还是再来做一些基础知识的介绍,以便不同层次的读者都能读得懂这篇文章。下面我们就从分析为什么rotated grid antialiasing(旋转栅格抗锯齿)要优于odered grid antialiasing (正方栅格抗锯齿)技术开始吧。
什么是抗锯齿? 我们知道,电脑画面是由一个一个小的象素所构成的。虽然这些象素非常的小,不过每一个象素都覆盖了这一画面上的某一个区域。我们可以将这些象素比作通向虚拟世界的一扇一扇窗户,而我们电脑的任务就是决定每一个象素的颜色以使得我们通过这些窗户能看到一幅最美的画面。不过渲染的速度也是一幅“实时”图片的所需要考虑的一个重要因素(我们称之为“实时”是因为我们在游戏中画面总是不断变化的),因此通常象素的色彩都通过对该象素内的某一点进行采样得到的颜色所决定的(即我们所谓的点采样point sampling)。不幸的是,为了提高速度而采取的这种做法可能使得所采样的单个点的色彩不能体现出整个象素所覆盖区域的色彩状况。当这种情况出现在物体的边缘的时候就非常明显了。
有一些象素“跨”在物体的边缘,该象素内部的色彩是有一定比例的,而且在外部的显示我们也希望体现出这一比例。物体的边缘两边却会呈现出不同的颜色(否则我们就不称之为边缘了)。点采样技术将会使得整个象素呈现出边缘两边的某一种颜色。而这样对物体边缘的着色无论是着上前景色或是背景色中的哪一种色,由于象素间色彩的突然跳变,都自然而然的会呈现出锯齿状。这种情况就是我们所说的锯齿(aliasing)了。这是由于这一个象素的面积正好覆盖在了边缘上,两边都有它的存在。一个更好的办法就是将前景色和背景色进行混合从而造出第三种颜色来填充色一象素。这种方法能有效的改进图像边缘的表现效果,换一种说法就是实现了“抗”锯齿的作用。

我们可以通过对象素所在的交叉点进行计算来达到这一目的,边界的效果体现了每个象素所能表现细节的一个方面。举个例子来说,一棵垂直生长树的边界可能其宽度只占有了一个象素,我们如何体现这棵树的边缘效果呢?我们所需要的是一个比较通用的方法来提升由象素所组成场景的效果,而要做到这一点,最直接的方法就是增加对每个象素所占有的小的场景采用的采样点数。这些独立的采样点通常被称为子采样(sub-samples),同时他们都是以象素为单位成组的产生的。对每个象素生成子采样的各个独立的采样点称为上采样过程(up-sampling),而所采用的子采样个数我们用“X”来表示(譬如2X,4X,6X等等)。通过平均运算子采样得到的颜色来对单个象素进行着色以使得该象素更加具有表现力的这一过程我们成为下采样过程(down-sampling)。虽然一般而言下采样过程中所运算的点数与上采样中生成的子采样点数相同,不过实际操作中这一点并非是一成不变的。NVIDIA的五点梅花排列采样法(Quincunx)抗锯齿在上采样时对每个象素只产生两个子采样点,而下采样的时候却对5个子采样点进行了运算(通过从临近象素那里去“借用”子采样点的方法来获得多出的3个子采样点)。
ad
|