图形学笔记- 2. 光栅化 Rasterization

光栅化

Canonical Cube to Screen

屏幕Screen

  • 像素二维数组
  • 数组大小:分辨率
  • 一种典型的光栅成像设备
    光栅化:画到屏幕上

像素

  • 目前简化理解:看作一个统一颜色的小方块,最小单位
  • 颜色:(红,绿,蓝)

屏幕空间

  • 左下角为原点

像素位置用 ( x , y ) (x,y) (x,y),x,y为整数。
范围为(0,0) to (width-1,height-1)

像素的中心(x+0.5, y+0.5)

屏幕空间的范围:(0,0) to (width,height)

lua语言从1开始计数?

请添加图片描述

投影到平面

  • 和z不相关
  • 对xy平面变换: [ − 1 , 1 ] 2 − > [ 0 , w i d t h ] × [ 0 , h e i g h t ] [-1,1]^2 -> [0,width]\times[0,height] [1,1]2>[0,width]×[0,height]
  • viewport变换
    M v i e w p o r t ( w i d t h / 2 0 0 w i d t h / 2 0 h e i g h t / 2 0 h e i g h t / 2 0 0 1 0 0 0 0 1 ) M_{viewport} \begin{pmatrix} width/2 & 0 & 0 & width/2\\ 0 & height/2 & 0 & height/2\\ 0&0&1&0\\ 0&0&0&1 \end{pmatrix} Mviewport width/20000height/2000010width/2height/201

绘制机器

显示设备

CNC sharpie drawing machine

laser cutters

Oscilloscope 示波器

Cathode Ray Tubes 阴极射线管 Raster Scan 隔行扫描

Frame Buffer 帧缓冲 Memory for a Raster Display 光栅显示的内存

Flat Panel Display 平面显示器

LCD Liquid Crystal Display 液晶显示器

LED Light Emitting Diode 发光二极管

Electronic Display

OLED

光栅化三角形

三角形

  • 基础多边形
    • 拆解其他多边形

性质:

  • 保证平面
  • 内外定义良好
  • 三角形内部插值

什么像素值近似三角形

在这里插入图片描述

输入:投影在屏幕上的三角形顶点的位置

输出:一组近似三角形的像素值

采样Sampling

在某一点对函数求值就是采样。
通过采样离散化discretize一个函数

for(int x = 0; x<width; x++)
    out[x] = f(x);

采样是图形学的核心思想。我们采样时间(1D),面积(2D),方向(2D),体积(3D)…

在这里插入图片描述

如果每个像素中心都在三角形内,则采样
在这里插入图片描述

定义函数inside(tri, x, y)判断点是否在三角形内。

inside(t, x, y) = 1 if (x,y) is inside triangle t, else 0

光栅化=采样一个2D指示函数

for(int x = 0; x<width; x++)
    for(int y = 0; y<height; y++)
        image[x][y] = inside(tri, x+0.5, y+0.5);

在这里插入图片描述

叉乘判断点的内外

在这里插入图片描述

点在边界上 自定义标准,不做判断

遍历所有像素?
在这里插入图片描述

三角形 BoundingBOX

Incremental Triangle Traversal
在这里插入图片描述

适合于薄的和旋转的三角形

显示器实际显示的信号
在这里插入图片描述

在这里插入图片描述

与连续的三角

Aliasing(Jaggies) 混叠,锯齿

Antialiasing 反走样

Pixels are uniformly-colored squares
Compare: The Continuous Triangle Function

Sampling is Ubiquitous in Computer Graphics

Sampling Artifacts (Errors / Mistakes/ Inaccuracies)瑕疵

  • Jaggies锯齿 - 空间采样
  • Moire摩尔纹 - 欠采样图像
  • Wagon wheel effect - 时间采样
    信号变化太快,采样太慢

反走样思想:采样前做模糊/滤波 Blurring(Pre-Filtering)

栅格化三角形中的锯齿,其中像素值为纯红色或白色
栅格化三角形的抗锯齿边缘,其中像素值采用中间值
在这里插入图片描述

先模糊后采样
在这里插入图片描述

blurred aliasing

为什么要先模糊后采样

频域frequence domian

cos ⁡ 2 π f x \cos{2\pi fx} cos2πfx, f = 1 T f=\frac{1}{T} f=T1
傅里叶变换
傅里叶级数展开:用一系列正余弦函数表示函数
f ( x ) = A 2 + 2 A cos ⁡ ( t w ) π − 2 A cos ⁡ ( 3 t w ) 3 π + 2 A cos ⁡ ( 5 t w ) 5 π . . . f(x)=\frac{A}{2} + \frac{2A\cos(tw)}{\pi} - \frac{2A\cos(3tw)}{3\pi}+ \frac{2A\cos(5tw)}{5\pi}... f(x)=2A+π2Acos(tw)3π2Acos(3tw)+5π2Acos(5tw)...
请添加图片描述

傅里叶变换将信号分解成频率
请添加图片描述

更高频需要更快的采样
请添加图片描述
欠采样导致频率走样,高频信号采样不足,采样错误地显示为来自低频信号
请添加图片描述
在给定采样率下无法区分的两个频率称为走样

过滤=去除特定频率的内容
中心低频,
水平垂直的线:周期延拓。
请添加图片描述
仅滤除低频 (边缘) 高通滤波
请添加图片描述
滤除高频(模糊) 低通滤波
请添加图片描述

滤除低频和高频
请添加图片描述
请添加图片描述
滤波=卷积 (=平均)

空间域中的卷积等于频域中的乘法,反之亦然

Option 1:

  • 在空间域中通过卷积滤波
    Option 2:
  • 变换到频域(傅里叶变换)
  • 乘以卷积核的傅里叶变换
  • 变换回空间域(傅里叶逆变换)
    请添加图片描述

盒子函数=“低通”滤波器
请添加图片描述
更宽的滤波器核=更低的频率
请添加图片描述

抽样=重复频率内容

请添加图片描述

冲击函数

时域乘积–频域卷积

混叠/走样=混合频率内容
请添加图片描述

如何反走样

1.增加采样率

  • 本质上增加了傅立叶域中副本之间的距离
  • 更高分辨率的显示器、传感器、帧缓冲区……
  • 但是:昂贵并且可能需要非常高的分辨率
    2.反走样Antialiasing
  • 在重复之前使傅里叶内容“更窄”
  • 在采样前滤除高频

反锯齿=限制,然后重复
请添加图片描述

一个实用的滤波
一像素宽的滤波()

计算平均像素值的抗锯齿

  • 对f(x,y)进行1像素的框模糊卷积
  • 然后在每个像素的中心采样
    在栅格化一个三角形时,f(x,y) = inside(triangle,x,y)在像素区域内的平均值等于该三角形所覆盖的像素面积。
    请添加图片描述

通过超采样抗锯齿

(MSAA)
Supersampling

通过采样一个像素内的多个位置并取其值的平均值来近似1像素盒滤波器的效果
请添加图片描述

点采样:每像素一个样本
请添加图片描述

超采样:

  • 在每个像素上取NxN个样本
    请添加图片描述

  • 对每个像素“内部”的NxN样本取平均值
    请添加图片描述

请添加图片描述
请添加图片描述

j结果:这是显示器发出的相应信号
请添加图片描述
没有免费的午餐!

  • MSAA的花费是多少?

里程碑(个人想法)

  • FXAA(快速近似AA)

  • TAA(临时AA)

超级分辨率/超级采样

  • 从低分辨率到高分辨率

  • 本质上仍然是“样本不足”的问题

  • DLSS(深度学习超采样)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不知不道abc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值