Unity Shader 1 什么是Shader
- 什么是Shader
- 什么是渲染管线
- Shader、材质、贴图的关系
1 什么是Shader
建一栋房子,结构、框架都有了,如何装饰装修呢,Shader就是一道道工序,这就是Shader的作用,他是要给实时处理渲染器,又称为着色器。他是程序片段,又称可编程图形管线的算法片段。
他分为两种
- Vertex Shader 顶点Shader
- Fragment Shader 像素(片段)Shader
2 渲染管线
渲染的过程,就是GPU、CPU实现图形化的过程,好比房子的装修,Shader就是一道道工序,GPU、CPU就是负责实现的核心动力,各种图形数据通过渲染管线把最终图形呈现在屏幕上。
包括:
- 应用程序阶段(主要由CPU负责)
- 几何阶段
- 光栅化阶段
2.1 应用程序阶段
- 可见性判断:仅提交可见物体给GPU
- 提交几何图元:提交网格、材质等数据,建立GPU命令表
- 控制着色器参数: uniform
2.2 几何阶段
处理的是几何数据,形成几何数据,主要流程包括:顶点着色器、图元装置(投影变换)、裁剪和屏幕映射
- 顶点着色器:进行顶点坐标变换。将输入的模型空间顶点坐标变换到裁剪空间顶点坐标。
- 图元装配:将顶点装配成指定图元的形状(如三角形)。
- 几何着色器:改变图元。通过产生新顶点构造出新的图元来生成其他形状。外壳着色器和域着色器可编程,镶嵌器是由硬件管理。
2.3 光栅化阶段
把图元映射为最终屏幕上显示的颜色。
- 光栅化:把图元映射为最终屏幕上相应的像素(把三角型切分成一个个像素)。
- 片段着色器:计算每个像素的最终颜色。
- 深度测试和混合阶段:判断像素的遮挡关系和透明度,决定是否应该丢弃和怎么显示。