顶点着色器
把一个单独的顶点作为输入,转为另一种3D坐标,同时,顶点着色器允许我们对顶点属性进行一些基本处理。处理完后顶点会附着上一些通用信息,比如纹理uv之类。
基本图形组装
把顶点着色器的表示为基本图形的所有顶点作为输入(如果选择的是GL_POINTS,那么就是一个单独的顶点),把所有点组装为特定的基本图形的形状。
1. 图元装配:将顶点根据设置来构成点、线、三角面片;
2. 视锥体裁剪:剔除视锥体以外的图元提高性能;
3. 顶点坐标转为屏幕坐标
4. 执行背面/正面剔除
几何着色器
基本图形组装阶段的输出会传递给几何着色器,几何着色器把基本图形形式的一系列顶点的集合作为输入,它可以通过产生新顶点来构造出新的或者其他的基本图形来生成其他形状。
细分着色器
把给定基本图形细分为更多小基本图形的能力,创造出更平滑的视觉效果。
光栅化
细分着色器的输出会进入光栅化阶段,这里它会把基本图形映射为屏幕上相应的像素,生成供像素着色器使用的片元。在像素着色器运行之前,会执行裁切,裁切会丢弃超出你的视图以外的那些像素,来提升执行效率。
/OpenGL中的一个fragment是openGL渲染一个独立像素所需的所有数据/
像素着色器
计算一个像素的最终颜色,也是openGL高级效果产生的地方,通常用来计算像素最终颜色的3D场景的一些数据(比如光照、阴影、光的颜色等)
测试和混合
在所有相应颜色值确定以后,最终它会传到下一个阶段(alpha test和alpha blend)阶段,这个阶段检测像素的相应的深度和模板值。