shader 中文翻译名 着色器,是一种较为短小的程序片段,用于告诉图形硬件如何计算和输出图像,过去由汇编语言来编写,现在也可以使用高级语言来编写。一句话概括:shader是编程图形管线的算法片段,
主要分为两类,VertexShder(顶点)和FragmentShader(片断)。
渲染管线:也称做渲染流水线,是显示芯片内部处理图形信号相互独立的并行处理单元,一个流水线是一序列可以并行和按照固定顺序进行的阶段
。每个阶段都从它的前一阶段接受输入,然后把输出发给随后的阶段。就像一个在同一时间内,不同阶段不同的汽车一起制造的专配线,传统的图形硬件流水线以流水的方式处理大量的顶点,几何图元和片段 一下用三幅图来描述这个过程
unity优化一个主要的部分就是减少drawcall ,而drawcal其实就是unity应用程序对Gpu的一个调度过程。在CPU和GPU分界线处 cpu负责收集图形的变换和一些数据类型包括矩阵变换等等,都要通过cpu计算然后传递给我们的GPU,这样一个对GPU的调度过程是非常昂贵的,减少drawcall就是要减少CPU对Gpu的调用。
shader和材质贴图的关系:
shader其实就是一小断程序,它负责将输入的顶点数据以指定的方式和输入的贴图或者颜色等组合起来然后输出绘图单元可以依据这个输出来将图像绘制到频幕上输入贴图或者颜色等,加上对应的shader,以及对shader的特丁的参数设置,将这些内容(shader及输入参数)打包存储在一起得到一个Materies(材质)。之后我们便可以将材质赋予三维物体来进行渲染(输出),材质好比引擎最终要使用的商品,而shader好比生产过程,贴图就是原材料