渲染流水线
最主要的三个阶段:应用阶段(Application Stage)、几何阶段(Geometry Stage)、光栅化阶段(Rasterizer Stage )
- 应用阶段(cpu)处理场景数据输出渲染图元(rendering primitives)
- 几何阶段(gpu)处理每个渲染图元,进行逐点、逐多边形的操作,最重要的任务是将顶点坐标变换到屏幕空间中
- 光栅化阶段(gpu)计算图元覆盖了哪些像素并计算他们的颜色
应用阶段
- 数据加载到显存中
- 设置渲染状态 (使用什么顶点/片元着色器、材质等)
- 调用Draw Call(通知gpu)
几何阶段(顶点数据)
- 顶点着色器(Vertex Shader)(坐标变换和逐顶点光照,即把顶点从模型空间转换到齐次裁剪空间)
- 裁剪(Clipping)(裁剪不在摄像机内的物体以及剔除三角图元的面片)
- 屏幕映射(Screen Mapping)(坐标转换为屏幕坐标系Screen Coordinate)
光栅化阶段
- 三角形设置(Triangle Setup)(计算光栅化一个三角网格所需的信息即得到三角形边界的表示方式)
- 三角形遍历(Triangle Traversal)(检查像素是否被三角网格覆盖,若是则生成片元即Scan Conversion,计算插值信息但并不会生成颜色,并输出片元序列包括屏幕坐标、法线、纹理坐标等信息)
- 片元着色器(Fragment Shader)(着色操作,输出为一个或多个颜色值)
- 逐片元操作(Per-Fragment Operations)(修改颜色、深度缓冲、进行混合等。)(决定每个片元的可见性,进行测试和混合Blend)