因为最近有项目要用到shader,所以通过官网好好研究了下,顺便记录下:
Unity中的shader可以分为三类:
1:表面着色器(surface shaders)
2:可编程着色器( vertex and fragment shaders )
3:固定着色器(fixed function shaders)
先写最简单的fixed function shaders,先看下代码
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
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(变量块)、SubShader(代码块)
在变量块中定义的变量就相当于Unity脚本中的一个Public变量,可以直接在编辑器中看到。
而代码块则是设置渲染的参数,直接给显卡用的,而程序肯定不能只支持一张显卡,所以这个subshader不止一个的,
Unity在执行渲染的时候会选择当前显卡支持的subshader。代码很简单,就不再解释了。
要看效果的话,在Unity中创建一个Material,然后把写好的shader拖给他,最后把Material拖给一个可见的对象就可以了,看下效果图: