因为最近有项目要用到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拖给一个可见的对象就可以了,看下效果图: