渲染管线的基本流程

一、渲染管线是什么

渲染管线也叫做渲染流水线,他的流程是:模型数据 -> 顶点着色器 -> 曲面细分着色器 -> 几何着色器 -> 裁剪 -> 屏幕映射 -> 三角形设置 -> 遍历三角形 ->片元着色器 -> 逐片元操作 -> 成像

二 、具体操作

1.顶点着色器(Vertex Shader)

        顶点着色器是完全可编程的,他的输入来自CPU发来的模型数据。顾名思义顶点着色器是用来处理顶点的,所以输入进来的数据中每个顶点都会走顶点着色器。

        顶点着色器不能销毁和创建任何顶点,也无法获得顶点与顶点之间的关系。

        他的主要的工作有:坐标转换、逐顶点光照、输出后续所需要的数据

2.曲面细分着色器(用于细分图元,属于可选着色器)

3.几何着色器(用于逐图元操作,也属于可选着色器)

扫描二维码关注公众号,回复: 15556047 查看本文章

4.裁剪

        我们的场景通常很大,相机的可视范围很小,这时候有的物体完全就在相机的可视范围内,有的只是部分在相机的可视范围,还有就是完全不在相机的可视范围。而部分在相机的可视范围内的图形就需要裁剪了。我们通常将物体与相机可视范围边缘的相交位置生成一个新的点替换未显示的点,这一步骤就叫做裁剪,将裁剪过后的数据传递给下一个流水线。

5.屏幕映射

屏幕映射的工作是把每个图元的x和y坐标转换到屏幕坐标系下。屏幕坐标系是二维坐标系,它和我们用于显示画面的分辨率有很大的关系。

6.三角形设置

从这一阶段就进入了光栅化阶段。上一个阶段输出的是屏幕坐标系下的顶点位置和其他的相关信息(例如:深度,法线方向,视角方向)。

这一阶段的主要任务是计算每个图元覆盖了哪些像素,并计算它们的颜色。

7.遍历三角形

这个阶段将会检查每个像素是否被三角形网格覆盖,若被覆盖则会生成一个片元。

8.片元着色器

这个阶段是可编程的阶段,这个阶段的输出结果是一个或多个颜色值例如下图

9.逐片元操作

这一阶段被称为输出合并阶段

主要任务

  1. 决定每个片元的可见性。测试:深度、模板
  2. 如果通过测试,将数据存储到缓存区进行合并.

三、渲染阶段

1.模型数据

2.几何阶段(顶点着色器、曲面细分着色器、几何着色器、裁剪、屏幕映射)

3.光栅化阶段(三角形设置、遍历三角形、片元着色器、逐片元操作)

猜你喜欢

转载自blog.csdn.net/weixin_68627344/article/details/129174501