一.Shader和渲染管线
Shader(着色器):一种较为短小的程序片断,用于告诉图形硬件如何计算和输出图像.可以这样理解,Shader是可编程的图形管线的算法片断.Shader主要分为Vertex Shader(顶点Shader)和Fragment Shader(片段Shader)两类.
图形管线(或渲染管线\渲染流水线):指芯片内部处理图形信号的相互独立的并行处理单元.一个流水线是一系列可以并行和按照固定顺序进行的阶段,每个阶段都从它的前一阶段接收输入,然后把输出发给随后的阶段.可以理解为图形管线就是渲染图像的一系列步骤的组合.渲染图像的一般步骤如下图所示:
Shader和材质\贴图等的关系简述:Shader是一段程序,负责将输入的贴图\顶点\颜色等数据组合起来,然后输出进行绘制.输入的贴图或颜色加上对应的shader和相应的参数等组合起来称为材质(Material).
二.Shader的主流高级编程语言
1.HISL(High Level Shading Language):基于DirectX
2.GLSL(OpenGL Shading Language):基于OpenGL
3.Cg(C for Graphis):是HLSL和GLSL的上层语言,是为GPU设计的高级着色器语言,保留了C语言的大部分语义.Cg由NVIDIA公司和微软公司相互协作在标准硬件光照语言的语法和语义上达成了一致开发,所以现在的HLSL和Cg其实是同一种语言.