书籍详情
《新书云仓UnityShaderLab新手宝典》[42M]百度网盘|亲测有效|pdf下载
  • 新书云仓UnityShaderLab新手宝典

  • 出版社:御临堂图书专营店
  • 出版时间:2021-03
  • 热度:12639
  • 上架时间:2024-06-30 09:38:03
  • 价格:0.0
书籍下载
书籍预览
免责声明

本站支持尊重有效期内的版权/著作权,所有的资源均来自于互联网网友分享或网盘资源,一旦发现资源涉及侵权,将立即删除。希望所有用户一同监督并反馈问题,如有侵权请联系站长或发送邮件到ebook666@outlook.com,本站将立马改正

内容介绍

基本信息

  • 商品名:正版新书 云仓 Unity ShaderLab 新手宝典978730□571575清华大学
  • ISBN:9787302571575
  • 定价:89
  • 出版社:清华大学出版社
  • 作者:唐福幸

参考信息(以实物为准)

  • 出版时间:2021-03-01
  • 印刷时间:2021-03-01
  • 版次:1
  • 印次:1
  • 包装:平装
  • 开本:16
  • 用纸:胶版纸
  • 页数:342
  • 字数:555000

内容简介

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

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

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

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


前言序言


前言


本书的写作背景

相信很多人在玩游戏的过程中,在体验游戏剧情的同时,也会被游戏中精美的画面所吸引。因此我猜想,肯定会有很多人跟我一样,有一种想要制作一款画质精美的游戏的冲动。然而想要实现精美画质的视觉效果,往往需要编写多种多样的Shader。但对于一些毫无编程经验的人来说,想要入门Unity Shader比较困难。这是因为,一方面国内关于Unity Shader的书少之又少,而目前市面仅有的几本也是针对Unity 5版本编写的,并不完全适用于Unity □019版; 另一方面网上关于Unity Shader的教程,很多都是一上来直接讲代码,很少有真正从基础开始讲解的。于是笔者萌生了一个念头: 写一本面向零基础Unity Shader爱好者的入门指南。

本书的独特之处

本书采用由易到难、层层深入的讲解方法,带领毫无Shader编程基础的读者逐渐掌握这门技术。对于一些理论性的知识和使用方法,本书不会灌入式地硬性讲解,而是会从内在逻辑开始讲起,从而使读者彻底理解。


为了方便读者理解Shader效果实现的内在逻辑,本书插入了大量流程图、汇总表格等。对于一些专有名词或者语法关键词,本书在编写的过程中使用了“中文+英文”的方式,方便读者理解以及后期查找或者阅读其他资料。

笔者一直认为,Shader的学习达到一定程度之后,其实就是在学习数学算法。Shader的程序代码本身并不重要,重要的是里边的逻辑和算法。很多人总是会好奇“这段代码为什么能够实现这样的效果”,相信这是学习Shader的人□想弄清楚的。而涉及逻辑类的数学思想有时候很难用文字表达出来,所以本人在案例讲解部分会借助可视化Shader编辑器“Amplify Shader Editor”来帮助读者理解其中的内在逻辑。

需要提前掌握的知识

作为一本计算机图形专业书籍,建议读者在阅读本书之前掌握如下知识: 

(1) Unity的基本操作,比如导入资源、创建对象、添加组件等。

(□) 平面数学。

(3) 空间几何基础。

(4) 三角函数。

(5) 基础编程知识,比如理解□量、函数、运算操作等。

本书的源文件

为了方便读者编写测试,本书会附赠课程所涉及的所有Shader文件以及项目资源,读者将Package文件导入Unity项目之后,在Assets/ Unity ShaderLab Tutorial路径下即可看到所有的资源。

特别鸣谢

在这里我要特别感谢我的未婚妻,正是在她的鼓励下,我才有了编写本书的动力。记得在正式开始撰写本书之前,当我一直在为后续的出版事宜发愁时,她告诉我: “先迈出□□步,后面自然会有路。”因此我把出版问题全部抛掷脑后,专心写完了这本书。同时,本书从编写到出版的整个过程也让我深刻认识到: 万事开头难,但只要克服恐惧,勇敢地迈出□□步并持之以恒,一切皆会水到渠成。后来,每当我遇到事情犹豫不前的时候,我总会想起这句话: “先迈出□□步,后面自然会有路。”


本书大部分配图是使用Edraw制作而成的,这款软件使得我在配图制作方面节省了大量的时间,因此本人对这款图例制作软件表示郑重的感谢。

本书能够顺利出版,还要感谢清华大学出版社, 在该出版社相关编辑的帮助下,本书得以顺利面世。

□后,本书若有疏漏和不足之处,恳请读者批评指正。

于广州

□0□0年7月



目录


目录




□□章3D数学基础


1.1坐标与坐标系


1.1.1坐标及坐标系的概念


1.1.□3D中的坐标系


1.1.3左右手坐标系


1.□向量


1.□.1向量的几种表示方法


1.□.□向量的计算方法


1.□.3相反向量


1.□.4向量的模


1.□.5标准化向量


1.3向量运算


1.3.1向量的加法运算


1.3.□向量的减法运算


1.3.3向量的缩放


1.3.4向量的点积运算


1.3.5向量的叉积运算


1.3.6向量的运算法则


1.4矩阵


1.4.1矩阵的表示方法


1.4.□方阵和单位矩阵


1.4.3转置矩阵


1.5矩阵运算


1.5.1标量与矩阵相乘


1.5.□矩阵之间的乘法


1.5.3矩阵与向量相乘


1.5.4矩阵的运算法则


1.6使用矩阵进行□换


1.6.1矩阵□换向量的原理


1.6.□旋转矩阵


1.6.3缩放矩阵


1.6.4平移矩阵


1.7矩阵的深入讲解


1.7.1矩阵的行列式


1.7.□余子式和代数余子式


1.7.3通过代数余子式计算行列式


1.7.4逆矩阵


1.7.5正交矩阵


1.7.6逆矩阵的运算法则






第□章渲染流水线与Shader概念


□.1渲染流水线概念


□.□3D图形渲染完整流水线


□.3空间□换


□.3.1模型空间与世界空间


□.3.□摄像机空间


□.3.3裁切空间


□.3.4屏幕空间


□.3.5多个坐标空间存在的意义


□.4现代GPU渲染流水线


□.5Shader概念


□.5.1什么是Shader


□.5.□Shader和材质的关系与区别


第3章ShaderLab语法基础


3.1Shader的组织结构


3.□Shader的名称


3.3Properties


3.3.1数值类属性


3.3.□颜色和向量类属性


3.3.3纹理贴图类属性


3.3.4所有类型属性汇总


3.4SubShader


3.4.1SubShader的标签


3.4.□Pass的渲染状态


3.5Fallback


第4章顶点片段着色器基础


4.1Shader编码工具


4.□创建和使用Shader


4.3Shader的编写方式


4.4CG语法基础


4.4.1编译指令


4.4.□着色器函数


4.4.3语义


4.4.4在CG中调用属性□量


4.4.5结构体


第5章Unity的包含文件


5.1包含文件的使用语法


5.□UnityCG.cginc


5.□.1顶点着色器输入结构体


5.□.□顶点□换函数


5.□.3向量□换函数


5.□.4灯光辅助函数


5.□.5视角向量函数


5.□.6其他辅助函数和宏


5.3UnityShaderVariables.cginc


5.3.1空间□换矩阵


5.3.□时间□量


5.4其他包含文件


5.5使用包含文件简化Shader


第6章Shader中的光照模型


6.1Lambert光照模型


6.1.1Lambert光照模型理论


6.1.□在Shader中获取灯光□量


6.1.3基于Lambert光照模型的Shader


6.□CG标准库函数


6.3HalfLambert光照模型


6.4Phong光照模型


6.4.1Phong光照模型理论


6.4.□在Shader中获取环境光□量


6.4.3基于Phong光照模型的Shader


6.5逐像素光照


6.6BlinnPhong光照模型


6.6.1BlinnPhong光照模型理论


6.6.□BlinnPhong光照模型的Shader


6.7灯光阴影


6.7.1渲染路径


6.7.□Pass标签


6.7.3内置的multi_compile


6.7.4实现阴影效果


第7章透明效果


7.1不透明物体的渲染顺序


7.□透明物体的渲染顺序


7.3混合透明效果


7.3.1混合指令


7.3.□混合系数


7.3.3混合操作


7.3.4混合透明的使用方法


7.3.5混合透明效果


7.3.6半透明物体的双面渲染


7.4透明测试效果


7.4.1透明测试的使用方法


7.4.□透明测试效果


7.4.3透明测试抗锯齿


7.5模板测试


7.5.1模板测试的计算流程


7.5.□模板测试的使用语法


7.5.3比较方法


7.5.4模板操作


7.5.5延迟渲染路径中的模板测试


7.5.6模板测试透明效果


第8章表面着色器的基础概念


8.1为什么不先学习表面着色器


8.□表面着色器的组织结构


8.3编译指令中的可选参数


8.3.1透明效果相关指令


8.3.□阴影和细分相关指令


8.3.3代码生成选项


8.3.4其他选项


8.4表面函数的语法结构


8.4.1表面函数输入结构体


8.4.□表面函数输出结构体


第9章编写表面着色器


9.1□简单的表面着色器


9.□在表面着色器中使用法线贴图


9.3表面着色器中的其他函数


9.3.1顶点修改函数


9.3.□自定义光照函数


9.3.3□终颜色修改函数


9.4曲面细分函数


9.4.1固定数量的曲面细分


9.4.□基于边长的曲面细分


9.4.3视锥剔除曲面细分


9.4.4基于距离的曲面细分


9.4.5Phong曲面细分


9.5透明效果


9.5.1混合透明效果


9.5.□透明测试效果


□□0章Image Effect


10.1GrabPass


10.1.1语法结构


10.1.□GrabPass Shader


10.1.3测试效果


10.□C#基础语法


10.□.1C#脚本的基本结构


10.□.□Properties


10.□.3C#中的常用函数


10.□.4基于Shader资源创建材质


10.□.5通过脚本往Material中传递□量


10.□.6C#中的数学函数


10.□.7其他功能


10.3PostProcessing


10.3.1后期处理的工作流程


10.3.□后期处理Shader


10.3.3后期处理脚本


10.4后期处理堆栈


10.4.1安装Post Processing包


10.4.□设置Layer和Volume


10.4.3编写Shader


10.4.4编写C#脚本


□□1章自定义材质面板


11.1不同类型的DrawerClass


11.1.1Toggle


11.1.□Enum


11.1.3KeywordEnum


11.1.4在编译指令中定义关键词


11.1.5PowerSlider


11.1.6IntRange


11.□属性的特性和Drawer


11.3装饰性PropertyDrawer


11.3.1SpaceDecorator


11.3.□HeaderDecorator


11.4完整PropertyDrawer示例


□□□章Amplify Shader Editor


1□.1相同功能的其他插件


1□.1.1Shader Forge


1□.1.□Shader Graph


1□.□ASE的使用流程


1□.3Shader属性设置


1□.3.1General


1□.3.□Blend Mode


1□.3.3Stencil Buffer


1□.3.4Tessellation


1□.3.5Output


1□.4常用节点


1□.4.1常数和属性类节点


1□.4.□纹理和坐标类节点


1□.4.3数□□算类节点


1□.4.4向量运算相关节点


1□.4.5图像处理相关节点


1□.4.6摄像机和屏幕相关节点


1□.4.7顶点数据类节点


1□.4.8表面数据类节点


1□.4.9时间节点


1□.5使用ASE创建标准Shader


1□.5.1Albedo


1□.5.□Normal


1□.5.3Emission


1□.5.4Specular


1□.5.5Ambient Occlusion


1□.5.6Texture Coordinate


1□.5.7属性排序及□终效果


□□3章初级案例


13.1流光效果


13.1.1实现逻辑


13.1.□使用ASE实现效果


13.1.3测试Shader效果


13.1.4编写Shader


13.1.5使用扩展


13.□描边效果


13.□.1实现逻辑


13.□.□编写Shader


13.□.3效果测试


13.3遮挡半透效果


13.3.1实现逻辑


13.3.□编写Shader


13.3.3效果测试


13.4TriPlanar Mapping效果


13.4.1实现逻辑


13.4.□使用ASE实现效果


13.4.3编写Shader


13.4.4测试Shader效果


13.5MatCap效果


13.5.1实现逻辑


13.5.□使用ASE实现效果


13.5.3编写Shader


13.5.4测试Shader效果


13.6物体切割效果


13.6.1实现逻辑


13.6.□使用ASE实现效果


13.6.3C#脚本


13.6.4测试效果


13.6.5编写Shader


□□4章进阶案例


14.1消融效果


14.1.1实现逻辑


14.1.□资源准备


14.1.3使用ASE实现效果


14.1.4使用扩展


14.1.5编写Shader


14.□动态液体效果


14.□.1实现逻辑


14.□.□模型准备


14.□.3使用ASE实现效果


14.□.4测试Shader


14.□.5编写Shader


14.3Billboard效果


14.3.1实现逻辑


14.3.□使用ASE实现雪花效果


14.3.3测试Shader


14.3.4编写Shader


14.4序列帧动画


14.4.1实现逻辑


14.4.□使用ASE实现效果


14.4.3测试Shader


14.4.4编写Shader


14.5卡通风格效果


14.5.1资源准备


14.5.□使用ASE实现效果


14.5.3编写Shader


14.6夜视仪后期处理


14.6.1Shader讲解


14.6.□完整Shader代码


14.6.3C#脚本讲解


14.6.4完整脚本代码


14.6.5测试□终效果


14.6.6使用ASE编辑后期处理Shader


写在□后


参考文献


作者简介

唐福幸  资深3D美术师,从事3D行业已有六年,先后在多家公司担任3D美术主管、3D技术美术师,擅长一切从零开始:开创团队、制定流程、人员培训、效果把控。乐于钻研技术,并与人沟通分享。能够熟练使用Maya、ZBrush、Substance Painter、Substance Designer、Unity、Unreal等30余款3D专业软件,目前在有车以后公司担任“高级技术美术师”。