批量上传,套装书可能不全,下单前咨询在线客服! 正版书 !!!
¥ 43.25 4.9折 ¥ 89 全新
库存6件
作者唐福幸
出版社清华大学出版社
ISBN9787302571575
出版时间2021-03
装帧平装
开本16开
定价89元
货号29213275
上书时间2024-10-19
本书的写作背景
相信很多人在玩游戏的过程中,在体验游戏剧情的同时,也会被游戏中精美的画面所吸引。因此我猜想,肯定会有很多人跟我一样,有一种想要制作一款画质精美的游戏的冲动。然而想要实现精美画质的视觉效果,往往需要编写多种多样的Shader。但对于一些毫无编程经验的人来说,想要入门Unity Shader比较困难。这是因为,一方面国内关于Unity Shader的书少之又少,而目前市面仅有的几本也是针对Unity 5版本编写的,并不完全适用于Unity 2019版; 另一方面网上关于Unity Shader的教程,很多都是一上来直接讲代码,很少有真正从基础开始讲解的。于是笔者萌生了一个念头: 写一本面向零基础Unity Shader爱好者的入门指南。
本书的独特之处
本书采用由易到难、层层深入的讲解方法,带领毫无Shader编程基础的读者逐渐掌握这门技术。对于一些理论性的知识和使用方法,本书不会灌入式地硬性讲解,而是会从内在逻辑开始讲起,从而使读者彻底理解。
为了方便读者理解Shader效果实现的内在逻辑,本书插入了大量流程图、汇总表格等。对于一些专有名词或者语法关键词,本书在编写的过程中使用了“中文 英文”的方式,方便读者理解以及后期查找或者阅读其他资料。
笔者一直认为,Shader的学习达到一定程度之后,其实就是在学习数学算法。Shader的程序代码本身并不重要,重要的是里边的逻辑和算法。很多人总是会好奇“这段代码为什么能够实现这样的效果”,相信这是学习Shader的人想弄清楚的。而涉及逻辑类的数学思想有时候很难用文字表达出来,所以本人在案例讲解部分会借助可视化Shader编辑器“Amplify Shader Editor”来帮助读者理解其中的内在逻辑。
需要提前掌握的知识
作为一本计算机图形专业书籍,建议读者在阅读本书之前掌握如下知识:
(1) Unity的基本操作,比如导入资源、创建对象、添加组件等。
(2) 平面数学。
(3) 空间几何基础。
(4) 三角函数。
(5) 基础编程知识,比如理解变量、函数、运算操作等。
本书的源文件
为了方便读者编写测试,本书会附赠课程所涉及的所有Shader文件以及项目资源,读者将Package文件导入Unity项目之后,在Assets/ Unity ShaderLab Tutorial路径下即可看到所有的资源。
特别鸣谢
在这里我要特别感谢我的未婚妻,正是在她的鼓励下,我才有了编写本书的动力。记得在正式开始撰写本书之前,当我一直在为后续的出版事宜发愁时,她告诉我: “先迈出步,后面自然会有路。”因此我把出版问题全部抛掷脑后,专心写完了这本书。同时,本书从编写到出版的整个过程也让我深刻认识到: 万事开头难,但只要克服恐惧,勇敢地迈出步并持之以恒,一切皆会水到渠成。后来,每当我遇到事情犹豫不前的时候,我总会想起这句话: “先迈出步,后面自然会有路。”
本书大部分配图是使用Edraw制作而成的,这款软件使得我在配图制作方面节省了大量的时间,因此本人对这款图例制作软件表示郑重的感谢。
本书能够顺利出版,还要感谢清华大学出版社, 在该出版社相关编辑的帮助下,本书得以顺利面世。
后,本书若有疏漏和不足之处,恳请读者批评指正。
于广州
2020年7月
本书是一部系统讲解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也是一种视觉效果的设计。
唐福幸 资深3D美术师,从事3D行业已有六年,先后在多家公司担任3D美术主管、3D技术美术师,擅长一切从零开始:开创团队、制定流程、人员培训、效果把控。乐于钻研技术,并与人沟通分享。能够熟练使用Maya、ZBrush、Substance Painter、Substance Designer、Unity、Unreal等30余款3D专业软件,目前在有车以后公司担任“高级技术美术师”。
第1章3D数学基础
1.1坐标与坐标系
1.1.1坐标及坐标系的概念
1.1.23D中的坐标系
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.23D图形渲染完整流水线
2.3空间变换
2.3.1模型空间与世界空间
2.3.2摄像机空间
2.3.3裁切空间
2.3.4屏幕空间
2.3.5多个坐标空间存在的意义
2.4现代GPU渲染流水线
2.5Shader概念
2.5.1什么是Shader
2.5.2Shader和材质的关系与区别
第3章ShaderLab语法基础
3.1Shader的组织结构
3.2Shader的名称
3.3Properties
3.3.1数值类属性
3.3.2颜色和向量类属性
3.3.3纹理贴图类属性
3.3.4所有类型属性汇总
3.4SubShader
3.4.1SubShader的标签
3.4.2Pass的渲染状态
3.5Fallback
第4章顶点片段着色器基础
4.1Shader编码工具
4.2创建和使用Shader
4.3Shader的编写方式
4.4CG语法基础
4.4.1编译指令
4.4.2着色器函数
4.4.3语义
4.4.4在CG中调用属性变量
4.4.5结构体
第5章Unity的包含文件
5.1包含文件的使用语法
5.2UnityCG.cginc
5.2.1顶点着色器输入结构体
5.2.2顶点变换函数
5.2.3向量变换函数
5.2.4灯光辅助函数
5.2.5视角向量函数
5.2.6其他辅助函数和宏
5.3UnityShaderVariables.cginc
5.3.1空间变换矩阵
5.3.2时间变量
5.4其他包含文件
5.5使用包含文件简化Shader
第6章Shader中的光照模型
6.1Lambert光照模型
6.1.1Lambert光照模型理论
6.1.2在Shader中获取灯光变量
6.1.3基于Lambert光照模型的Shader
6.2CG标准库函数
6.3HalfLambert光照模型
6.4Phong光照模型
6.4.1Phong光照模型理论
6.4.2在Shader中获取环境光变量
6.4.3基于Phong光照模型的Shader
6.5逐像素光照
6.6BlinnPhong光照模型
6.6.1BlinnPhong光照模型理论
6.6.2BlinnPhong光照模型的Shader
6.7灯光阴影
6.7.1渲染路径
6.7.2Pass标签
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.5Phong曲面细分
9.5透明效果
9.5.1混合透明效果
9.5.2透明测试效果
第10章Image Effect
10.1GrabPass
10.1.1语法结构
10.1.2GrabPass Shader
10.1.3测试效果
10.2C#基础语法
10.2.1C#脚本的基本结构
10.2.2Properties
10.2.3C#中的常用函数
10.2.4基于Shader资源创建材质
10.2.5通过脚本往Material中传递变量
10.2.6C#中的数学函数
10.2.7其他功能
10.3PostProcessing
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.1Toggle
11.1.2Enum
11.1.3KeywordEnum
11.1.4在编译指令中定义关键词
11.1.5PowerSlider
11.1.6IntRange
11.2属性的特性和Drawer
11.3装饰性PropertyDrawer
11.3.1SpaceDecorator
11.3.2HeaderDecorator
11.4完整PropertyDrawer示例
第12章Amplify Shader Editor
12.1相同功能的其他插件
12.1.1Shader Forge
12.1.2Shader Graph
12.2ASE的使用流程
12.3Shader属性设置
12.3.1General
12.3.2Blend Mode
12.3.3Stencil Buffer
12.3.4Tessellation
12.3.5Output
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.1Albedo
12.5.2Normal
12.5.3Emission
12.5.4Specular
12.5.5Ambient Occlusion
12.5.6Texture 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.4TriPlanar Mapping效果
13.4.1实现逻辑
13.4.2使用ASE实现效果
13.4.3编写Shader
13.4.4测试Shader效果
13.5MatCap效果
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.3C#脚本
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.3Billboard效果
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.1Shader讲解
14.6.2完整Shader代码
14.6.3C#脚本讲解
14.6.4完整脚本代码
14.6.5测试终效果
14.6.6使用ASE编辑后期处理Shader
写在后
参考文献
本书是一部系统讲解Unity ShaderLab语言与编程方法的入门教程(包含纸质图书、Unity美术资源、Shader源代码)。 本书共分14章,第1、2章,主要为了给读者普及3D数学相关的基础知识以及GPU渲染流水线的基本概念,为本书后面的内容提供基础知识的储备。第3~11章,主要讲解了Shader的语法结构、两种不同的编写方式(Vertex Fragment Shader和Surface Shader)、光照模型、后期处理、自定义材质设置面板。这一部分内容是本书的主要部分,读者朋友们一定要认真阅读。第12章,主要讲解Unity Shader可视化编辑插
Unity ShaderLab新手宝典
全新天津
¥ 44.50
Unity ShaderLab新手宝典
全新保定
¥ 52.51
Unity ShaderLab 新手宝典
全新泰安
¥ 39.16
Unity ShaderLab新手宝典
全新天津
¥ 55.61
Unity ShaderLab 新手宝典
全新广州
¥ 43.00
Unity ShaderLab新手宝典、
全新北京
¥ 55.52
Unity ShaderLab 新手宝典
全新北京
¥ 43.61
Unity ShaderLab新手宝典
全新保定
¥ 52.51
Unity ShaderLab 新手宝典
全新泰安
¥ 41.15
Unity ShaderLab 新手宝典
全新北京
¥ 41.74
— 没有更多了 —
以下为对购买帮助不大的评价