用Unity shader编写教程

2015年03月15日 18:16 0 点赞 0 评论 更新于 2025-11-21 17:14

由于最近项目需要用到Shader,因此我通过官网进行了深入研究,顺便将相关内容记录如下。

Unity中Shader的分类

在Unity里,Shader主要可分为以下三类:

  1. 表面着色器(Surface Shaders)
  2. 可编程着色器(Vertex and Fragment Shaders)
  3. 固定着色器(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的渲染效果,可以按照以下步骤操作:

  1. 在Unity中创建一个Material。
  2. 将编写好的Shader文件拖动到该Material上。
  3. 把这个Material拖动到一个可见的对象上。

这样,你就可以看到该Shader的实际渲染效果了。

作者信息

boke

boke

共发布了 3994 篇文章