实时渲染学习(一)图形渲染管线概括与总结

参考博文:https://zhuanlan.zhihu.com/p/26527776(【《Real-Time Rendering 3rd》 提炼总结】(二) 第二章 · 图形渲染管线 The Graphics Rendering Pipeline)

一、图形渲染管线简述

图形渲染管线分为三个阶段:

  • 应用程序阶段
  • 几何阶段
  • 光栅化阶段

二、应用程序阶段

通过软件方式实现,实现方法包括碰撞检测、加速算法、输入检测,动画,力反馈以及纹理动画,变换仿真、几何变形等。

主要任务:将摄像机位置光照模型的图元(如点、线、矩形等)输出到几何阶段。

三、几何阶段

主要任务:多边形和顶点操作(计算量很高),可细分为:

模型视点变换(MV)、顶点着色、投影、裁剪和屏幕映射

1. 模型和视图变换

物体的坐标称为模型坐标(不统一),因此一般需要将其统一到唯一的世界空间中。模型变换的对象是模型的顶点和法线,模型经过模型变换后统一转换到世界空间中。

由于仅需要对相机(或视点)可见的模型进行绘制,因此必须对相机和模型进行视点变换,目的是将相机放在原点上,并将坐标变换到相机空间(或观察空间)中。

2. 顶点着色

确定材质上的光照效果的操作称为着色。每个顶点上可存储顶点位置法线颜色等信息。顶点着色的结果将输入到光栅化阶段以进行后续的插值操作。

3. 投影

顶点着色完成后,渲染系统开始进行投影操作,主要投影方法有正交投影(平移和缩放的组合)和透视投影(越远离相机的物体看起来越小)。投影变换后模型位于归一化设备坐标系中。

尽管应用于投影的矩阵变换是从一个可视体变换到另一个,但在完成显示后,Z坐标将不会保存在得到的投影图片中,即投影将模型从三维空间投影到二维空间中。

4. 裁剪

裁剪存在的意义是对部分位于可视体内部的图元进行裁剪操作。

5. 屏幕映射

屏幕映射的主要目的是找到屏幕上对应的坐标(将坐标映射到屏幕坐标系上)。此阶段坐标仍是三维的(但显示状态在经过投影后变为二维),每个图元的(x, y)坐标变换到屏幕坐标系中,屏幕坐标系加上Z坐标一起被称为窗口坐标系

四、光栅化阶段

光栅化(扫描变换)的概念:给定经过变换和投影后的顶点、颜色和纹理坐标(均来自几何阶段),给每个像素正确配色,以便正确绘制整幅图像,即从二维顶点所处屏幕空间到屏幕上的像素的转换。可细分为:

三角形设定、三角形遍历、像素着色和融合

1. 三角形设定

计算三角形表面的差异和其他相关数据(用于扫描转换和数据插值)。

2. 三角形遍历

进行逐像素检查,检查该像素处的像素中心是否由三角形覆盖。对于有三角形部分重合的像素,将在重合部分生成片元(这句话我没有理解)。每个三角形片元的属性(包括片元深度和来自几何阶段的着色数据)均由三个三角形顶点数据插值而生成。

3. 像素着色

纹理贴图在该阶段进行,该阶段目的是计算所有需逐像素操作的过程。

4. 融合

每个像素信息都存储在颜色缓冲器中,融合的主要任务是合成当前存储在颜色缓冲器中的片元颜色(即有像素着色阶段产生的片元颜色)。Z缓冲器与颜色缓冲器形状大小一致,存储的是Z值(从相机到最近图元的距离 )。

其他缓冲器:

  • alpha通道:用于可选的alpha测试;
  • 模板缓冲器:用于记录所呈现图元位置的离屏缓存,类似一个mask操作,可将图元仅在指定位置显示;
  • 帧缓冲器:通常包含一个系统所具有的所有缓冲器;
  • 累计缓冲器:可产生景深、反走样和软阴影等效果。

图元通过光栅化阶段后,从相机视点处看到的东西便可在屏幕上显示,为了避免不连续感,图像系统一般采用双缓冲机制(屏幕绘制在后缓冲器中以离屏方式进行,后缓冲器中的内容不断与在屏幕上显示过的前缓冲器交换内容)。

PS:原文写的非常好、非常详细,建议大家去看看,我的摘录仅供参考和快速查看相关知识。

你可能感兴趣的:(图形学)