【GAMES101 课程小结】:Lecture 05/06 光栅化,反走样

内容先导

1. Canonical Cube to Screen
2. 光栅化一个三角形
3. Antialiasing(反走样,抗锯齿)
4. Z-Buffering

正文

1. Canonical Cube to Screen

前一节中,通过投影变换,已经将空间中xy坐标系投影到[-1,1]×[-1,1]的区域中,接下来需要将xy平面投射到[0, width] × [0, height]的屏幕上。需要先做一步视口变换
在这里插入图片描述

2.光栅化一个三角形

- 三角形的性质

  1. 最基础的多边形,任何多边形都可以拆成三角形表示。
  2. 三角形三个点一定在一个平面上。
  3. 三角形内外部清晰,并且方便判断内外。
  4. 方便利用三角形重心坐标系进行插值。

- 通过采样画出三角形
1. 定义一个二值函数,输入屏幕的位置坐标以及一个三角形对象。
在这里插入图片描述
2. 遍历屏幕上的每个点,通过inside函数给像素点上色。

for (int x = 0; x < xmax; ++x) {
    for (int y = 0; y < ymax; ++y) {
        image[x][y] = inside(tri, x + 0.5, y + 0.5);
    }
}

判断点在三角形内部的方法
(1)利用向量叉积
在这里插入图片描述
在这里插入图片描述
补充:向量叉乘示例
在这里插入图片描述

3. 加速方法
(1)利用包围盒(AABB)
在这里插入图片描述
遍历时不便利屏幕上所有像素点,只遍历三角形[xMin, xMax] × [yMin, yMax]的区域。

(2)每一行都记录三角形的最左与最右(特定情况更有效率)
在这里插入图片描述

3. 3. Antialiasing(反走样,抗锯齿)

采样带来的问题

  1. 锯齿
  2. 摩尔纹现象
    在这里插入图片描述
  3. Wagon Wheel effect 在这里插入图片描述

抗锯齿的方法

方法 1: 增加采样率
增加屏幕分辨率

方法 2:采用反走样
先对锯齿边界做模糊处理,再做采样

MSAA(MultiSampling Anti-Aliasing)
对一个像素点进行多次采样,然后取平均表示这个像素点的值。样本不是一定需要均匀分布。
在这里插入图片描述
FXAA(Fast Approximate AA)
同过找到边界,直接对边界做处理实现抗锯齿。
TAA(Temporal AA)
复用上一帧的信息。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值