MIT 6.837:Graphics Pipeline 渲染管线

MIT 6.837:Graphics Pipeline 渲染管线

光线追踪是常用的技术,然而我们的计算机硬件并不总是通过光线追踪输出渲染结果,也有基于扫描转换的方法。渲染管线便是一种基于扫描转换的渲染方法的实现,它的一部分通过显示卡专用电路实现,一部分可以由开发者进行编程实现。

光线追踪与扫描转换的比较

光线追踪扫描转换
可渲染的几何体所有便于和光线求交的几何体只有多边形
并行化每个像素单独考虑,可以并行扫描时几何体的遮挡关系需要考虑,无法并行
效率低,通常不适用于实时应用能够满足实时应用需求
硬件实现难以实现便于实现,已有成熟技术
渲染效果高,法线与颜色平滑较低,无法处理阴影、反射、透射等情况
流程对于每个像素追踪一条光线,根据光线与物体的交点计算颜色对于每个几何体在 buffer 中绘制像素

渲染管线的结构

1024x641 - MIT 6.837:Graphics Pipeline 渲染管线

渲染管线是如上图所示的由多个处理阶段构成的系统。整个管线的输入是场景中几何体、光照、观察点、成像平面等信息,每一级的输出为下一级的输入,最终输出渲染结果,即在指定成像平面上得到的平面图像。

下面分阶段介绍渲染管线的各个级。

模型变换(Modeling Transformation)

1 - MIT 6.837:Graphics Pipeline 渲染管线

模型的顶点被定义在自身的坐标系中,而将模型放置在场景中时,顶点的位置会发生改变。这一步完成模型坐标系到场景(世界)坐标系的转换。

着色(Shading)

2 - MIT 6.837:Graphics Pipeline 渲染管线

根据指定的光照模型(如 Phong 模型等)与法线、材质、光源等信息计算顶点的颜色。

视口变换(Viewing Transformation)

3 - MIT 6.837:Graphics Pipeline 渲染管线

相机被放置在场景中的某个位置,要便于渲染,需要将场景中的物体转换到观察者的坐标系中。这一步完成从场景坐标系到观察者视角的标准坐标系(即视口坐标系,由相机位置、观察方向和向上方向定义)的转换。

裁剪(Clipping)

4 - MIT 6.837:Graphics Pipeline 渲染管线

当使用透视投影方法时,观察范围是从相机位置出发的一个锥形。我们把锥形中取得的近平面与远平面之间的空间取出,使用标准化变换将此不规则体变为标准设备坐标系,并舍弃此范围之外的几何体,以减少扫描转换开销。

投影(Projection)

5 - MIT 6.837:Graphics Pipeline 渲染管线

将标准设备坐标系中的物体投影至成像平面上,即三维空间到二维空间的转换。

光栅化(扫描转换,Scan Conversion 或 Rasterization)

6 - MIT 6.837:Graphics Pipeline 渲染管线

将以顶点定义的三角形转换为屏幕空间中的像素,并在扫描过程中对颜色、深度信息等插值,以便得到每个像素的颜色值。

可见性(Visibility)

每个像素只显示距离观察者最近(即深度最浅)三角形的颜色信息。

坐标系

这里介绍在渲染管线各个阶段涉及到的坐标系。

模型坐标系(Object Space)

7 - MIT 6.837:Graphics Pipeline 渲染管线

建模时定义的坐标系,三维美术在此坐标系中定义模型的各个顶点与三角面信息。

世界坐标系(World Space)

8 - MIT 6.837:Graphics Pipeline 渲染管线

需要渲染的场景所在的坐标系,此坐标系中定义模型的位置,通过模型变换将模型的顶点转换为此坐标系中的坐标。

相机坐标系(Eye Space 或 Camera Space)

9 - MIT 6.837:Graphics Pipeline 渲染管线

根据相机位置定义的坐标系,原点即相机位置,两轴由观察方向、向上方向定义,另一轴通过右手定则得到。场景中的物体顶点通过视口变换转换到此坐标系中,以便后续裁剪、转换工作。

标准设备坐标系(Normalized Device Coordinates 或 Clip Space)

10 - MIT 6.837:Graphics Pipeline 渲染管线

将相机坐标系中远平面、近平面之间的物体映射到坐标范围为 $[-1, -1, -1] \sim [1, 1, 1]$ 的正方体的坐标系。映射后超过此坐标范围的三角面将被删除,以减少光栅化的计算。

屏幕坐标系(Screen Space)

11 - MIT 6.837:Graphics Pipeline 渲染管线

二维坐标系,反应各个物体投影至屏幕空间时的坐标,但第三维度(深度,z 坐标)也被记录下,用于可见性判断。

坐标系与渲染管线各阶段的关系

12 - MIT 6.837:Graphics Pipeline 渲染管线


发表评论

您的电子邮箱地址不会被公开。

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据