欢迎来到Unity Shader Graph的奇妙世界!本书将引领你从零开始,循序渐进,逐步掌握Shader Graph的使用技巧。无论是初学者还是已有一定基础的中级用户,通过本书的学习,都将能够熟练运用Shader Graph自己动手开发着色器,进而为玩家创造出沉浸感更强的游戏体验。
在构建视觉震撼且沉浸式的现代游戏和计算机图形学项目中,着色器扮演着至关重要的角色。借助于着色器的力量,我们能够精细地控制光线与物体之间的互动方式,模拟出复杂多变的材质和纹理效果,从而塑造出鲜活生动的虚拟世界。Unity Shader Graph正是这样一款强大且直观易用的工具,有了它,开发者和艺术家不需要编写复杂的代码就能轻松创造出个性化的着色器效果。
在本书中,我们将踏上一段激动人心的旅程,共同探索Shader Graph的基本概念和技术。本书面向初学者,不预设任何前置知识,而是逐步引导你从基础知识走向高级话题。无论你是有志于成为一名游戏开发者、3D艺术家,还是一门心思只想着创造令人惊叹的视觉效果制作者,都可以从本书中了解到相关的基础技能和知识,从而自如地创建自定义着色器,把创意变为现实。
通过本书,你将全面掌握Unity Shader Graph特效制作,从实现简单的扫描线特效到复杂的材质模拟(比如卡通风格的水面),再到创建气泡粒子特效,甚至全息投影等高级视觉特效。
本书深入探讨着色器背后的原理,包括 的数学基础和理论,以及它们的工作机制及其重要性。接着,本书介绍如何使用最新版本的Shader Graph来创作这些内容。凭借这款强大的视觉脚本工具,你可以让自己的游戏或作品达到新的高度,在视频游戏这个令人兴奋的领域中迈出坚实的步伐。
书中提供的大量逐步骤指南、实践操作示例和实用建议,可以加深你对Shader Graph的理解。此外,书中还要展示一系列真实世界的应用案例和示例,以激发你的创造力,并帮助你将着色器广泛应用于游戏开发、模拟以及视觉效果领域。
完成本书的学习后,你将完全掌握如何使用Shader Graph开发自己的着色器并能在Unity项目中创建惊人的视觉效果、逼真的材质和引人入胜的游戏场景。
让我们一起进入Shader Graph的精彩世界,解锁着色器带来的无限可能,让创意梦想照进现实吧!
第1章 着色器简介 001
1.1 着色器、网格和计算对象 001
1.2 着色器编程 007
1.2.1 顶点和片元着色器 008
1.2.2 着色器编程语言 009
1.2.3 着色器工具Shader Graph 010
1.2.4 着色器的数学基础 011
1.3 小结 016
第2章 Shader Graph简介 017
2.1 创建Unity 3D项目 017
2.2 Unity编辑器 018
2.3 创建第一个着色器 019
2.4 创建材质 024
2.5 渲染管线 026
2.5.1 URP管线 026
2.5.2 将项目升级到URP 026
2.5.3 安装URP包 027
2.5.4 设置URP资源 029
2.5.5 升级旧有材质 031
2.6 Shader Graph编辑器 032
2.6.1 Main Preview选项卡 033
2.6.2 Blackboard窗口 033
2.6.3 Graph Inspector 035
2.6.4 Master Stack 037
2.6.5 Vertex块 038
2.6.6 Fragment块 039
2.7 Shader Graph元素 053
2.7.1 Nodes 053
2.7.2 Properties 058
2.7.3 Sticky Notes 062
2.8 小结 062
第3章 常用节点 063
3.1 UV节点 065
3.2 One Minus节点 068
3.3 Add节点 068
3.4 Clamp节点 069
3.5 Multiply节点 070
3.6 Sine节点 071
3.7 Time节点 072
3.8 Remap节点 074
3.9 Lerp节点 074
3.10 Fraction节点 077
3.11 Step节点 079
3.12 SmoothStep节点 080
3.13 Power节点 081
3.14 Position节点 082
3.15 Dot Product节点 084
3.16 Posterize节点 085
3.17 Procedural Noise节点 086
3.17.1 Simple Noise节点 088
3.17.2 Gradient Noise节点 089
3.17.3 Voronoi Noise节点 089
3.18 Fresnel节点 092
3.19 小结 093
第4章 动态着色器 095
4.1 3D扫描线 098
4.1.1 使用Position节点显示对象坐标 098
4.1.2 使用Split节点定义垂直渐变 100
4.1.3 使用Multiply节点和Fraction节点实现重复 101
4.1.4 动态效果:使用Time节点和Add节点 103
4.1.5 对比度调整:使用Power节点 104
4.1.6 添加自定义颜色 105
4.1.7 使用点积节点设置自定义方向 107
4.1.8 公开属性 109
4.2 箭头图案 111
4.2.1 创建并设置Line Renderer 111
4.2.2 创建对角线图案 114
4.2.3 使用Absolute节点创建垂直对称 115
4.2.4 使用Fraction节点和Step节点为箭头图案创建清晰的边缘 116
4.2.5 使箭头在Line Renderer上滚动显示 118
4.2.6 自定义箭头图案的颜色 119
4.3 消融效果 120
4.3.1 使用Gradient Noise节点创建噪声纹理 120
4.3.2 添加噪声纹理到Alpha输入 122
4.3.3 使用Add节点实现逐渐消融的效果 122
4.3.4 动态PingPong消融效果 124
4.3.5 沿自定义方向的消融效果 125
4.3.6 创建带颜色的溶解边缘 126
4.4 全息投影着色器 129
4.4.1 使用Screen Position节点创建垂直渐变 129
4.4.2 使用Fraction节点创建重复图案 131
4.4.3 使用Noise节点随机化图案 132
4.4.4 使用Add节点和Time节点创建动态图案 134
4.4.5 为渐变全息线条添加颜色 135
4.4.6 通过Fresnel节点增强效果 136
4.4.7 使用Logic节点和Random节点创建闪烁效果 139
4.5 重构着色器 142
4.6 小结 144
第5章 Vertex着色器 145
5.1 程序性游鱼动画 146
5.1.1 导入并设置鱼类网格 147
5.1.2 获取小鱼模型的朝向 149
5.1.3 使用正弦节点创建波形图案 152
5.1.4 使波形模式动态化 153
5.1.5 沿指定轴变形网格 155
5.1.6 调整波形强度 158
5.2 体积雪效果 160
5.2.1 将3D模型导入场景 160
5.2.2 定义雪的方向遮罩 161
5.2.3 沿法线挤出几何体 164
5.2.4 修复破损的挤出网格 168
5.2.5 添加遮罩颜色 170
5.2.6 添加发光的菲涅耳效果 172
5.3 从黑洞中生成对象 174
5.3.1 完成准备工作 175
5.3.2 使顶点向网格中心坍缩 175
5.3.3 设置坍缩的目标奇点 177
5.3.4 根据顶点与目标奇点的距离来坍缩顶点 179
5.3.5 添加坍缩发光颜色 182
5.4 小结 184
第6章 扭曲着色器 185
6.1 冰纹理折射 187
6.1.1 准备工作 187
6.1.2 修改场景颜色以创建扭曲效果 188
6.1.3 使用冰面纹理修改场景颜色 188
6.1.4 使用冰面纹理修改场景颜色 192
6.1.5 利用冰面纹理和颜色自定义着色器 195
6.2 黑洞扭曲效果 197
6.2.1 创建黑洞中心 198
6.2.2 使用粒子系统实现广告牌效果 200
6.2.3 使用Twirl节点创建螺旋纹理 205
6.2.4 使用螺旋纹理修改场景颜色 207
6.2.5 为螺旋纹理创建遮罩 209
6.2.6 为螺旋纹理添加动态旋转 212
6.3 小结 214
第7章 高级着色器 215
7.1 卡通风格的水着色器 215
7.1.1 准备工作 216
7.1.2 访问深度缓冲区以使用Scene Depth节点创建泡沫 218
7.1.3 创建水波光影 224
7.1.4 使用SubGraph复用节点组 228
7.1.5 利用径向剪切添加径向变形 230
7.1.6 为Voronoi单元添加移动效果 232
7.1.7 添加额外的光影层 234
7.1.8 为水波光影纹理添加颜色 237
7.1.9 使水面顶点发生变形 239
7.2 虹彩泡泡着色器 245
7.2.1 准备工作 246
7.2.2 创建和设置反射 247
7.2.3 创建虹彩动态图案 255
7.2.4 添加薄膜干涉渐变 257
7.2.5 添加边缘透明度和颜色 261
7.3 小结 268
第8章 交互式雪地效果 269
8.1 配置场景 269
8.2 赋予角色移动能力 273
8.2.1 设置IDE 274
8.2.2 创建角色移动脚本 277
8.3 创建雪地平面3D对象 281
8.3.1 创建细分平面 282
8.3.2 将平面导入Unity 288
8.4 创建交互式雪地Shader Graph 290
8.4.1 Shader Graph设置 290
8.4.2 利用噪声进行位移 291
8.4.3 为雪地添加颜色和遮蔽效果 293
8.5 与雪地交互 295
8.5.1 使用渲染器纹理 295
8.5.2 绘制角色的移动路径 298
8.5.3 仅记录角色的移动路径 301
8.5.4 更新Main Camera的剔除遮罩 303
8.6 将渲染器纹理用作位移遮罩 304
8.7 小结 308