展开全部

主编推荐语

本书是一部系统讲解Unity ShaderLab语言与编程方法的入门教程(包含纸质图书、Unity美术资源、Shader源代码)。

内容简介

本书共分14章,第1、2章,主要为了给读者普及3D数学相关的基础知识以及GPU渲染流水线的基本概念,为本书后面的内容提供基础知识的储备。
第3~11章,主要讲解了Shader的语法结构、两种不同的编写方式(Vertex Fragment Shader和Surface Shader)、光照模型、后期处理、自定义材质设置面板。这一部分内容是本书的主要部分,读者朋友们一定要认真阅读。
第12章,主要讲解Unity Shader可视化编辑插件——Amplify Shader Editor,方便读者在编写Shader之前梳理逻辑或者前期验证效果的时候使用。
第13、14章,通过对不同经典案例的分析和讲解,使读者进一步加深对Unity Shader的理解,并且能够更加高效地编写出可以应用于真实项目的Shader效果。

本书主要以3D美术人员的视角进行效果描述和逻辑讲解的,因此非常适合毫无程序编写经验的3D美术人员作为Unity Shader的入门之选。并且本书同样也适用于各大培训机构、高等院校作为Unity Shader课程教材使用。

当然,从事Unity程序开发的朋友也可以阅读本书,从3D美术人员的视角开始切入,或许可以帮助你更好的理解Unity Shader,毕竟Shader也是一种视觉效果的设计。

目录

  • 版权信息
  • 作者简介
  • 内容简介
  • 前言
  • 第1章 3D数学基础
  • 1.1 坐标与坐标系
  • 1.1.1 坐标及坐标系的概念
  • 1.1.2 3D中的坐标系
  • 1.1.3 左右手坐标系
  • 1.2 向量
  • 1.2.1 向量的几种表示方法
  • 1.2.2 向量的计算方法
  • 1.2.3 相反向量
  • 1.2.4 向量的模
  • 1.2.5 标准化向量
  • 1.3 向量运算
  • 1.3.1 向量的加法运算
  • 1.3.2 向量的减法运算
  • 1.3.3 向量的缩放
  • 1.3.4 向量的点积运算
  • 1.3.5 向量的叉积运算
  • 1.3.6 向量的运算法则
  • 1.4 矩阵
  • 1.4.1 矩阵的表示方法
  • 1.4.2 方阵和单位矩阵
  • 1.4.3 转置矩阵
  • 1.5 矩阵运算
  • 1.5.1 标量与矩阵相乘
  • 1.5.2 矩阵之间的乘法
  • 1.5.3 矩阵与向量相乘
  • 1.5.4 矩阵的运算法则
  • 1.6 使用矩阵进行变换
  • 1.6.1 矩阵变换向量的原理
  • 1.6.2 旋转矩阵
  • 1.6.3 缩放矩阵
  • 1.6.4 平移矩阵
  • 1.7 矩阵的深入讲解
  • 1.7.1 矩阵的行列式
  • 1.7.2 余子式和代数余子式
  • 1.7.3 通过代数余子式计算行列式
  • 1.7.4 逆矩阵
  • 1.7.5 正交矩阵
  • 1.7.6 逆矩阵的运算法则
  • 第2章 渲染流水线与Shader概念
  • 2.1 渲染流水线概念
  • 2.2 3D图形渲染完整流水线
  • 2.3 空间变换
  • 2.3.1 模型空间与世界空间
  • 2.3.2 摄像机空间
  • 2.3.3 裁切空间
  • 2.3.4 屏幕空间
  • 2.3.5 多个坐标空间存在的意义
  • 2.4 现代GPU渲染流水线
  • 2.5 Shader概念
  • 2.5.1 什么是Shader
  • 2.5.2 Shader和材质的关系与区别
  • 第3章 ShaderLab语法基础
  • 3.1 Shader的组织结构
  • 3.2 Shader的名称
  • 3.3 Properties
  • 3.3.1 数值类属性
  • 3.3.2 颜色和向量类属性
  • 3.3.3 纹理贴图类属性
  • 3.3.4 所有类型属性汇总
  • 3.4 SubShader
  • 3.4.1 SubShader的标签
  • 3.4.2 Pass的渲染状态
  • 3.5 Fallback
  • 第4章 顶点-片段着色器基础
  • 4.1 Shader编码工具
  • 4.2 创建和使用Shader
  • 4.3 Shader的编写方式
  • 4.4 CG语法基础
  • 4.4.1 编译指令
  • 4.4.2 着色器函数
  • 4.4.3 语义
  • 4.4.4 在CG中调用属性变量
  • 4.4.5 结构体
  • 第5章 Unity的包含文件
  • 5.1 包含文件的使用语法
  • 5.2 UnityCG.cginc
  • 5.2.1 顶点着色器输入结构体
  • 5.2.2 顶点变换函数
  • 5.2.3 向量变换函数
  • 5.2.4 灯光辅助函数
  • 5.2.5 视角向量函数
  • 5.2.6 其他辅助函数和宏
  • 5.3 UnityShaderVariables.cginc
  • 5.3.1 空间变换矩阵
  • 5.3.2 时间变量
  • 5.4 其他包含文件
  • 5.5 使用包含文件简化Shader
  • 第6章 Shader中的光照模型
  • 6.1 Lambert光照模型
  • 6.1.1 Lambert光照模型理论
  • 6.1.2 在Shader中获取灯光变量
  • 6.1.3 基于Lambert光照模型的Shader
  • 6.2 CG标准库函数
  • 6.3 Half-Lambert光照模型
  • 6.4 Phong光照模型
  • 6.4.1 Phong光照模型理论
  • 6.4.2 在Shader中获取环境光变量
  • 6.4.3 基于Phong光照模型的Shader
  • 6.5 逐像素光照
  • 6.6 Blinn-Phong光照模型
  • 6.6.1 Blinn-Phong光照模型理论
  • 6.6.2 Blinn-Phong光照模型的Shader
  • 6.7 灯光阴影
  • 6.7.1 渲染路径
  • 6.7.2 Pass标签
  • 6.7.3 内置的multi_compile
  • 6.7.4 实现阴影效果
  • 第7章 透明效果
  • 7.1 不透明物体的渲染顺序
  • 7.2 透明物体的渲染顺序
  • 7.3 混合透明效果
  • 7.3.1 混合指令
  • 7.3.2 混合系数
  • 7.3.3 混合操作
  • 7.3.4 混合透明的使用方法
  • 7.3.5 混合透明效果
  • 7.3.6 半透明物体的双面渲染
  • 7.4 透明测试效果
  • 7.4.1 透明测试的使用方法
  • 7.4.2 透明测试效果
  • 7.4.3 透明测试抗锯齿
  • 7.5 模板测试
  • 7.5.1 模板测试的计算流程
  • 7.5.2 模板测试的使用语法
  • 7.5.3 比较方法
  • 7.5.4 模板操作
  • 7.5.5 延迟渲染路径中的模板测试
  • 7.5.6 模板测试透明效果
  • 第8章 表面着色器的基础概念
  • 8.1 为什么不先学习表面着色器
  • 8.2 表面着色器的组织结构
  • 8.3 编译指令中的可选参数
  • 8.3.1 透明效果相关指令
  • 8.3.2 阴影和细分相关指令
  • 8.3.3 代码生成选项
  • 8.3.4 其他选项
  • 8.4 表面函数的语法结构
  • 8.4.1 表面函数输入结构体
  • 8.4.2 表面函数输出结构体
  • 第9章 编写表面着色器
  • 9.1 最简单的表面着色器
  • 9.2 在表面着色器中使用法线贴图
  • 9.3 表面着色器中的其他函数
  • 9.3.1 顶点修改函数
  • 9.3.2 自定义光照函数
  • 9.3.3 最终颜色修改函数
  • 9.4 曲面细分函数
  • 9.4.1 固定数量的曲面细分
  • 9.4.2 基于边长的曲面细分
  • 9.4.3 视锥剔除曲面细分
  • 9.4.4 基于距离的曲面细分
  • 9.4.5 Phong曲面细分
  • 9.5 透明效果
  • 9.5.1 混合透明效果
  • 9.5.2 透明测试效果
  • 第10章 Image Effec
  • 10.1 GrabPass
  • 10.1.1 语法结构
  • 10.1.2 GrabPass Shader
  • 10.1.3 测试效果
  • 10.2 C#基础语法
  • 10.2.1 C#脚本的基本结构
  • 10.2.2 Properties
  • 10.2.3 C#中的常用函数
  • 10.2.4 基于Shader资源创建材质
  • 10.2.5 通过脚本往Material中传递变量
  • 10.2.6 C#中的数学函数
  • 10.2.7 其他功能
  • 10.3 Post-Processing
  • 10.3.1 后期处理的工作流程
  • 10.3.2 后期处理Shader
  • 10.3.3 后期处理脚本
  • 10.4 后期处理堆栈
  • 10.4.1 安装Post Processing包
  • 10.4.2 设置Layer和Volume
  • 10.4.3 编写Shader
  • 10.4.4 编写C#脚本
  • 第11章 自定义材质面板
  • 11.1 不同类型的DrawerClass
  • 11.1.1 Toggle
  • 11.1.2 Enum
  • 11.1.3 KeywordEnum
  • 11.1.4 在编译指令中定义关键词
  • 11.1.5 PowerSlider
  • 11.1.6 IntRange
  • 11.2 属性的特性和Drawer
  • 11.3 装饰性PropertyDrawer
  • 11.3.1 SpaceDecorator
  • 11.3.2 Header Decorator
  • 11.4 完整PropertyDrawer示例
  • 第12章 Amplify Shader Editor
  • 12.1 相同功能的其他插件
  • 12.1.1 Shader Forge
  • 12.1.2 ShaderGraph
  • 12.2 ASE的使用流程
  • 12.3 Shader属性设置
  • 12.3.1 General
  • 12.3.2 Blend Mode
  • 12.3.3 Stencil Buffer
  • 12.3.4 Tessellation
  • 12.3.5 Output
  • 12.4 常用节点
  • 12.4.1 常数和属性类节点
  • 12.4.2 纹理和坐标类节点
  • 12.4.3 数学运算类节点
  • 12.4.4 向量运算相关节点
  • 12.4.5 图像处理相关节点
  • 12.4.6 摄像机和屏幕相关节点
  • 12.4.7 顶点数据类节点
  • 12.4.8 表面数据类节点
  • 12.4.9 时间节点
  • 12.5 使用ASE创建标准Shader
  • 12.5.1 Albedo
  • 12.5.2 Normal
  • 12.5.3 Emission
  • 12.5.4 Specular
  • 12.5.5 Ambient Occlusion
  • 12.5.6 Texture Coordinate
  • 12.5.7 属性排序及最终效果
  • 第13章 初级案例
  • 13.1 流光效果
  • 13.1.1 实现逻辑
  • 13.1.2 使用ASE实现效果
  • 13.1.3 测试Shader效果
  • 13.1.4 编写Shader
  • 13.1.5 使用扩展
  • 13.2 描边效果
  • 13.2.1 实现逻辑
  • 13.2.2 编写Shader
  • 13.2.3 效果测试
  • 13.3 遮挡半透效果
  • 13.3.1 实现逻辑
  • 13.3.2 编写Shader
  • 13.3.3 效果测试
  • 13.4 Tri-Planar Mapping效果
  • 13.4.1 实现逻辑
  • 13.4.2 使用ASE实现效果
  • 13.4.3 编写Shader
  • 13.4.4 测试Shader效果
  • 13.5 MatCap效果
  • 13.5.1 实现逻辑
  • 13.5.2 使用ASE实现效果
  • 13.5.3 编写Shader
  • 13.5.4 测试Shader效果
  • 13.6 物体切割效果
  • 13.6.1 实现逻辑
  • 13.6.2 使用ASE实现效果
  • 13.6.3 C#脚本
  • 13.6.4 测试效果
  • 13.6.5 编写Shader
  • 第14章 进阶案例
  • 14.1 消融效果
  • 14.1.1 实现逻辑
  • 14.1.2 资源准备
  • 14.1.3 使用ASE实现效果
  • 14.1.4 使用扩展
  • 14.1.5 编写Shader
  • 14.2 动态液体效果
  • 14.2.1 实现逻辑
  • 14.2.2 模型准备
  • 14.2.3 使用ASE实现效果
  • 14.2.4 测试Shader
  • 14.2.5 编写Shader
  • 14.3 Billboard效果
  • 14.3.1 实现逻辑
  • 14.3.2 使用ASE实现雪花效果
  • 14.3.3 测试Shader
  • 14.3.4 编写Shader
  • 14.4 序列帧动画
  • 14.4.1 实现逻辑
  • 14.4.2 使用ASE实现效果
  • 14.4.3 测试Shader
  • 14.4.4 编写Shader
  • 14.5 卡通风格效果
  • 14.5.1 资源准备
  • 14.5.2 使用ASE实现效果
  • 14.5.3 编写Shader
  • 14.6 夜视仪后期处理
  • 14.6.1 Shader讲解
  • 14.6.2 完整Shader代码
  • 14.6.3 C#脚本讲解
  • 14.6.4 完整脚本代码
  • 14.6.5 测试最终效果
  • 14.6.6 使用ASE编辑后期处理Shader
  • 写在最后
  • 参考文献
展开全部

评分及书评

尚无评分
目前还没人评分

出版方

清华大学出版社

清华大学出版社成立于1980年6月,是由教育部主管、清华大学主办的综合出版单位。植根于“清华”这座久负盛名的高等学府,秉承清华人“自强不息,厚德载物”的人文精神,清华大学出版社在短短二十多年的时间里,迅速成长起来。清华大学出版社始终坚持弘扬科技文化产业、服务科教兴国战略的出版方向,把出版高等学校教学用书和科技图书作为主要任务,并为促进学术交流、繁荣出版事业设立了多项出版基金,逐渐形成了以出版高水平的教材和学术专著为主的鲜明特色,在教育出版领域树立了强势品牌。