[Games 101] Lecture 06 Rasterization 2 (Antialiasing and Z-Buffering)

Rasterization 2 (Antialiasing and Z-Buffering)

Sampling theory

Sampling Artifacts in Computer Graphics

  • Aliasing 锯齿

image-20220811154109502

  • Moiré Patterns in Imaging 摩尔纹

image-20220811154531998

  • Wagon Wheel Illusion (False Motion) 车轮效应

对于旋转方向的错误感知

image-20220811154729768

  • Artifacts due to sampling - “Aliasing”

    • Jaggies – sampling in space

    • Moire – under sampling images

    • Wagon wheel effect – sampling in time

原因:信号变化的速度太快了但采样太慢了

Blurring (Pre-Filtering) Before Sampling 在采样前模糊

  • 原始的采样
image-20220811155251462
  • 经过模糊(滤波)后的采样
image-20220811155303419
  • 在实际应用中的效果
image-20220811155402133
  • 注意:不能先采样再做模糊,会导致锯齿被模糊
image-20220811155512840

Frequency Domain 频域

Frequencies
  • 定义 cos ⁡ 2 π f x \cos 2\pi fx cos2πfx 中的 f f f 为频率
  • f = 1 T f=\frac{1}{T} f=T1
Fourier Transform 傅里叶变换
  • 任何周期函数都可以被展开为 sin ⁡ x \sin x sinx cos ⁡ x \cos x cosx 的和的形式
  • 把图像从时域(图像空间)变为频域(频率空间)

image-20220811160437514

在这样的条件下,可以发现,频率越高的函数需要更高的采样频率

image-20220811175041955

  • 走样的定义:同样采样方法采样两种不同频率的函数无法区分它们

image-20220811175314960

Filtering 滤波

  • 解释:Getting rid of certain frequency contents (去掉一系列的频率)

这是一个图像经过傅里叶变换后的频域图

在这里插入图片描述

在经过高通滤波(去掉低频信息)之后,可以提取出图像的边界

高频信息对应图像边界的理由:图像的边界的左右两侧发生了剧烈的变化,是高频信息
在这里插入图片描述

反之,低通滤波(去掉高频信息)就对应了边界被模糊的情况

image-20220812144534055

如果留下某一段的频率,就留下的是一部分的边界信息

在这里插入图片描述

Convolution 卷积

  • Convolution in the spatial domain is equal to multiplication in the frequency domain, and vice versa
  • 作用
    • Option 1: Filter by convolution in the spatial domain
    • Option 2:
      • Transform to frequency domain (Fourier transform)
      • Multiply by Fourier transform of convolution kernel
      • Transform back to spatial domain (inverse Fourier)
image-20220812145253491

卷积定理的一个例子

image-20220812145756210

Box Filter 滤波盒

image-20220812150533512

image-20220812150538855

image-20220812150545729

采样的本质

  • Sampling = Repeating Frequency Contents

image-20220812153717085

锯齿的本质

  • Aliasing = Mixed Frequency Contents

image-20220812154023811

Antialiasing 抗锯齿

抗锯齿的方法

  • 增加采样率:扩大频谱的搬移间隔
    • 需要高分辨率显示设备
  • 先做模糊(低通滤波),再做采样

image-20220812154601411

反走样在像素层面的解决方案

  • 求平均:Convolve f ( x , y ) f(x,y) f(x,y) by a 1-pixel box-blur

    • Recall: convolving = filtering = averaging

    • 通过边界占像素的比例来觉得像素亮度从而完成模糊过程

      image-20220812154951937

  • 采样:Then sample at every pixel’s center

Antialiasing By Supersampling (MSAA)

  • 这是一个近似反走样的操作,不能完全的实现反走样
  • 这是一个对信号的模糊操作,不是真正的靠提升像素的分辨率来实现的
  • 这个操作使用了更多的点对三角形是否在像素内进行了测试,增大了计算量(例如把一个像素分为 2 × 2 2\times 2 2×2 的方格就增大了 4 4 4 倍的计算量
MSAA 的步骤
  1. Supersampling

将每个像素切分成 2 × 2 2\times 2 2×2 的方格,对方格中的每个点计算其是否在三角形内,根据每个像素在三角形内的点的个数决定发光的强度

image-20220812155445192 image-20220812155503964 image-20220812155522412
  1. Sampling

对图像根据模糊操作得到的值进行采样

更多的抗锯齿方法

  • FXAA (Fast Approximate AA):本质的图像的后期处理,先得到有锯齿的图像,再将边界找到,将其换成没有锯齿的边界
  • TAA (Temporal AA):去找上一帧的信息来进行模糊,如果是静态图片就用每一个像素内不同的点来感知边界,在当前帧上没有额外操作
  • 超分辨率(与抗锯齿本质相同):使用深度学习猜测和补充细节

Z-Buffering 深度缓冲

Painter’s Algorithm 画家算法

  • Paint from back to front, overwrite in the framebuffer
  • Requires sorting in depth ( O ( n log ⁡ n ) O(n \log n) O(nlogn) for n n n triangles)
  • Can have unresolvable depth order
    • 如果两两存在覆盖关系,就无法定义深度顺序,如下图
    • image-20220819083933909

Z-Buffer 深度缓存

  • 现代使用的算法

  • Store current min. z-value for each sample (pixel) 此算法是针对像素的,操作针对像素,维护的是像素

  • 在生成图像时,同步生成两张图

    • frame buffer(最后的结果) stores color values

    • depth buffer (z-buffer 深度信息) stores depth

  • 为了方便起见,假设

    • z is always positive (smaller z → \to closer, larger z → \to further)
  • 深度缓存算法和顺序无关(假设没有两个三角形在任何一个像素中没有相同深度,因为三角形的坐标基本都是使用浮点型存储,基本可以认为两个三角形没有相等的深度)

  • 无法处理透明物体的深度

实际上,在生产环境还是有可能产生深度相同的情况,此课不讨论

深度缓存例子
image-20220819085000765
算法流程

image-20220819084842495

例如,第一个三角形的深度为 5 5 5,更新 frame buffer, z-buffer。再叠加另一个三角形时,根据上述算法流程部分覆盖,这样第二个三角形的部分就会被遮挡

image-20220819085040964

时间复杂度

假设一次操作,对于一个三角形而言的所要更新的像素为常数 C C C (通常在 100 100 100 个左右),时间复杂度为

  • O ( n ) O(n) O(n) for n n n triangles (assuming constant coverage)
  • 此处并没有排序,只是记录每个像素的最小值
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值