Unity3D ShaderLab开发实战详解 pdf

2015年01月14日 11:17 1 点赞 0 评论 更新于 2020-01-23 21:36

《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资源链接如下:

通过阅读本书,读者可以系统地学习Unity Shader的开发技术,掌握各种渲染效果的实现方法,并学会如何优化Shader代码,提高应用的性能和质量。

作者信息

feifeila

feifeila

共发布了 570 篇文章