图书介绍

UNITY SHADER入门精要2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载

UNITY SHADER入门精要
  • 冯乐乐著 著
  • 出版社: 北京:人民邮电出版社
  • ISBN:7115423054
  • 出版时间:2016
  • 标注页数:370页
  • 文件大小:69MB
  • 文件页数:388页
  • 主题词:

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快]温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页直链下载[便捷但速度慢]  [在线试读本书]   [在线获取解压码]

下载说明

UNITY SHADER入门精要PDF格式电子书版下载

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

第1篇 基础篇2

第1章 欢迎来到Shader的世界2

1.1 程序员的三大浪漫2

1.2 本书结构3

第2章 渲染流水线5

2.1 综述5

2.1.1 什么是流水线5

2.1.2 什么是渲染流水线6

2.2 CPU和 GPU之间的通信7

2.2.1 把数据加载到显存中7

2.2.2 设置渲染状态8

2.2.3 调用Draw Call8

2.3 GPU流水线9

2.3.1 概述9

2.3.2 顶点着色器10

2.3.3 裁剪11

2.3.4 屏幕映射11

2.3.5 三角形设置12

2.3.6 三角形遍历13

2.3.7 片元着色器13

2.3.8 逐片元操作14

2.3.9 总结17

2.4 一些容易困惑的地方18

2.4.1 什么是OpenGL/DirectX18

2.4.2 什么是HLSL、GLSL、CG19

2.4.3 什么是Draw Call20

2.4.4 什么是固定管线渲染22

2.5 那么,你明白什么是Shader 了吗23

2.6 扩展阅读23

第3章 Unity Shader基础24

3.1 Unity Shader概述25

3.1.1 一对好兄弟:材质和Unity Shader25

3.1.2 Unity中的材质26

3.1.3 Unity中的Shader26

3.2 UnityShader的基础:ShaderLab28

3.3 Unity Shader的结构29

3.3.1 给我们的Shader起个名字29

3.3.2 材质和Unity Shader的桥梁: Properties29

3.3.3 重量级成员:SubShader31

3.3.4 留一条后路:Fallback33

3.3.5 ShaderLab还有其他的语义吗33

3.4 Unity Shader的形式33

3.4.1 Unity的宠儿:表面着色器34

3.4.2 最聪明的孩子:顶点/片元着色器35

3.4.3 被抛弃的角落:固定函数着色器35

3.4.4 选择哪种Unity Shader形式36

3.5 本书使用的Unity Shader形式36

3.6 答疑解惑36

3.6.1 Unity Shader !=真正的Shader36

3.6.2 Unity Shader和CG/HLSL之间的关系37

3.6.3 我可以使用GLSL来写吗38

3.7 扩展阅读38

第4章 学习Shader所需的数学基础39

4.1 背景:农场游戏39

4.2 笛卡儿坐标系40

4.2.1 二维笛卡儿坐标系40

4.2.2 三维笛卡儿坐标系41

4.2.3 左手坐标系和右手坐标系42

4.2.4 Unity使用的坐标系44

4.2.5 练习题45

4.3 点和矢量45

4.3.1 点和矢量的区别46

4.3.2 矢量运算47

4.3.3 练习题53

4.4 矩阵54

4.4.1 矩阵的定义54

4.4.2 和矢量联系起来55

4.4.3 矩阵运算55

4.4.4 特殊的矩阵57

4.4.5 行矩阵还是列矩阵60

4.4.6 练习题61

4.5 矩阵的几何意义:变换62

4.5.1 什么是变换62

4.5.2 齐次坐标63

4.5.3 分解基础变换矩阵63

4.5.4 平移矩阵64

4.5.5 缩放矩阵64

4.5.6 旋转矩阵65

4.5.7 复合变换66

4.6 坐标空间67

4.6.1 为什么要使用这么多不同的坐标空间68

4.6.2 坐标空间的变换68

4.6.3 顶点的坐标空间变换过程72

4.6.4 模型空间73

4.6.5 世界空间73

4.6.6 观察空间75

4.6.7 裁剪空间77

4.6.8 屏幕空间83

4.6.9 总结85

4.7 法线变换86

4.8 Unity Shader的内置变量(数学篇)87

4.8.1 变换矩阵87

4.8.2 摄像机和屏幕参数88

4.9 答疑解惑89

4.9.1 使用3×3还是4×4的变换矩阵89

4.9.2 CG中的矢量和矩阵类型89

4.9.3 Unity中的屏幕坐标:ComputeScreenPos/VPOS/WPOS90

4.10 扩展阅读93

4.11 练习题答案93

第2篇 初级篇100

第5章 开始Unity Shader学习之旅100

5.1 本书使用的软件和环境100

5.2 一个最简单的顶点/片元着色器100

5.2.1 顶点/片元着色器的基本结构101

5.2.2 模型数据从哪里来103

5.2.3 顶点着色器和片元着色器之间如何通信104

5.2.4 如何使用属性105

5.3 强大的援手:Unity提供的内置文件和变量107

5.3.1 内置的包含文件107

5.3.2 内置的变量109

5.4 Unity提供的CG/HLSL语义109

5.4.1 什么是语义109

5.4.2 Unity支持的语义110

5.4.3 如何定义复杂的变量类型110

5.5 程序员的烦恼:Debug111

5.5.1 使用假彩色图像111

5.5.2 利用神器:Visual Studio113

5.5.3 最新利器:帧调试器113

5.6 小心:渲染平台的差异115

5.6.1 渲染纹理的坐标差异115

5.6.2 Shader的语法差异116

5.6.3 Shader的语义差异117

5.6.4 其他平台差异117

5.7 Shader整洁之道117

5.7.1 float、half还是fixed117

5.7.2 规范语法118

5.7.3 避免不必要的计算118

5.7.4 慎用分支和循环语句119

5.7.5 不要除以0119

5.8 扩展阅读120

第6章 Unity中的基础光照121

6.1 我们是如何看到这个世界的121

6.1.1 光源121

6.1.2 吸收和散射122

6.1.3 着色122

6.1.4 BRDF光照模型123

6.2 标准光照模型123

6.2.1 环境光123

6.2.2 自发光124

6.2.3 漫反射124

6.2.4 高光反射124

6.2.5 逐像素还是逐顶点125

6.2.6 总结125

6.3 Unity 中的环境光和自发光126

6.4 在Unity Shader中实现漫反射光照模型126

6.4.1 实践:逐顶点光照126

6.4.2 实践:逐像素光照129

6.4.3 半兰伯特模型130

6.5 在Unity Shader中实现高光反射光照模型131

6.5.1 实践:逐顶点光照132

6.5.2 实践:逐像素光照134

6.5.3 Blinn-Phong光照模型135

6.6 召唤神龙:使用Unity内置的函数136

第7章 基础纹理139

7.1 单张纹理140

7.1.1 实践140

7.1.2 纹理的属性142

7.2 凹凸映射146

7.2.1 高度纹理146

7.2.2 法线纹理146

7.2.3 实践148

7.2.4 Unity中的法线纹理类型154

7.3 渐变纹理155

7.4 遮罩纹理158

7.4.1 实践159

7.4.2 其他遮罩纹理161

第8章 透明效果162

8.1 为什么渲染顺序很重要163

8.2 Unity Shader的渲染顺序164

8.3 透明度测试165

8.4 透明度混合169

8.5 开启深度写入的半透明效果171

8.6 ShaderLab的混合命令173

8.6.1 混合等式和参数173

8.6.2 混合操作174

8.6.3 常见的混合类型175

8.7 双面渲染的透明效果176

8.7.1 透明度测试的双面渲染176

8.7.2 透明度混合的双面渲染176

第3篇 中级篇180

第9章 更复杂的光照180

9.1 Unity的渲染路径180

9.1.1 前向渲染路径182

9.1.2 顶点照明渲染路径185

9.1.3 延迟渲染路径186

9.1.4 选择哪种渲染路径188

9.2 Unity的光源类型188

9.2.1 光源类型有什么影响189

9.2.2 在前向渲染中处理不同的光源类型190

9.3 Unity的光照衰减195

9.3.1 用于光照衰减的纹理196

9.3.2 使用数学公式计算衰减196

9.4 Unity的阴影196

9.4.1 阴影是如何实现的197

9.4.2 不透明物体的阴影198

9.4.3 使用帧调试器查看阴影绘制过程202

9.4.4 统一管理光照衰减和阴影204

9.4.5 透明度物体的阴影206

9.5 本书使用的标准Unity Shader209

第10章 高级纹理210

10.1 立方体纹理210

10.1.1 天空盒子210

10.1.2 创建用于环境映射的立方体纹理212

10.1.3 反射213

10.1.4 折射215

10.1.5 菲涅耳反射217

10.2 渲染纹理219

10.2.1 镜子效果219

10.2.2 玻璃效果220

10.2.3 渲染纹理vs.GrabPass224

10.3 程序纹理225

10.3.1 在Unity中实现简单的程序纹理225

10.3.2 Unity的程序材质228

第11章 让画面动起来230

11.1 Unity Shader中的内置变量(时间篇)230

11.2 纹理动画230

11.2.1 序列帧动画230

11.2.2 滚动的背景233

11.3 顶点动画234

11.3.1 流动的河流234

11.3.2 广告牌236

11.3.3 注意事项239

第4篇 高级篇244

第12章 屏幕后处理效果244

12.1 建立一个基本的屏幕后处理脚本系统244

12.2 调整屏幕的亮度、饱和度和对比度246

12.3 边缘检测249

12.3.1 什么是卷积249

12.3.2 常见的边缘检测算子249

12.3.3 实现250

12.4 高斯模糊253

12.4.1 高斯滤波253

12.4.2 实现254

12.5 Bloom效果259

12.6 运动模糊263

12.7 扩展阅读266

第13章 使用深度和法线纹理267

13.1 获取深度和法线纹理267

13.1.1 背后的原理267

13.1.2 如何获取269

13.1.3 查看深度和法线纹理271

13.2 再谈运动模糊272

13.3 全局雾效276

13.3.1 重建世界坐标276

13.3.2 雾的计算278

13.3.3 实现278

13.4 再谈边缘检测283

13.5 扩展阅读287

第14章 非真实感渲染288

14.1 卡通风格的渲染288

14.1.1 渲染轮廓线288

14.1.2 添加高光289

14.1.3 实现290

14.2 素描风格的渲染293

14.3 扩展阅读296

14.4 参考文献297

第15章 使用噪声298

15.1 消融效果298

15.2 水波效果302

15.3 再谈全局雾效305

15.4 扩展阅读309

15.5 参考文献309

第16章 Unity中的渲染优化技术310

16.1 移动平台的特点310

16.2 影响性能的因素311

16.3 Unity中的渲染分析工具312

16.3.1 认识Unity 5的渲染统计窗口312

16.3.2 性能分析器的渲染区域313

16.3.3 再谈帧调试器313

16.3.4 其他性能分析工具314

16.4 减少draw call数目314

16.4.1 动态批处理315

16.4.2 静态批处理316

16.4.3 共享材质318

16.4.4 批处理的注意事项318

16.5 减少需要处理的顶点数目319

16.5.1 优化几何体319

16.5.2 模型的LOD技术319

16.5.3 遮挡剔除技术320

16.6 减少需要处理的片元数目320

16.6.1 控制绘制顺序320

16.6.2 时刻警惕透明物体321

16.6.3 减少实时光照和阴影321

16.7 节省带宽322

16.7.1 减少纹理大小322

16.7.2 利用分辨率缩放323

16.8 减少计算复杂度323

16.8.1 Shader的LOD技术323

16.8.2 代码方面的优化323

16.8.3 根据硬件条件进行缩放324

16.9 扩展阅读324

第5篇 扩展篇328

第17章 Unity的表面着色器探秘328

17.1 表面着色器的一个例子328

17.2 编译指令330

17.2.1 表面函数330

17.2.2 光照函数330

17.2.3 其他可选参数331

17.3 两个结构体332

17.3.1 数据来源:Input结构体332

17.3.2 表面属性:SurfaceOutput结构体333

17.4 Unity背后做了什么334

17.5 表面着色器实例分析336

17.6 Surface Shader的缺点341

第18章 基于物理的渲染342

18.1 PBS的理论和数学基础342

18.1.1 光是什么343

18.1.2 双向反射分布函数(BRDF)344

18.1.3 漫反射项345

18.1.4 高光反射项346

18.1.5 Unity中的PBS实现347

18.2 Unity 5的Standard Shader348

18.2.1 它们是如何实现的348

18.2.2 如何使用Standard Shader349

18.3 一个更加复杂的例子352

18.3.1 设置光照环境352

18.3.2 放置反射探针355

18.3.3 调整材质356

18.3.4 线性空间356

18.4 答疑解惑357

18.4.1 什么是全局光照357

18.4.2 什么是伽马校正358

18.4.3 什么是HDR361

18.4.4 那么,PBS适合什么样的游戏362

18.5 扩展阅读363

18.6 参考文献363

第19章 Unity 5更新了什么365

19.1 场景“更亮了”365

19.2 表面着色器更容易“报错了”365

19.3 当家做主:自己控制非统一缩放的网格366

19.4 固定管线着色器逐渐退出舞台366

第20章 还有更多内容吗368

20.1 如果你想深入了解渲染的话368

20.2 世界那么大369

20.3 参考文献369

热门推荐