如果这篇博客帮助到你,可以请我喝一杯咖啡~
CC BY 4.0 (除特别声明或转载文章外)
综述
其中:
- 顶点着色器和片元着色器是完全可编程控制的。
- 曲面细分着色器和几何着色器是可选的着色器,且是完全可编程控制的。
- 裁剪和逐片元操作是是可以配置的但不可编程。
- 屏幕映射、三角形设置以及遍历是由GPU固定实现的,开发者没有任何控制权。
顶点着色器
输入进来的每个顶点都会调用一次顶点着色器,我们无法得知顶点与顶点之间的关系。例如,我们无法得知两个顶点是否属于同一个三角网格。顶点着色器必须进行顶点的坐标变换,需要时还可以计算和输出顶点的颜色。例如,可能需要进行逐顶点的光照。
坐标变换。顶点着色器可以改变顶点的位置,比如我们可以通过改变顶点位置模拟水面、布料等。但无论坐标怎么改,最终都要把顶点坐标从模型空间转换到齐次裁剪空间。接着通常再由硬件做透视除法后,最终得到归一化的设备坐标NDC。