第1章 漫反射着色 1
1.1 引言 1
1.2 创建基本的表面着色器 2
1.2.1 准备工作 2
1.2.2 如何操作 2
1.2.3 实现原理 4
1.2.4 参考 5
1.3 为表面着色器添加属性 5
1.3.1 如何操作 5
1.3.2 如何操作 6
1.3.3 参考 7
1.4 在表面着色器中使用属性 7
1.4.1 如何操作 7
1.4.2 实现原理 9
1.5 创建自定义漫反射光照模型 9
1.5.1 如何操作 10
1.5.2 实现原理 10
1.5.3 更多内容 11
1.5.4 参考 12
1.6 创建Half Lambert光照模型 12
1.6.1 如何操作 12
1.6.2 实现原理 13
1.7 创建渐变纹理来控制漫反射着色 13
1.7.1 准备工作 14
1.7.2 如何操作 14
1.7.3 实现原理 14
1.8 使用2D渐变纹理创建假的BRDF 15
1.8.1 准备工作 15
1.8.2 如何操作 16
1.8.3 实现原理 17
1.8.4 参考 18
第2章 使用纹理贴图制作特效 19
2.1 引言 19
2.2 通过修改UV坐标实现纹理贴图的滚动 20
2.2.1 准备工作 20
2.2.2 如何操作 20
2.2.3 实现原理 21
2.3 让精灵表单动起来 22
2.3.1 准备工作 23
2.3.2 如何操作 23
2.3.3 实现原理 24
2.3.4 更多内容 25
2.3.5 参考 26
2.4 压缩和混合纹理贴图 26
2.4.1 准备工作 27
2.4.2 如何操作 28
2.4.3 实现原理 30
2.4.4 参考 31
2.5 法线贴图 31
2.5.1 准备工作 31
2.5.2 如何操作 32
2.5.3 实现原理 33
2.5.4 更多内容 33
2.6 在Unity编辑器中创建程序纹理贴图 34
2.6.1 准备工作 35
2.6.2 如何操作 35
2.6.3 实现原理 37
2.6.4 更多内容 38
2.7 Photoshop色阶效果 39
2.7.1 准备工作 39
2.7.2 如何操作 39
2.7.3 实现原理 41
2.7.4 更多内容 41
2.7.5 参考 41
第3章 利用镜面反射让游戏闪耀起来 42
3.1 引言 42
3.2 利用Unity3D内置的高光类型 42
3.2.1 准备工作 43
3.2.2 如何操作 43
3.2.3 实现原理 44
3.3 创建Phong高光类型 45
3.3.1 准备工作 45
3.3.2 如何操作 45
3.3.3 实现原理 46
3.4 创建BlinnPhong高光类型 48
3.4.1 准备工作 48
3.4.2 如何操作 48
3.4.3 实现原理 49
3.5 使用贴图对模型的高光进行遮罩 50
3.5.1 准备工作 50
3.5.2 如何操作 51
3.5.3 实现原理 53
3.6 金属与软高光 54
3.6.1 准备工作 54
3.6.2 如何操作 55
3.6.3 实现原理 56
3.6.4 参考 58
3.7 创建各向异性高光类型 58
3.7.1 准备工作 59
3.7.2 如何操作 59
3.7.3 实现原理 61
第4章 着色器的反射 63
4.1 在Unity3D中创建立方图 63
4.1.1 准备工作 64
4.1.2 如何操作 65
4.1.3 实现原理 66
4.1.4 参考 67
4.2 Unity3D中简单的立方图反射 67
4.2.1 准备工作 68
4.2.2 如何操作 68
4.2.3 实现原理 70
4.3 Unity3D中的遮罩反射 70
4.3.1 准备工作 70
4.3.2 如何操作 71
4.3.3 实现原理 72
4.4 Unity3D中的法线贴图和反射 73
4.4.1 准备工作 73
4.4.2 如何操作 74
4.4.3 实现原理 75
4.4.4 更多内容 76
4.5 Unity3D中的菲涅尔反射 76
4.5.1 准备工作 77
4.5.2 如何操作 77
4.5.3 实现原理 79
4.6 在Unity3D中创建简单的动态立方图系统 79
4.6.1 准备工作 80
4.6.2 如何操作 80
4.6.3 实现原理 82
4.6.4 更多内容 82
第5章 光照模型 83
5.1 引言 83
5.2 发光球体光照模型 83
5.2.1 准备工作 84
5.2.2 如何操作 85
5.2.3 实现原理 86
5.2.4 参考 87
5.3 漫反射卷积光照模型 88
5.3.1 准备工作 88
5.3.2 如何操作 89
5.3.3 实现原理 91
5.3.4 更多内容 92
5.3.5 参考 92
5.4 创建车辆喷漆的光照模型 92
5.4.1 准备工作 93
5.4.2 如何操作 93
5.4.3 实现原理 95
5.4.4 更多内容 95
5.5 皮肤着色器 95
5.5.1 准备工作 96
5.5.2 如何操作 97
5.5.3 实现原理 99
5.5.4 更多内容 101
5.6 布料着色器 101
5.6.1 准备工作 102
5.6.2 如何操作 102
5.6.3 实现原理 104
第6章 透明度 106
6.1 引言 106
6.2 使用alpha参数创建透明效果 106
6.2.1 准备工作 106
6.2.2 如何操作 107
6.2.3 实现原理 108
6.3 透明裁剪着色器 108
6.3.1 准备工作 108
6.3.2 如何操作 109
6.3.3 实现原理 110
6.4 通过渲染队列进行深度排序 110
6.4.1 准备工作 110
6.4.2 如何操作 111
6.4.3 实现原理 111
6.5 GUI和透明度 112
6.5.1 准备工作 113
6.5.2 如何操作 114
6.5.3 实现原理 117
第7章 顶点魔法 118
7.1 引言 118
7.2 在表面着色器中访问顶点颜色 118
7.2.1 准备工作 119
7.2.2 如何操作 119
7.2.3 实现原理 121
7.2.4 更多内容 121
7.3 表面着色器的顶点动画 122
7.3.1 准备工作 122
7.3.2 如何操作 122
7.3.3 实现原理 124
7.4 在地形中使用顶点颜色 124
7.4.1 准备工作 125
7.4.2 如何操作 125
7.4.3 实现原理 127
第8章 移动平台上着色器的优化 128
8.1 引言 128
8.2 什么是轻型着色器 128
8.2.1 准备工作 129
8.2.2 如何操作 130
8.2.3 实现原理 132
8.3 对着色器进行性能分析 133
8.3.1 准备工作 133
8.3.2 如何操作 133
8.3.3 实现原理 137
8.3.4 更多内容 137
8.4 移动平台上的着色器修改 137
8.4.1 准备工作 137
8.4.2 如何操作 138
8.4.3 实现原理 139
第9章 使用CgInclude文件让着色器模块化 141
9.1 引言 141
9.2 Unity中的内置CgInclude文件 141
9.2.1 准备工作 142
9.2.2 如何操作 142
9.2.3 实现原理 143
9.3 创建CgInc1ude文件来存储光照模型 144
9.3.1 准备工作 144
9.3.2 如何操作 144
9.3.3 实现原理 146
9.4 使用#define指令模块化地创建着色器 147
9.4.1 如何操作 147
9.4.2 实现原理 149
第10章 使用Unity的渲染纹理实现屏幕特效 150
10.1 引言 150
10.2 创建屏幕特效的脚本系统 150
10.2.1 准备工作 151
10.2.2 如何操作 151
10.2.3 实现原理 155
10.2.4 更多内容 155
10.3 使用屏幕特效实现亮度、饱和度以及对比度 157
10.3.1 准备工作 158
10.3.2 如何操作 158
10.3.3 实现原理 161
10.4 使用屏幕特效实现类似Photoshop的基本混合模式 162
10.4.1 准备工作 162
10.4.2 如何操作 163
10.4.3 实现原理 165
10.4.4 更多内容 165
10.5 使用屏幕特效实现叠加混合模式 167
10.5.1 准备工作 167
10.5.2 如何操作 167
10.5.3 实现原理 169
第11章 游戏的可玩性和屏幕特效 170
11.1 引言 170
11.2 创建老电影风格的屏幕特效 170
11.2.1 准备工作 171
11.2.2 如何操作 173
11.2.3 实现原理 176
11.3 创建夜视的屏幕特效 178
11.3.1 准备工作 179
11.3.2 如何操作 181
11.3.3 实现原理 184
11.3.4 参考 185