Shader这个东西太有用了,复习一下……
shader-着色器
【面试必问】 渲染管线
由一个三维场景触发,生成(或者说渲染)一张二维图像,换句话说从一系列的顶点数据、纹理等信息出发,把这些信息最终转换成一张可以人看到的图像,由CPU和GPU共同完成。
最简单的就是
硬盘出来一个三角面片,走近CPU,三角面片进GPU光栅化在显示器显示(顶点,本地,世界)
模型信息到最终屏幕的一个过程
真正的渲染管线分为三部分,1)应用阶段—>2)几何阶段—>3)光栅化阶段
流程细分
顶点处理==》本地–世界坐标
面处理==》 背面剔除,面的截取,面的组装
光栅化==》让一个像素点上只会出现一种颜色
像素处理==》将以向量为基础的面转化成点阵形式的像素集合
光栅化阶段最重要两个目标:计算每个图元覆盖了哪些像素,以及为这些像素计算他们的颜色,让每个像素只有一种颜色。
三角形设置(计算光栅化一个三维网格所需要的信息,计算三角形网格表示数据的过程)-》三角形遍历(检查每个像素是否被三角形网格覆盖,如果覆盖就会生成一个片元,输出片元序列,也叫扫描转换)-》片元着色器(像素着色器)
片元:不是真正意义上的像素,包括但不限于屏幕坐标
MVP变换:从模型空间>视图空间>投影变换
设置渲染状态
这些状态定义了场景中的网格是怎样被渲染的,例如,使用哪个顶点着色器、片元着色器,光源属性,材质等。如果我们没有更改渲染状态,那么所有网格都将会使用一种渲染状态。
Draw Call
是CPU发起的GPU接受的命令,这个命令指向一个需要被渲染的图元列表
可编程管线
顶点着色器:实现顶点转换,顶点着色功能。输入来自CPU,顶点着色器的处理单位是顶点。
最基本功能:把顶点坐标从模型空间转换到齐次剪裁空间