本文记录了我学习Shader过程中,对相关知识的理解。
这里先放上一张大佬博主做的图:
GPU渲染管线流程图
其中:
- 绿色的阶段都是完全可编程的。
- 黄色的阶段可配置,但不可编程。
- 蓝色的阶段完全固定。
以下是对GPU渲染管线的一个流程概览:
- 顶点着色器(The Vertex Shader)是完全可编程的阶段,顶点着色器可以对每个顶点进行诸如变换和变形在内的很多操作,提供了修改/创建/忽略顶点相关属性的功能,这些顶点属性包括颜色、法线、纹理坐标和位置。顶点着色器的必须完成的任务是将顶点从模型空间转换到齐次裁剪空间。
- 几何着色器(The Geometry Shader)位于顶点着色器之后,允许GPU高效地创建和销毁几何图元。几何着色器是可选的,完全可编程的阶段,主要对图元(点、线、三角形)的顶点进行操作。几何着色器接收顶点着色器的输出作为输入,通过高效的几何运算,将数据输出,数据随后经过几何阶段和光栅化阶段的其他处理后,会发送给片段着色器。
- 裁剪(Clipping)属于可配置的功能阶段,在此阶段可选运行的裁剪方式,以及添加自定义的裁剪面。
屏幕映射(Screen Mapping)、三角形设置(Triangle Setup)和三角形遍历(Triangle Traversal)阶段是固定功能阶段。- 像素着色器(Pixel Shader,Direct3D中的叫法)常常又称为片断着色器,片元着色器(Fragment Shader,OpenGL中的叫法),是完全可编程的阶段,主要作用是进行像素的处理,让复杂的着色方程在每一个像素上执行。
- 合并阶段(The Merger Stage)处于完全可编程和固定功能之间,尽管不能编程,但是高度可配置,可以进行一系列的操作。其除了进行合并操作,还分管颜色修改(Color Modifying),Z缓冲(Z-buffer),混合(Blend),模板(Stencil)和相关缓存的处理。
转载链接: http://blog.youkuaiyun.com/poem_qianmo/article/details/71978861