Shader学习01【渲染流水线的三个概念阶段】

什么是渲染流水线?

参照我们日常生活中的生产流水线,为了加快渲染效率,在计算机图形学中,也有相应的渲染流水线,其中的一个渲染流程分为三个阶段:

 

1:应用阶段

         在了解应用阶段之前,初学者应该了解3D空间下绘制图像依据和限制,视锥体,以及它的成像原理

         https://www.bilibili.com/read/cv10344236/

         这个阶段由开发者主导,通常情况下由CPU进行实现,我们拥有这个阶段的绝对控制权,这一阶段中,我们有三个主要任务,首先我们需要准备好场景数据,例如摄像机的位置,视锥体,场景中包含了哪些模型,使用了哪些光源,次之,我们为了提高渲染性能,经常需要做一个粗粒度剔除(culling)工作,以把那些不可见的物体剔除出去,这样剔除后的资源就不需要再交给几何阶段在进行处理,最后,我们需要设置好每个模型的渲染状态,这些渲染状态包括但不限于它使用的材质(漫反射颜色,高光反射颜色),使用的纹理,使用的shader等,这一阶段最重要的输出是渲染所需的几何信息,即渲染图元(rendering primitives) 

         注意,这一阶段主要负责输出几何阶段所需要用到的几何信息,所谓几何信息就是一个个渲染图元,通俗来讲,渲染图元可以是点,线,三角面等,这些渲染图元将会被传递给下一阶段

2:几何阶段

        几何阶段用于处理所有和我们要绘制的几何相关的事情,例如,决定需要绘制的图元是什么,怎么样绘制他们,在哪里绘制他们,这一阶段通常在GPU上进行,几何阶段负责和每个渲染图元打交道,进行逐顶点,逐多边形操作,这个阶段可以进一步分成更小的流水线阶段,这个会在后面讲到,几何阶段的一个重要任务就是把顶点坐标变换到屏幕空间中,再交给光栅器进行处理,通过对输出的渲染图元进行多步处理后,这一阶段将会输出屏幕空间的二维顶点坐标,每个顶点对应的深度值,着色等相关信息,并传递给下一阶段。

3:光栅化阶段

        这一阶段将会使用上个阶段传递的数据来产生屏幕上的像素,并渲染出最终的图像,这一阶段也是在GPU上运行,光栅化的任务主要是决定每个渲染图元中的哪些像素应该被绘制在屏幕上,他需要对上一个阶段得到的逐顶点数据(例如其中的纹理坐标,顶点颜色等)进行插值,然后再进行逐像素处理  PS: 和上一个阶段类似,光栅化阶段也可以分成更小的流水线阶段

posted @ 2021-05-21 16:48  专杀小三  阅读(416)  评论(0编辑  收藏  举报