Shader 学习之路-简述Shader常用语言(六)

1、Shader

Shader(着色器)实际上就是一小段程序,它负责将输入的Mesh(网格)以指定的方式和输入的贴图或者颜色等组合作用,然后输出。

Unity Shader 不等于真正的Shader,Unity Shader 实际上是指Shaderlab 文件,在硬盘上以.shader 为后缀的一种文件。

2、传统 Shader 与 Unity Shader相比

传统Shader:

仅可以编写特定类型的Shader,如顶点着色器颜色、片元着色器等

无法设一些渲染设置,如是否开启混合、深度测试

需要设置着色器输入和输出,并注意对应关系

Unity Shader:

可以在同一文件内同时包含着色器和片元着色器的代码

通过一行特定指令就可以完成设置

需要在特定语句块中声明一些属性,也可以依靠材质修改这些属性,数据(顶点位置、 uv坐标、法线),也可以直接访问的方法

3、Shader Lab

Shader Lab 作为一种专门Unity Shader 服务语言,我们可以编写Shader Lab  来生成Unity Shader。


4、着色器语言,作为中间语言(Intermediate Language),即交给CPU 可以理解的语言。

Cg(C for Graphic)

HLSL(High Level Shading Language)

GLSL(OpenGL Shading Language)

Cg/HLSL 实际是同一种语言(Microsoft 和NVIDIA合作)

ShaderLab 内部可以嵌套 Cg/HLSL 语言编写着色器代码,需要嵌套在命令CGPROGRAM 和ENDCG 之间,代码如下:

Pass

{

//Pass 的标签和状态设置

CGPROGRAM

//编译指令

#pragma vertex vert

#pragma fragment frag

//CG 代码

ENDCG

//其他设置

}

你可能感兴趣的:(Shader 学习之路-简述Shader常用语言(六))