本系列文章由 Amazonzx 编写,欢迎转载,转载请注明出处。
http://blog.csdn.net/amazonzx/article/details/7935341
本文主要介绍一下如何利用Shader来渲染游戏中的3D角色,以及如何利用Unity提供的Surface Shader来书写自定义Shader。
一、 从Shader开始
1、通过Assets->Create->Shader来创建一个默认的Shader,并取名“MyShader”。
2、将MyShader打开即可看见Unity默认的Shader代码
Shader "Custom/MyShader" {
Properties {
_MainTex ("Base (RGB)", 2D) = "white" {}
}
SubShader {
Tags { "RenderType"="Opaque" }
LOD 200
CGPROGRAM
#pragma surface surf Lambert
sampler2D _MainTex;
struct Input {
float2 uv_MainTex;
};
void surf (Input IN, inout SurfaceOutput o) {
half4 c = tex2D (_MainTex, IN.uv_MainTex);
o.Albedo = c.rgb;
o.Alpha = c.a;
}
ENDCG
}
FallBack "Diffuse"
}
3、将该Shader赋给一个角色,就可以看到该Shader所能表达出的Diffuse渲染效果。
4、接下来我们将以此默认Shader作为蓝本,编写出自定义的Shader。另外,该Shader所用到的参数,我们将在下一章节进行说明。
二、 实现多种自定义渲染效果
1、 BumpMap效果
如果想实现Bump Map效果,可对上述的Shader做如下修改:
1.1 在属性Properties中加入:
Properties {
_MainTex ("Base (RGB)", 2D) = "white" {}
_BumpMap("Bumpmap", 2D) = "bump" {}
}
1.2 在SubShader的变量中也进行相应修改:
sampler2D _MainTex;
sampler2D _BumpMap;
st