图书介绍

UNITY SHADER入门精要pdf电子书版本下载

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

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
下载压缩包 [复制下载地址] 温馨提示:(请使用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 Call 8

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/DirectX 18

2.4.2 什么是HLSL、GLSL、CG 19

2.4.3 什么是Draw Call 20

2.4.4 什么是固定管线渲染 22

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

2.6 扩展阅读 23

第3章 Unity Shader基础 24

3.1 Unity Shader概述 25

3.1.1 一对好兄弟:材质和Unity Shader 25

3.1.2 Unity中的材质 26

3.1.3 Unity中的Shader 26

3.2 UnityShader的基础:ShaderLab 28

3.3 Unity Shader的结构 29

3.3.1 给我们的Shader起个名字 29

3.3.2 材质和Unity Shader的桥梁: Properties 29

3.3.3 重量级成员:SubShader 31

3.3.4 留一条后路:Fallback 33

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 !=真正的Shader 36

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/WPOS 90

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 程序员的烦恼:Debug 111

5.5.1 使用假彩色图像 111

5.5.2 利用神器:Visual Studio 113

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还是fixed 117

5.7.2 规范语法 118

5.7.3 避免不必要的计算 118

5.7.4 慎用分支和循环语句 119

5.7.5 不要除以0 119

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 Shader 209

第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.GrabPass 224

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 Shader 348

18.2.1 它们是如何实现的 348

18.2.2 如何使用Standard Shader 349

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 什么是HDR 361

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

精品推荐