Unity3D ShaderLab开发实战详解 pdf
《Unity 3D ShaderLab开发实战详解》是一本具有较高专业性和实用性的书籍,不过阅读该书需要一定的数学基础,不太适合刚入门的游戏开发者。
书籍内容概述
本书全面讲解了Unity Shader渲染的实战技术,全书分为五篇共33章,内容涵盖了Shader在3D游戏中的作用、Shader的实例化、实现语言等基础知识,以及各种渲染路径、光照模型、阴影效果、Shader类型等高级内容,还包括了Shader的组织和复用、渲染概念及优化等实战技巧。以下是各篇的详细内容:
第1篇 初识庐山真面目——Unity 3D Shader
- 第1章 Shader(着色器)的概念和在3D游戏中的作用
- 介绍Shader的概念,包括虚拟世界中的光明和色彩、游戏开发人员的终点、Shader简史。
- 讲解Shader的实例化和实现语言,如GPU上的编程和Unity中的着色器编程。
- 第2章 Unity中Shader(着色器)的形态
- 阐述Unity通过ShaderLab来组织Shader,包括关键字Shader、SubShader的组织和重要标签、Pass块及其标签的意义,以及FallBack的使用。
- 介绍Unity的ShaderLab所支持的Shader编程语言和Shader的3种形态(固定管线、可编程Shader、Surface Shader)。
- 讲解Shader的数据接口,如属性和uniform变量的定义、操作和使用。
- 第3章 Shader(着色器)中用到的各种空间概念
- 介绍模型空间、世界坐标空间、视空间、视锥体和剪切空间的概念和作用。
- 讲解在脚本和Shader中进出这些空间的方法。
- 第4章 基本的光照模型
- 对光源对物体照明进行分类,包括间接照明和直接照明。
- 介绍照明的计算方式,如漫反射和Lambert、镜面高光和Phong、半角向量和BlinnPhong。
第2篇 让你的应用更炫彩——Unity中的照明
- 第5章 第一个被执行的Pass
- 讲解不同的LightMode被选择的顺序,包括渲染路径和Pass的LightMode标签。
- 介绍设计可以检测渲染路径的材质和场景的方法。
- 总结不同渲染路径下Pass的执行规则。
- 第6章 VertexLit渲染路径
- 介绍顶点照明的概念和存取光源的变量。
- 讲解顶点照明和Unity存放光源的三种方式,包括检测方法和结果分析。
- 给出一个顶点照明的实现例子。
- 第7章 Forward渲染路径
- 介绍ForwardBase和ForwardAdd的表现和重要光源。
- 讲解重要光源在ForwardAdd内的执行情况和Unity存放光源的三种方式。
- 总结Forward渲染路径下材质的适应性和光源设置方法。
- 第8章 基于光照贴图的烘焙照明
- 介绍单光照贴图和VertexLit、Forward、Deferred渲染路径的应用,包括烘焙场景的测试、材质的使用、实时照明的处理等。
- 讲解在效果和性能间进行权衡的方法,如Resolution选项和Scale In Lightmap选项的使用。
- 介绍双光照贴图和方向光照贴图的应用和限制。
- 第9章 基于LightProbes的照明
- 介绍LightProbes的概念、优点和管理方法。
- 讲解放置LightProbes的注意事项、动态更新方法、照明采样和阴影处理。
- 介绍在自己的材质中使用LightProbes的方法。
第3篇 使应用更逼真——Shadows(阴影)
- 第10章 平面阴影
- 介绍平行光和点光源对平面的投影,包括投影的考虑、矩阵的使用和阴影的计算。
- 讲解阴影的淡出方法和潜在问题。
- 第11章 球体阴影
- 介绍平行光和点光源对球体的投影,包括投影的信息、计算和阴影的淡入/淡出。
- 第12章 体积阴影
- 介绍将顶点沿某一方向挤出和从Volumes中找到阴影区域的方法。
- 讲解渲染阴影的过程和需要注意的问题。
- 第13章 阴影映射
- 介绍灯光空间和相机空间的观察、Z深度的渲染和投射。
- 讲解比较Z深度的方法和精度问题的处理。
- 第14章 内置的阴影
- 介绍投射阴影和接受阴影的方法,包括ShadowCaster的使用和自定义。
- 讲解Surface Shader和阴影的关系。
第4篇 Unity中的各种Shader
- 第15章 Pass的通用指令开关
- 介绍使用LOD在运行时决定材质、渲染队列、透明的产生、混合操作、通道遮罩、ZTest、Z深度的偏移、面的剔除操作、自动贴图坐标的生成、抓屏操作和雾效的方法。
- 第16章 固定管线
- 介绍Unity中固定管线的基本形态,包括与照明相关的Material块、处理纹理的SetTexture块和Combine语句。
- 讲解使用顶点色、光照贴图和嵌套Cg代码的方法。
- 第17章 Surface Shader
- 介绍Surface Shader的适应性,包括对VertexLit、Forward、Deferred渲染路径的支持情况。
- 讲解Forward和Deferred渲染路径下Surface Shader的实现和参数设置。
- 第18章 凹凸材质
- 介绍切空间和凹凸贴图的概念和计算方法,包括切空间矩阵的使用、法线贴图的压缩和解压缩、高光的计算等。
- 讲解Parallax Mapping和Relief Mapping的原理和实现。
- 第19章 卡通材质
- 介绍描边的方法,包括沿法线挤出轮廓、在视空间中挤出、调和法线和顶点方向等。
- 讲解卡通着色的方法,包括对光照进行离散化和使用2D贴图重新映射光照。
- 第20章 镜面材质
- 介绍镜像相机的实现和使用,包括位置和角度的镜像、渲染和投影的设置。
- 讲解镜面材质的工作和脚本的工作。
- 第21章 半透明材质
- 介绍半透明材质的概念和简单表达方式。
- 第22章 体积雾
- 介绍距离和厚度的表达方法,包括相对于背景的体积雾和物体形体的体积雾的计算。
- 第23章 Wrap Model新解
- 介绍一个可调节的Wrap光照模型和另一种实现途径。
- 第24章 面积光
- 介绍线光源和面积光源的概念、计算和整合方法。
- 第25章 体积光
- 介绍体积光和体积阴影的关系和实现方法。
- 第26章 材质替代渲染
- 介绍相机和物体的渲染消息发送顺序、相机的渲染方法和使用RenderWithShader方法的技巧。
- 讲解SetReplacementShader和ResetReplacementShader的使用。
- 第27章 后期效果
- 介绍Graphics的两个方法、简单的调色、景深、轮廓检测、扭曲、运动模糊、噪波和色彩的溢出等后期效果的实现方法。
- 第28章 地形
- 介绍地表、花草和树木的材质,包括纹理的控制、自定义和使用方法。
- 讲解应用Unity计算的Occlusion的方法。
- 第29章 投影
- 介绍Unity的Projector的使用和实现自己的投影的方法,包括投影矩阵的设定、采样投影的材质和模拟粒子的广告牌效果。
第5篇 Shader的组织和优化
- 第30章 Shader的组织和复用
- 介绍cginc文件的使用、通过UsePass来复用Pass、定义自己的Shader关键字和使用multi_pile编译Shader的多个版本。
- 讲解Unity对DX11支持所带来的问题。
- 第31章 你必须知道的渲染概念
- 介绍逐顶点计算和逐像素计算的概念和取舍方法。
- 讲解Draw Call的指标意义、利用渲染队列的技巧。
- 第32章 基于渲染路径的优化
- 介绍VertexLit、Forward、Deferred渲染路径的特点和优化方法,包括合理的光照计算和灯光布局。
- 第33章 移动平台上的优化
- 介绍移动平台的特点和一些指令的运算速度概念。
- 讲解几何复杂度的考量、贴图的问题、数据类型和变量的使用方式、慎用后期效果和透明效果等优化方法。
适用人群
本书适合移动开发者、游戏开发者、程序员阅读,也可作为大专院校相关专业的师生用书,或培训学校的教材。
书籍资源获取
《Unity 3D ShaderLab开发实战详解》pdf资源链接如下:
- 链接: https://pan.baidu.com/s/1EunjTx2niY2i1PlUkW8B-g
- 提取码: nh37
通过阅读本书,读者可以系统地学习Unity Shader的开发技术,掌握各种渲染效果的实现方法,并学会如何优化Shader代码,提高应用的性能和质量。