GAMES101学习笔记——光栅化

一:什么是光栅化(Rasterization)

把空间里的物体画在屏幕上。

屏幕由一个个阵列排布的像素点组成,屏幕大小指宽度方向由width个像素点,高度方向由height个像素点。
像素点索引范围:(0, 0) 到 (width - 1, height - 1)
像素点(x, y)的中心坐标为(x + 0.5, y + 0.5), 每个像素点是有面积的。

Canonical Cube:由MVP矩阵变换后所得,xyz在[-1, 1]之间的正方体。
在这里插入图片描述
模型是由三角形组成的,因为三角形是最基本的几何平面,能保证是平面,且容易进行插值操作(重心坐标)。
光栅化的过程就是将三角形离散显示在屏幕的每个像素点。
在这里插入图片描述

二:光栅化最重要的点:判断中心点与三角形的关系

判断三角形abc 和 点p 的关系
方法如下:

1. 重心坐标法

在这里插入图片描述
点p在三角形abc内,满足以下等式:
S a b p + s b c p + s c a p ≤ s a b c S_{abp} + s_{bcp} + s_{cap} \leq s_{abc} Sabp+sbcp+scapsabc
点p在三角形abc外,满足以下等式:
S a b p + s b c p + s c a p > s a b c S_{abp} + s_{bcp} + s_{cap} > s_{abc} Sabp+sbcp+scap>sabc

2. 同侧法

在这里插入图片描述
如果p在ab的左侧,p在bc的左侧,p在ca的左侧,则p在三角形内,否则不在三角形内。
即红绿蓝三组向量分别叉乘,同号为同一侧。

三: 什么是采样

采样就是把一个函数给离散化的过程
在这里插入图片描述
循环屏幕上每个像素格子,判断中心是否是否在三角形内部,是的为1,否为0。
在这里插入图片描述

优化手段:

  1. 使用AABB包围盒,获取三角形xy的最小/最大的坐标形成AABB包围盒,在包围盒外的像素绝对不会在三角形内,以此剔除屏幕上大部分像素。
    在这里插入图片描述

  2. 获取每一行像素在三角形内的起始点和终止点,则中间的像素均在三角形内,适合斜 4 5 。 45^。 45狭长的三角形。
    在这里插入图片描述

四: 光栅化后的问题

采样产生的一些问题:

  1. 锯齿
  2. 摩尔纹
  3. 人眼在时间上的采样跟不上速度
    本质:信号的速度太快,采样速度跟不上变化的速度

因此需要抗锯齿,反走样
在这里插入图片描述

抗锯齿其实并没有让像素面积更细,而是让像素颜色不是非0即1,取中间的某一个值,从而在宏观上看不会锯齿明显。
抗锯齿后,边界看上去会模糊。

什么叫走样

同样的采样方法采样两种不同频率的函数,得出的结果我们无法区分它。
即采样不足导致锯齿。
在这里插入图片描述

数字图像处理:滤波 Filtering

傅里叶级数展开: 任何一个周期函数,可以写成一系列正弦、余弦的组合以及一个常数项。
傅里叶变换: 所谓傅里叶变换就是将函数分解成各个不同频率的函数的组合。
傅里叶变换可以理解为将信号从时域变换成频域。

滤波:
从频率的角度上来说,去掉一些特定的频率
通过频域上的分析,不同的频率和信号的变化
在这里插入图片描述
去掉中中间的低频信息 高通滤波
高频率 边界
在这里插入图片描述

低通滤波,去掉高频信息,变模糊
在这里插入图片描述
低频高频都去掉了 留下了其他信息
在这里插入图片描述

简单的定义:Filtering(滤波) = Convolution(卷积) = Averaging(平均)

什么是卷积?

在这里插入图片描述
卷积定理:时域的卷积等于频域的乘积

采样与走样在频域上的解释

Sampling = Repeating Frequency Contents
采样 = 重复频域上的内容

走样:采样不够快,导致频谱上复制粘贴间隔变小,发生混叠
在这里插入图片描述

五: 反走样/抗锯齿

增加采样率(受制于物理限制,不可能将屏幕分辨率弄高)

1,做模糊操作,先模糊再采样

在这里插入图片描述
即先把一个信号 高频信息拿掉,让频谱覆盖的面小一些,再采样,以原本的间隔复制它,
在这里插入图片描述

2. MSAA

在一个像素格子里增加多个采样点,得到近似的像素格子覆盖率。
增大了计算量来达到抗锯齿的效果。
如下图:每个像素采样四个点,最后按采样点在三角形内的个数比例决定颜色比例。
在这里插入图片描述

3. FXAA (Fast Approximate AA)

找到有锯齿的边界,把边界换成没有锯齿的边界(和采样无关,在图像层面上抗锯齿)
通过颜色变化找到边界后,进行颜色混合,起到抗锯齿的作用
在这里插入图片描述

4. TAA(Temporal AA)

在不同的帧时间上,用像素中的不同的点来采样像素颜色。即将MSAA的采样分解在时间上。

5. 超分辨率/超采样/ DLSS (Deep Learning Super Sampling)

通过降低游戏内的渲染分辨率,同时再通过人工智能算法模型和AI加速硬件单元(Tensor Core)来拉伸输出画面,提高显示分辨率,例如使用1080P的渲染分辨率再通过AI算法和Tensor Core运算输出4K(2160P)的显示分辨率,以此来达成提升帧数的目的。

猜你喜欢

转载自blog.csdn.net/weixin_40693643/article/details/129335513