Unity渲染流水线

今天过年回家了,不过要准备面试,认真学习下《Shader入门精要》因为里面不单涉及到shader的知识,还有一些渲染的知识,对我来说很有帮助。

渲染流水线:

    渲染流水线的目的是把场景从3维空间转化到2维空间,并最终在屏幕上显示的过程。之所以称之为流水线,是因为渲染有并行性,每个渲染图元可以并行处理,相互之间没有必然的前后顺序。渲染流水线的过程分为:应用阶段,几何阶段,光栅化阶段。

应用阶段:

    应用阶段是由CPU负责处理的,主要目的是得到模型,光源,摄像机位置和视锥体,材质,纹理,shader等,最终输出渲染图元。

几何阶段:

    主要目的是把模型的游戏座标空间转化为屏幕空间座标。几何阶段细分为:

1 顶点着色器:游戏座标转化为齐次裁剪座标,顶点着色,以及纹理座标。

2 曲面细分着色器:细分图元。

3 几何着色器:执行逐片元的着色操作。

4 裁剪:将不在摄像机范围的顶点裁剪掉,部分在视野范围内的进行裁剪得到新的顶点。

5 屏幕映射:图元从裁剪座标变换到屏幕座标。

光栅化阶段:

    主要目的是决定哪些渲染图会被绘制在屏幕上,并对这些顶点进行座标,颜色插值,最终得到要在屏幕上绘制的每个像素的信息。光栅化阶段细分为:

1 三角形设置:光栅化一个三角形网格,得到它的3条边的边界像素座标信息,为下一步做准备。

2 三角形遍历:遍历每一个像素被哪些图元所覆盖,被覆盖就生成一个片元。

3 片元着色器:片元着色器的输入是从顶点着色器输出插值得到的数据,它的最重要操作是纹理采样。

4 逐片元操作:进行深度测试,模板测试等决定片元的可见性。对片元和已存在的颜色进行混合。

Draw Call:

    Draw Call其实是一个命令,是CPU通知GPU执行渲染的命令,这个命令包含了一个渲染图元列表。GPU收到这个图元列表后从显卡缓存中找到数据,并传入渲染流水线。

渲染图元:

    最基本的图形渲染元素,比如点,线段,三角网格这些。

片元:

    光栅化后的产物,它包含了像素位置,深度,颜色,法线信息,纹理座标等。

发布了53 篇原创文章 · 获赞 12 · 访问量 1万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章