定义可视锥
定义看到的近平面的宽高比(aspect ratio)和垂直可视角度(field-of-view),就可以确定可视锥。
标准正方体到屏幕
raster = screen in German
一些像素定义:
- 像素是(x,y)形式的坐标。
- 所有的像素是(0, 0)到(x - 1, y - 1)。
- 像素(x, y)中心是(x + 0.5, y + 0.5)。
- 屏幕区域为(0, 0)到(x, y)。
![image-20220213154738691](https://cdn.jsdelivr.net/gh/code-gx/photo/20220213154738.png)
将 [ − 1 , − 1 ] 3 [-1, -1]^3 [−1,−1]3映射到[0, width] x [0, height]。
先缩放后移动。
![image-20220213155148829](https://cdn.jsdelivr.net/gh/code-gx/photo/20220213155148.png)
光栅化
将屏幕的多边形转换成像素。
成像设备
阴极射线管(CRT)、液晶显示器(LCD)、LED、kindle
三角形的好处
- 最基础的多边形
- 可以组成其他多边形
- 一个三角形一定是一个平面
- 三角形内外限定清晰
通过屏幕上的像素对屏幕区域上的三角形进行采样,采样函数其实就是通过叉乘判断点和三角形的关系。
![image-20220213163348374](https://cdn.jsdelivr.net/gh/code-gx/photo/20220213163418.png)
可以通过三角形的最小外接正方向优化面代码。通过边界来判断像素的值,边界外的像素没有必要进for循环。
采样造成的错误
- 锯齿
- 摩尔纹
- 车轮效应
都是采样频率跟不上变换速率。
反走样
先模糊(低通滤波)再采样,滤波是去除特定频率。
预备知识
高通滤波去除低频信息,保留高频。可以保留边界信息,边界信息变换大,而高频波变换也大。
两个信号时域的卷积等于两个信号频域的乘积。
![image-20220216103830208](https://cdn.jsdelivr.net/gh/code-gx/photo/20220220123658.png)
当采样频率较低,时域就较高(互为倒数),导致待采样信号产生混叠,如下图。
![image-20220216110521154](https://cdn.jsdelivr.net/gh/code-gx/photo/20220216110521.png)
MSAA(多重采样抗锯齿)
将大像素平均成多个像素,计算每个像素的值然后求平均。
![image-20220220122104755](https://cdn.jsdelivr.net/gh/code-gx/photo/20220220122104.png)
软件上提高分辨率来模糊,最终采样是按照硬件采样的。
工业上很多采样点是复用,不然计算量过大。
FXAA
得到有锯齿的图像,然后找到边界换成无锯齿的边界。
TAA
对于静止的物体,用相邻两帧某像素不同位置的点做采样,然后做带权均值。
DLSS
用深度学习做超分辨率采样。