光栅化 #
采样:将图元(primitive)转换为片元(fragment)集合
步骤:
- 确定最佳逼近图形之像素集
- 确定片元颜色
(光栅化狭义:三角形遍历)
(约定坐标系for像素:整数坐标系 以像素中心作为一个点)
光栅化“点”图元 #
- 寻找最佳逼近点的整数坐标
- 输入实数坐标到整数坐标
- 直接round之
- 输入实数坐标到整数坐标
光栅化line primitives #
采样?
-
选择x、y还是单位1步进行采样?
-
$y=mx+b$
-
直线方程?
显式:$y=mx+b$
$y-y_0=\frac{y_1-y_0}{x_1-x_0}(x-x_0)$
隐式:$f(x,y)=0, Ax+By+C=0$
参数:$P(t)=tP_0+(1-t)P_1$(向量化
-
选择最大位移方向
- $|m|<1: |Dx|>|Dy|$ x单位增长则取点越多越逼近
- $|m|>1: |Dy|>|Dx|$ y单位增长则取点更多更逼近
-
-
-
扫描顺序?
-
1)特殊情况(也可以合并到一般情况)
水平线(y2-y1=0),直接X整数采样
垂直线(x2-x1=0),直接Y整数采样
2)一般情况 考虑斜率和线段方向,推导各种情况下的计算公式
(dk乘-1换符号便于记忆)
多边形 #
(↑但是它们其实已经很复杂嘞 不适合用于管线编程)
三角形:yyds
走样 #