导语
内容提要
本书全面讲解了Unity Shader渲染的实用技术,分为5篇,共31章。主要内容有着色器的概念和渲染流水线,渲染原理和图形存储器,Unity中着色器的形态,着色器中用到的各种空间概念,基本的光照模型,通道,前向渲染路径,基于光照贴图的烘焙照明,柔和的低频照明,各种阴影,通道的通用指令开关,固定流水线,表面着色器,常用的材质,雾的计算,物体的分割,自定义光源,高级效果,以及着色器的组织和复用,渲染优化等。
本书适合移动开发者、游戏开发者、程序员阅读,也可作为大专院校相关专业的师生用书以及培训学校的教材。
目录
第1篇 初识庐山真面目—Unity 3D着色器
第1章 着色器的概念和渲染流水线
1.1 着色器的概念
1.1.1 虚拟世界中的光明和色彩
1.1.2 游戏开发人员的巅峰
1.1.3 着色器简史
1.1.4 着色器的实例化
1.1.5 着色器的实现语言
1.1.6 Unity中的着色器编程
1.2 渲染流水线
1.2.1 渲染流水线简介
1.2.2 渲染流水线阶段
1.3 渲染流水线执行阶段
1.3.1 输入装配阶段
1.3.2 顶点着色器
1.3.3 细化阶段
1.3.4 几何着色器
1.3.5 流输出阶段
1.3.6 片元着色器
1.3.7 输出合并阶段
1.4 其他一些细节
1.4.1 延迟渲染和前向渲染
1.4.2 批次合并渲染
第2章 渲染原理和图形存储器
2.1 渲染原理
2.1.1 立即模式渲染
2.1.2 基于区块的(延迟)渲染
2.2 图形存储器
2.2.1 GPU的存储系统层次体系
2.2.2 数据结构
2.2.3 渲染所需的数据结构
2.2.4 合并批次渲染原理回顾
第3章 Unity中着色器的形态
3.1 Unity通过ShaderLab来组织着色器
3.1.1 关键字Shader
3.1.2 使用子着色器组织着色器的不同实现
3.1.3 子着色器的重要标签
3.1.4 子着色器中的Pass块
3.1.5 Pass块的标签及其名字的意义
3.1.6 使用FallBack语句保证着色器的广泛适应性
3.2 Unity支持的着色器编程语言
3.3 Unity中着色器的3种形态
3.3.1 固定流水线
3.3.2 可编程着色器
3.3.3 ShaderLab中的表面着色器
3.4 着色器的数据接口—属性和uniform变量
3.4.1 在Properties块中定义属性
3.4.2 通过图形界面操作属性
3.4.3 通过脚本操控属性
3.4.4 矩阵—不能在属性块中定义的变量
3.4.5 在Cg代码中使用属性
第4章 着色器中用到的各种空间概念
4.1 模型空间
4.1.1 为什么用模型空间
4.1.2 在脚本和着色器中进出模型空间
4.2 世界坐标空间
4.2.1 统一的坐标空间—世界坐标空间
4.2.2 在脚本和着色器中进出世界坐标空间
4.3 视空间
4.3.1 渲染的需要—视空间
4.3.2 在脚本和着色器中进出视空间
4.4 空间的一块—视锥体
4.5 剪切空间
4.5.1 投影
4.5.2 脚本和着色器中的投影矩阵
4.5.3 验证NDC
4.6 NDC之后
第5章 基本的光照模型
第2篇 让应用更炫彩—Unity中的照明
第6章 第一个执行的通道
第7章 前向渲染路径
第8章 基于光照贴图的烘焙照明
第9章 柔和的低频照明
第3篇 使应用更逼真—阴影
第10章 平面阴影
第11章 球体阴影
第12章 体积阴影
第13章 阴影映射
第14章 内置的阴影
第4篇 Unity中的各种着色器
第15章 通道的通用指令开关
第16章 固定流水线
第17章 表面着色器
第18章 凹凸材质
第19章 卡通材质
第20章 镜面材质
第21章 透明和半透明材质
第22章 体积雾
第23章 面积光
第24章 体积光
第25章 材质替代渲染
第26章 后期效果
第27章 投影
第28章 分割一个物体
第5篇 着色器的组织和优化
第29章 着色器的组织和复用
第30章 基本的渲染概念
第31章 渲染优化