Shader渲染管线流程
渲染管线流程:
- 应用程序阶段:主要是计算机CPU和内存通信,将模型身上的顶点信息,包括顶点坐标、纹理坐标、法线等,组装成一个图元,将图元信息发送给GPU
- 几何阶段:用来处理几何上的事情,这些操作通常在GPU上执行,这一阶段最重要的任务就是将图元信息中的顶点坐标变换到屏幕坐标系中,交给光栅化阶段处理。
- 光栅化阶段:对上一阶段传入的参数进行顶点处理,将顶点数据进行插值运算,然后再进行逐像素操作,最后将每一个像素点的颜色计算出来,写入到帧缓存中。
我们将几何阶段和光栅化阶段进行细分:
- 顶点着色器:将模型的模型坐标转换到齐次裁剪坐标系中,方便于投射到屏幕上。
- 裁剪:是将不在摄像机范围内的游戏对象剪掉
- 屏幕映射:将裁剪好了的顶点投射到2维屏幕坐标系下
- 三角形设置:将每一个顶点都通过三角形索引组合起来,产生联系,产生面
- 三角形遍历:这一步是通过检查每一个像素是否被一个三角形大面积覆盖
- 片元/片段着色器:可以从顶点着色器中取到对应的插值,片元着色器输出的是一个或多个颜色值,在这一阶段我们可以进行纹理采样
- 逐像素操作:通过模板测试和深度测试,来确定每一个像素是否可以被显示。如果当前颜色通过了所有的测试,就可以存储到颜色缓冲区中,下一帧屏幕刷新的时候,就把颜色缓冲区中的颜色取出来打到屏幕的像素点上。
ShaderLab中我们常常需要使用一些参数,但是这些参数是应用程序阶段传给我们的,我们需要的参数类型怎么让应用程序阶段知道?需要针对我们的形参声明说明语义
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!