走样与反走样
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2. 反走样技术
反走样技术
• 反走样技术基于以下认识
– 理想图元是没有宽度的,但是水平/垂直的扫描转 换图元在屏幕上至少占一个像素宽
– 可以将任何线条当作有一定宽度的矩形。该矩形将 盖住一部分栅格
– 转换算法在线条穿过的每一列中,仅选择单个像素 (如最近像素)赋以线条颜色。当相邻列上的像素 不在同一行时,线条就会产生一次跳变。这是走样 产生的原因
过取样Supersampling
Full-Scene Anti-Aliasng (FSAA): 通过高分辨 率绘制场景,然后把相邻的采样点进行加权平均 得到一幅图像。
例子:若需绘制500X400的反走样图像,则可先 绘制1000X800的图像,然后用2X2采样模板进 行加权平均(每个象素用4个采样点)
反走样技术
• 反走样技术的核心思想
– 对于单像素宽的线,水平/垂直线在行/列上每次涉及一 个像素
– 对于斜线,在每一行/列中,所经过的每一个像素都应 该赋以适当的灰度值
反走样技术
• 两类方法:
– 非加权区域采样方法
• 图元对一个像素亮度的贡献与两者相交面积成正比 • 按覆盖比例赋亮度值,可以使图元上各相邻像素的
加权区域采样方法
加权区域采样方法
权值函数:是关于图元中给定的一小块区域dA到像素中 心的距离的函数
– 决定dA对一个像素的亮度的影响值 – 对加权区域采样,距离越远,该函数值越小 – 对非加权区域采样,该函数值为常量 – 权值函数可选取圆锥体形:在像素中心有最大值,随着远离中心,
权值递减(“过滤技术”)
2
半的区域在多边形边界内,因此,该 1
位置处的亮度将被调整到其设定值的
一半;沿边界的下一个位置2处的亮
度被调整到其设定值的约三分之一
RGSS
各 种 象 素 采 样 模 板
NVIDIA的Quincunx方法(五点梅花排列
法)
一般的反走样方法一个采样点只影响一个象素,
NVIDIA的Quincunx方法单个采样点影响的
象素多于一个(应用于GeForce3)
1/8
1/8
由于共享,每个象素
平均只需2个采样点,
1/2
但是效果却比2个采
样点的全屏幕反走样
好不少
1/8
1/8
NVIDIA的Quincunx方法
画面效果直逼4倍分辨率的抗锯齿效果,尤其是3D抗 锯齿性能很好
其原理是每帧画面最后一个像素渲染完后, GeForce3芯片上的HRAA引擎将画面向x轴及y轴各 移动半个像素,从而使得第一张样本画面的像素恰好 被第二张样本画面中的4个像素斜向包围起来
走样与反走样
1 什么是走样 2 反走样技术
1. 什么是走样
走样现象
• 走样:由于低频取样不充分导致信息丢失。
• 走样产生的原因
几何模型
光栅显示
– 图形的数学描述最终需要转换为光栅系统需要的点阵表示。 光栅算法用充分接近图形的像素集近似替代原有图形
– - 光栅算法对图形取样,将其数字化为离散的整数像素, 所生成的图元光栅显示具有锯齿或台阶形状外观
也可为较大的子像素网格建立类似掩摸 同样,这些掩模常被扩展为包括来自属于相邻像素中子
像素的贡献,以使亮度能遍及相邻像素而取平均
过滤技术
• 反走样线更精确的方法是采用过滤技术
– 这种方法类似于应用加权像素掩模,只是现在假想一个连续的加 权曲面(或过滤函数)覆盖像素
– 应用过滤函数的方法类似于应用加权掩模,但现在是将像素曲面 集成来得到加权的平均亮度。为减少计算量,常用查表法来求整 数值
• 中心子像素的加权是角子像素的4倍,是其它像素的2倍;
• 对九个子像素的每个网格所计算出的亮度进行平均。这样的结果是
– 中心子像素的加权系数为1/4;
– 顶部和底部及两侧子像素的加权系数为1/8; 1 2 1
– 而角子像素的加权系数为1/16。
242
121
像素加权掩模
指定子像素的相对重要性的值数组有时称为子像素权的 “掩模”
• 非加权区域采样方法的特点
– 由于覆盖面积降低,亮度也降低,因此像素的中心点与线边的距 离成反比:距离越远,亮度值越低;
– 某像素如果和图元不相交,则图元对该像素的亮度值没有影响 – 不管像素的中心到覆盖区域的距离远近,相同的面积就有相同的
亮度值(只有面积大小起作用)
改进:在面积相同的情况下,靠近像素中心点的小块区域的作用大 于远离中心的同样大小区域的作用
然后HRAA引擎再对五个像素过滤,产生一个抗锯齿 的像素
NVIDIA的Quincunx方法
像素加权掩模
• 在确定象素的亮度等级时,既考虑子像素的多少,还应 该考虑子像素的位置分布
• 通常会给接近于像素区域中心的子像素更大的权
– 因为这些子像素在确定像素的整体亮度中起更重要的作用
– 图中示出了对3×3像素分割所采用的加权方案:
从多个点(子像素)对一个像素总体亮度的贡献来 得到该象素亮度 – 每个像素可能的亮度等级数目等于像素区域 内子像素的总数 – 线亮度在更多的像素上描述,或线亮度分布 在较大数目像素上;且通过在阶梯状台阶 (水平长度间)附近显示有些模糊的线路径使 阶梯形状得到光顺
每个像素含9个子像素
过取样Supersampling
每个过滤函 数的体积被 规范化为1。
根据任何子 像素位置处 的高度给出 相应的权值。
立方体滤波
圆锥滤波
高斯滤波
线亮度差的校正
• 用相同数目像素所画的两条线,对角线还是比水平线长, 可视效果是对角线显得比水平线要暗,因为对角线以更低 的单位长度亮度显示
• 按照每条线的斜率来调整其亮度,就可对这种效果进行校正 – 水平和垂直将以最低的亮度显示 – 而45°线则以最高亮度显示 – 一旦反走样技术应用于显示,亮度就能自动校正 – 当考虑线的有限宽度时,调整亮度的结果是线以正比于其长度的 整体亮度显示
小结:设置相交区域面积元与 像素中心距离的权函数(如高 斯函数等)反映相交面积元对 整个像素亮度的贡献大小。 利用权函数积分求相交区域面 积,用它乘以像素可设置的最 大亮度值,即可得到该像素实 际显示的亮度值。
过取样Supersampling
• 过取样(超放样/后过滤): – 高分辩率下对对象取样,低分辨率上显示其结果 • 把屏幕看成比实际具有更细的网格(子像素)来增加取样率 • 沿这种更细网格(子像素)使用取样点来确定每个屏幕像素的 合适亮度等级
区域边界反走样
• 通过分割整体区域,并决定区域边界
内的子像素数目,以像素区域覆盖率
扫描线1
为基础来调整每个边界位置处的像素
亮度
扫描线2
• 右上图2×2网格中覆盖对象边界的
像素区域之一,沿着扫描线,确定子
像素区域的三个区域在边界内,因此,
可将像素亮度设置为最大值的百分之
七十五
• 在右下图中,位置1处的像素有约一
• 考虑线宽度时,则将每个像素亮度设置成正比于线区域内 的子像素数目来完成过取样
• 线路径边界取决于线的斜率: – 45°线,线路径在区域的中央 – 对水平线和垂直线,要求线路径是线宽边界之一 • |m|<1时,线路径宜取在接近于较低边界处 • |m|>1时,线路径放在较接近于较上边界合适
有颜色显示时:对子像素 亮度进行平均来得到像素 颜色设置
– 在黑白显示下,一个像素如果被完全覆盖,则为黑色 – 部分覆盖的像素则为灰色,灰度值与该像素被线覆盖
的面积成正比 – 像素没有被覆盖,则为白色
非加权区域采样方法
每个像素面积为单位面积; 相交区域面积是介于0、1之间 的实数; 用它乘以像素可设置的最大亮 度值,即可得到该像素实际显 示的亮度值。
非加权区域采样方法
亮度之间有一个平缓的过渡,淡化了锯齿现象 – 加权区域采样方法
• 利用权值函数计算亮度值 • 图元对一个像素亮度的贡献值与两者相交面积、距
离权值函数相关
非加权区域采样方法
主要思想:
– 将直线段看作是具有一定宽度的狭长矩形 – 当直线段与像素有交时,求出两者相交区域的面积
根据相交的面积确定该像素的亮度等级
• 走样会影响图形显示的视觉/真实感效果
走样现象
• 增加光栅系统取样率的一种简单方法:以较高分辨率显示 - 有两个核心问题难以解决 • 将帧缓冲器做成多大并仍保持刷新频率在每秒30~ 60帧? • 用连续参数精确地表示对象需要任意小的取样间隔 – 即使用当前技术能达到的最高分辨率,锯齿形仍会在一 定范围内出现 – 除非硬件技术能处理任意大的帧缓冲器,增加屏幕分辨 率还不能完全解决走样问题
加权区域采样的基本原理
– 图元覆盖像素的亮度 = ∑与该像素重叠区域的各小块面积决定 的亮度
– 单个小块面积决定的亮度 = 面积 * 相应权值 – 总的亮度值 = 权值函数在重叠区域上的积分
加权区域采样方法
• 特点:这种方法更符合人视觉系统对图像信息的处理方式,反走样效 果更好 – 将直线段看作是具有一定宽度的狭长矩形 – 当直线段与像素有交时,根据相交区域与像素中心的距离来决定其 对象素亮度的贡献 – 直线段对一个像素亮度的贡献正比于相交区域与像素中心的距离