用Unity shader编写教程
由于最近项目需要用到Shader,因此我通过官网进行了深入研究,顺便将相关内容记录如下。
Unity中Shader的分类
在Unity里,Shader主要可分为以下三类:
- 表面着色器(Surface Shaders)
- 可编程着色器(Vertex and Fragment Shaders)
- 固定着色器(Fixed Function Shaders)
固定着色器代码示例
我们先从最简单的固定着色器(Fixed Function Shaders)开始,以下是示例代码:
Shader "FixedShader/Test" // shader名字
{
Properties // 变量块
{
MainColor( "Main_Color", Color ) = (1,0.5,0.5,1) // 定义一个名字为MainColor的变量,类型为Color(RGBA格式),同时给一个默认值
}
SubShader // 代码块
{
Pass
{
Color [MainColor] // 使用上面定义的变量,将对象颜色设置为变量的值
}
}
FallBack "Diffuse" // 如果当前显卡不支持上面的SubShader,则使用这个
}
代码结构解析
通过上述代码可以看出,Unity的Shader代码主要分为两个部分:
Properties(变量块)
在这个部分定义的变量类似于Unity脚本中的Public变量,这些变量可以直接在编辑器中被查看和修改。例如,在上述代码中,我们定义了一个名为MainColor的变量,其类型为Color(RGBA格式),并为其赋予了一个默认值(1, 0.5, 0.5, 1)。
SubShader(代码块)
该部分用于设置渲染的参数,这些参数是直接提供给显卡使用的。由于不同的显卡对渲染的支持情况不同,因此一个Shader可能会包含多个SubShader。在执行渲染时,Unity会自动选择当前显卡支持的SubShader。上述代码中的Pass部分则具体定义了一次渲染过程,这里我们使用了之前在Properties中定义的MainColor变量来设置对象的颜色。
此外,代码中的FallBack "Diffuse"表示如果当前显卡不支持上述的SubShader,那么将使用名为Diffuse的Shader进行渲染。
查看效果的步骤
若要查看上述Shader的渲染效果,可以按照以下步骤操作:
- 在Unity中创建一个Material。
- 将编写好的Shader文件拖动到该Material上。
- 把这个Material拖动到一个可见的对象上。
这样,你就可以看到该Shader的实际渲染效果了。