本系列文章由 Amazonzx 编写,欢迎转载,转载请注明出处。
http://blog.youkuaiyun.com/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的变量中也进行相应修改:

本文介绍了如何在Unity3D中利用Shader渲染3D角色,包括创建自定义Shader、实现BumpMap效果、Blinn-Phong光照以及边缘光照和卡通渲染的Shader应用。通过实例详细讲解了Shader的编写和材质设置,帮助开发者实现不同的视觉效果。
最低0.47元/天 解锁文章
1729

被折叠的 条评论
为什么被折叠?



