Blue Flower

Unity Shader入门精要是一本由百万博客访问量作者冯乐乐编著的Unity Shader经典入门书籍,本书内容独特,填补了Unity Shader和渲染流水线之间的知识鸿沟,对Unity中一些渲染机制的工作原理进行详细剖析,帮助读者解决“是什么”“为什么”“怎么做”这三个基本问题,再配合大量实例,让读者在实践中逐渐掌握Unity Shader的编写方法。全书包含了Unity 5在渲染方面的新内容。如多次介绍Unity 5中的新工具帧调试器(Frame Debugger),并借助该工具的帮助来理解Unity中的渲染过程,欢迎有需要的朋友免费下载。
202209171912599373160000

内容介绍

《Unity Shader入门精要》不仅要教会读者如何使用Unity Shader,更重要的是要帮助读者学习Unity中的一些渲染机制以及如何使用Unity Shader实现各种自定义的渲染效果,希望这本书可以为读者打开一扇新的大门,让读者离制作心目中杰出游戏的心愿更近一步。本
《Unity Shader入门精要》主要内容为:第1章讲解了学习Unity Shader应该从哪里着手;第2章讲解了现代GPU是如何实现整个渲染流水线的,这对理解Shader的工作原理有着非常重要的作用;第3章讲解Unity Shader的实现原理和基本语法;第4章学习Shader所需的数学知识,帮助读者克服学习Unity Shader时遇到的数学障碍;第5章通过实现一个简单的顶点/片元着色器案例,讲解常用的辅助技巧等;第6章学习如何在Shader中实现基本的光照模型;第7章讲述了如何在Unity Shader中使用法线纹理、遮罩纹理等基础纹理;第8章学习如何实现透明度测试和透明度混合等透明效果;第9章讲解复杂的光照实现;第10章讲解在Unity Shader中使用立方体纹理、渲染纹理和程序纹理等高级纹理;第11章学习用Shader实现纹理动画、顶点动画等动态效果;第12章讲解了屏幕后处理效果的屏幕特效;第13章使用深度纹理和法线纹理实现更多屏幕特效;第14章讲解非真实感渲染的算法,如卡通渲染、素描风格的渲染等;第15章讲解噪声在游戏渲染中的应用;第16章介绍了常见的优化技巧;第17章介绍用表面着色器实现渲染;第18章讲解基于物理渲染的技术;第19章讲解在升级Unity 5时可能出现的问题,并给出解决方法;第20章介绍许多非常有价值的学习资料,以帮助读者进行更深入的学习。
本书适合Unity初学者、游戏开发者、程序员,也可以作为大专院校相关专业师生的学习用书,以及培训学校的培训教材。
202209171913005175930001

章节目录

第1篇 基础篇第1章 欢迎来到Shader的世界 21.1 程序员的三大浪漫 21.2 本书结构 3第2章 渲染流水线 52.1 综述 52.1.1 什么是流水线 52.1.2 什么是渲染流水线 62.2 CPU和GPU之间的通信 72.2.1 把数据加载到显存中 72.2.2 设置渲染状态 82.2.3 调用Draw Call 82.3 GPU流水线 92.3.1 概述 92.3.2 顶点着色器 102.3.3 裁剪 112.3.4 屏幕映射 112.3.5 三角形设置 122.3.6 三角形遍历 132.3.7 片元着色器 132.3.8 逐片元操作 142.3.9 总结 172.4 一些容易困惑的地方 182.4.1 什么是OpenGL/DirectX 182.4.2 什么是HLSL、GLSL、CG 192.4.3 什么是Draw Call 202.4.4 什么是固定管线渲染 222.5 那么,你明白什么是Shader了吗 232.6 扩展阅读 23第3章 Unity Shader基础 243.1 Unity Shader概述 253.1.1 一对好兄弟:材质和Unity Shader 253.1.2 Unity中的材质 263.1.3 Unity中的Shader 263.2 Unity Shader的基础:ShaderLab 283.3 Unity Shader的结构 293.3.1 给知识兔的Shader起个名字 293.3.2 材质和Unity Shader的桥梁:Properties 293.3.3 重量级成员:SubShader 313.3.4 留一条后路:Fallback 333.3.5 ShaderLab还有其他的语义吗 333.4 Unity Shader的形式 333.4.1 Unity的宠儿:表面着色器 343.4.2 最聪明的孩子:顶点/片元着色器 353.4.3 被抛弃的角落:固定函数着色器 353.4.4 选择哪种Unity Shader形式 363.5 本书使用的Unity Shader形式 363.6 答疑解惑 363.6.1 Unity Shader != 真正的Shader 363.6.2 Unity Shader和CG/HLSL之间的关系 373.6.3 我可以使用GLSL来写吗 383.7 扩展阅读 38第4章 学习Shader所需的数学基础 394.1 背景:农场游戏 394.2 笛卡儿坐标系 404.2.1 二维笛卡儿坐标系 404.2.2 三维笛卡儿坐标系 414.2.3 左手坐标系和右手坐标系 424.2.4 Unity使用的坐标系 444.2.5 练习题 454.3 点和矢量 454.3.1 点和矢量的区别 464.3.2 矢量运算 474.3.3 练习题 534.4 矩阵 544.4.1 矩阵的定义 544.4.2 和矢量联系起来 554.4.3 矩阵运算 554.4.4 特殊的矩阵 574.4.5 行矩阵还是列矩阵 604.4.6 练习题 614.5 矩阵的几何意义:变换 624.5.1 什么是变换 624.5.2 齐次坐标 634.5.3 分解基础变换矩阵 634.5.4 平移矩阵 644.5.5 缩放矩阵 644.5.6 旋转矩阵 654.5.7 复合变换 664.6 坐标空间 674.6.1 为什么要使用这么多不同的坐标空间 684.6.2 坐标空间的变换 684.6.3 顶点的坐标空间变换过程 724.6.4 模型空间 734.6.5 世界空间 734.6.6 观察空间 754.6.7 裁剪空间 774.6.8 屏幕空间 834.6.9 总结 854.7 法线变换 864.8 Unity Shader的内置变量(数学篇) 874.8.1 变换矩阵 874.8.2 摄像机和屏幕参数 884.9 答疑解惑 894.9.1 使用3×3还是4×4的变换矩阵 894.9.2 CG中的矢量和矩阵类型 894.9.3 Unity中的屏幕坐标:ComputeScreenPos/VPOS/WPOS 904.10 扩展阅读 934.11 练习题答案 93第2篇 初级篇第5章 开始Unity Shader学习之旅 1005.1 本书使用的软件和环境 1005.2 一个最简单的顶点/片元着色器 1005.2.1 顶点/片元着色器的基本结构 1015.2.2 模型数据从哪里来 1035.2.3 顶点着色器和片元着色器之间如何通信 1045.2.4 如何使用属性 1055.3 强大的援手:Unity分享的内置文件和变量 1075.3.1 内置的包含文件 1075.3.2 内置的变量 1095.4 Unity分享的CG/HLSL语义 1095.4.1 什么是语义 1095.4.2 Unity支持的语义 1105.4.3 如何定义复杂的变量类型 1105.5 程序员的烦恼:Debug 1115.5.1 使用假彩色图像 1115.5.2 利用神器:Visual Studio 1135.5.3 最新利器:帧调试器 1135.6 小心:渲染平台的差异 1155.6.1 渲染纹理的坐标差异 1155.6.2 Shader的语法差异 1165.6.3 Shader的语义差异 1175.6.4 其他平台差异 1175.7 Shader整洁之道 1175.7.1 float、half还是fixed 1175.7.2 规范语法 1185.7.3 避免不必要的计算 1185.7.4 慎用分支和循环语句 1195.7.5 不要除以0 1195.8 扩展阅读 120第6章 Unity中的基础光照 1216.1 知识兔是如何看到这个世界的 1216.1.1 光源 1216.1.2 吸收和散射 1226.1.3 着色 1226.1.4 BRDF光照模型 1236.2 标准光照模型 1236.2.1 环境光 1236.2.2 自发光 1246.2.3 漫反射 1246.2.4 高光反射 1246.2.5 逐像素还是逐顶点 1256.2.6 总结 1256.3 Unity中的环境光和自发光 1266.4 在Unity Shader中实现漫反射光照模型 1266.4.1 实践:逐顶点光照 1266.4.2 实践:逐像素光照 1296.4.3 半兰伯特模型 1306.5 在Unity Shader中实现高光反射光照模型 1316.5.1 实践:逐顶点光照 1326.5.2 实践:逐像素光照 1346.5.3 Blinn-Phong光照模型 1356.6 召唤神龙:使用Unity内置的函数 136第7章 基础纹理 1397.1 单张纹理 1407.1.1 实践 1407.1.2 纹理的属性 1427.2 凹凸映射 1467.2.1 高度纹理 1467.2.2 法线纹理 1467.2.3 实践 1487.2.4 Unity中的法线纹理类型 1547.3 渐变纹理 1557.4 遮罩纹理 1587.4.1 实践 1597.4.2 其他遮罩纹理 161第8章 透明效果 1628.1 为什么渲染顺序很重要 1638.2 Unity Shader的渲染顺序 1648.3 透明度测试 1658.4 透明度混合 1698.5 开启深度写入的半透明效果 1718.6 ShaderLab的混合命令 1738.6.1 混合等式和参数 1738.6.2 混合操作 1748.6.3 常见的混合类型 1758.7 双面渲染的透明效果 1768.7.1 透明度测试的双面渲染 1768.7.2 透明度混合的双面渲染 176第3篇 中级篇第9章 更复杂的光照 1809.1 Unity的渲染路径 1809.1.1 前向渲染路径 1829.1.2 顶点照明渲染路径 1859.1.3 延迟渲染路径 1869.1.4 选择哪种渲染路径 1889.2 Unity的光源类型 1889.2.1 光源类型有什么影响 1899.2.2 在前向渲染中处理不同的光源类型 1909.3 Unity的光照衰减 1959.3.1 用于光照衰减的纹理 1969.3.2 使用数学公式计算衰减 1969.4 Unity的阴影 1969.4.1 阴影是如何实现的 1979.4.2 不透明物体的阴影 1989.4.3 使用帧调试器查看阴影绘制过程 2029.4.4 统一管理光照衰减和阴影 2049.4.5 透明度物体的阴影 2069.5 本书使用的标准Unity Shader 209第10章 高级纹理 21010.1 立方体纹理 21010.1.1 天空盒子 21010.1.2 创建用于环境映射的立方体纹理 21210.1.3 反射 21310.1.4 折射 21510.1.5 菲涅耳反射 21710.2 渲染纹理 21910.2.1 镜子效果 21910.2.2 玻璃效果 22010.2.3 渲染纹理 vs. GrabPass 22410.3 程序纹理 22510.3.1 在Unity中实现简单的程序纹理 22510.3.2 Unity的程序材质 228第11章 让画面动起来 23011.1 Unity Shader中的内置变量(时间篇) 23011.2 纹理动画 23011.2.1 序列帧动画 23011.2.2 滚动的背景 23311.3 顶点动画 23411.3.1 流动的河流 23411.3.2 广告牌 23611.3.3 注意事项 239第4篇 高级篇第12章 屏幕后处理效果 24412.1 建立一个基本的屏幕后处理脚本系统 24412.2 调整屏幕的亮度、饱和度和对比度 24612.3 边缘检测 24912.3.1 什么是卷积 24912.3.2 常见的边缘检测算子 24912.3.3 实现 25012.4 高斯模糊 25312.4.1 高斯滤波 25312.4.2 实现 25412.5 Bloom效果 25912.6 运动模糊 26312.7 扩展阅读 266第13章 使用深度和法线纹理 26713.1 获取深度和法线纹理 26713.1.1 背后的原理 26713.1.2 如何获取 26913.1.3 查看深度和法线纹理 27113.2 再谈运动模糊 27213.3 全局雾效 27613.3.1 重建世界坐标 27613.3.2 雾的计算 27813.3.3 实现 27813.4 再谈边缘检测 28313.5 扩展阅读 287第14章 非真实感渲染 28814.1 卡通风格的渲染 28814.1.1 渲染轮廓线 28814.1.2 添加高光 28914.1.3 实现 29014.2 素描风格的渲染 29314.3 扩展阅读 29614.4 参考文献 297第15章 使用噪声 29815.1 消融效果 29815.2 水波效果 30215.3 再谈全局雾效 30515.4 扩展阅读 30915.5 参考文献 309第16章 Unity中的渲染优化技术 31016.1 移动平台的特点 31016.2 影响性能的因素 31116.3 Unity中的渲染分析工具 31216.3.1 认识Unity 5的渲染统计窗口 31216.3.2 性能分析器的渲染区域 31316.3.3 再谈帧调试器 31316.3.4 其他性能分析工具 31416.4 减少draw call数目 31416.4.1 动态批处理 31516.4.2 静态批处理 31616.4.3 共享材质 31816.4.4 批处理的注意事项 31816.5 减少需要处理的顶点数目 31916.5.1 优化几何体 31916.5.2 模型的LOD技术 31916.5.3 遮挡剔除技术 32016.6 减少需要处理的片元数目 32016.6.1 控制绘制顺序 32016.6.2 时刻警惕透明物体 32116.6.3 减少实时光照和阴影 32116.7 节省带宽 32216.7.1 减少纹理大小 32216.7.2 利用分辨率缩放 32316.8 减少计算复杂度 32316.8.1 Shader的LOD技术 32316.8.2 代码方面的优化 32316.8.3 根据硬件条件进行缩放 32416.9 扩展阅读 324第5篇 扩展篇第17章 Unity的表面着色器探秘 32817.1 表面着色器的一个例子 32817.2 编译指令 33017.2.1 表面函数 33017.2.2 光照函数 33017.2.3 其他可选参数 33117.3 两个结构体 33217.3.1 数据来源:Input结构体 33217.3.2 表面属性:SurfaceOutput结构体 33317.4 Unity背后做了什么 33417.5 表面着色器实例分析 33617.6 Surface Shader的缺点 341第18章 基于物理的渲染 34218.1 PBS的理论和数学基础 34218.1.1 光是什么 34318.1.2 双向反射分布函数(BRDF) 34418.1.3 漫反射项 34518.1.4 高光反射项 34618.1.5 Unity中的PBS实现 34718.2 Unity 5的Standard Shader 34818.2.1 它们是如何实现的 34818.2.2 如何使用Standard Shader 34918.3 一个更加复杂的例子 35218.3.1 设置光照环境 35218.3.2 放置反射探针 35518.3.3 调整材质 35618.3.4 线性空间 35618.4 答疑解惑 35718.4.1 什么是全局光照 35718.4.2 什么是伽马校正 35818.4.3 什么是HDR 36118.4.4 那么,PBS适合什么样的游戏 36218.5 扩展阅读 36318.6 参考文献 363第19章 Unity 5更新了什么 36519.1 场景“更亮了” 36519.2 表面着色器更容易“报错了” 36519.3 当家做主:自己控制非统一缩放的网格 36619.4 固定管线着色器逐渐退出舞台 366第20章 还有更多内容吗 36820.1 如果你想深入了解渲染的话 36820.2 世界那么大 36920.3 参考文献 369

使用说明

1、下载并解压,得出pdf文件
2、如果打不开本文件,请务必下载pdf阅读器
3、安装后,在打开解压得出的pdf文件
4、双击进行阅读试读>

下载仅供下载体验和测试学习,不得商用和正当使用。

下载体验

请输入密码查看内容!

如何获取密码?

 

点击下载