shder是如何工作的?实际上,shader只是渲染流水线的一个环节。
一、渲染流程分为三个阶段:应用阶段,集合阶段,光栅化阶段。
1、应用阶段:此阶段通常是由CPU负责实现,开发者具有这个阶段的绝对控制权。这一阶段中开发者主要有三个任务:首先,准备好场景数据,例如摄像机的位置、视椎体、场景中包含了哪些模型、使用了哪些光源等等;其次,为了提高渲染性能,我们需要做一个粗粒度剔除工作,把那些不可见物体剔除出去,这样不用交给几何阶段处理;最后,我们需要设置好每个模型的渲染状态。渲染状态包括但不限于他使用的材质、纹理、shader等。这一阶段最重要的是渲染所需的几何信息,即渲染图元,例如点,线,三角面等,这些信息会传递给下一阶段。
2、几何阶段:用于处理所有和我们要绘制的几何相关的事情。负责和每个渲染图元打交道,进行逐顶点、逐多边形的操作。
3、光栅化阶段:这一阶段会使用上个阶段传递的数据来产生屏幕上的像素,并渲染出最终的图像。这一阶段在GPU上运行。
二、CPU\GPU之间的通信
渲染流水线起点是CPU即应用阶段,可大致分为三个小阶段:把数据加载到显存中,设置渲染状态,调用Draw Call。