勘误表

勘误表 尽管我们非常注意本书内容的准确性,但还是会有不小心出错的地方。如果您在我们出版的书中(不限本书)找到了错误,有可能是文字错误或者代码错误,我们非常欢迎您将这些错误报告给我们。如此善举,既解他人之惑,亦可助改善此书。如果您发现任何勘误,请通过链接https://www.packtpub.com/support/errata (原书写的链接失效了)向我们报告。当您的勘误确认后,您提交的勘误将会被接受并且勘误会上传至我们的网站和任何已存在的勘误名单中。 如果您想看看之前的勘误提交,可以访问https://www.packtpub.com/support/code-downloads(原书的网址失效了,现在是这个),然后输入书名搜索,你想要的信息会出现在下面的勘误部分。

August 13, 2020 · 1 min · 4 words · Link

客户支持

客户支持 很高心您能拥有此书,为了让您物有所值,我们还为你准备了很多东西(很搞不懂这也要搞一个章节出来,就一句话)。

August 13, 2020 · 1 min · 2 words · Link

本书一些彩图的下载

本书一些彩图的下载 这本书中的彩图,比如说屏幕截图/示意图我们都把他放在了一个PDF文件中。希望这些图片可以让你更好的理解屏幕输出图像的变化。 你可以通过下面的链接下载这个PDF文件https://www.packtpub.com/sites/default/files/downloads/Unity5xShadersAndEffectsCookboo

August 13, 2020 · 1 min · 3 words · Link

本书有问题请联系

本书有问题请联系 如果您对本书有任何层面的问题,您可以通过邮箱questions@packtpub.com联系我们,我们会尽己所能改善这些问题。

August 13, 2020 · 1 min · 2 words · Link

本书的一些文体要求

本书的一些文体说明 在书中你可以发现很多种不同的文本样式用来表示不同的信息内容。这里列举几个来解释一下。(需要说明一下的是,我在翻译的过程中,代码的字体样式可能会跟书本上不一样,我主要是用markdown的代码块来表示。然后它的粗体,比如强调,那我就用markdown中的强调标签来表示,说声抱歉了,希望大家能看的懂) 代码块,数据库表名,文件夹名字 ,文件名字,文件扩展名,路径名称,虚拟URL(觉得这个翻译不准确),用户输入,推特账号等会按照如下表示:“请输入下面的代码到你的着色器属性块( Properties )中” void surf (Input IN, inout SurfaceOutput o) { float4 c; c = pow((_EmissiveColor + _AmbientColor), _MySliderValue); o.Albedo = c.rgb; o.Alpha = c.a; } 当我们想提醒你代码块中的特别部分,那么对应的代码行或者语句会用粗体标记,比如那个void:(代码块中我不知道怎么加粗,下面这个就不用代码块了) void surf (Input IN, inout SurfaceOutputStandard o) { ​ fixed4 c = pow((_Color + _AmbientColor), _MySliderValue); ​ o.Albedo = c.rgb; ​ o.Metallic = _Metallic; ​ o.Smoothness = _Glossiness; ​ o.Alpha = c.a; } 新的术语 和 非常重要的词语 都应该用粗体表示.像出现再电脑屏幕中的菜单和弹窗中的文本,也会用粗体加以强调。比如:“在Unity编辑器的菜单栏中的“ 项目(Project) ,在 资产(Assets) 文件夹上右键单击和在菜单中选择 创建(Create)|文件夹(Folder) 。” (中文后面括号里的是英文版的编辑器中菜单项的名字) 注意(Note) 警告或者很重要的注意会像这样,有个 注意(Note) 提醒你。 提示(Tip) 提示和小技巧会像这样,有个 提示(Tip) 提示你。

August 13, 2020 · 1 min · 82 words · Link

盗版声明

盗版声明 在网上,所有媒体的版权资料盗版问题从未停歇。 在 Packt 网,我们非常重视保护我们的版权和许可证。如果你在英特网上看到任何来自我们工作成果的 非法拷贝,不管来自那里,还请你提供给我们地址或者网址,这样我们可以挽回我们的损失。还请通过copyright@packtpub.com邮箱联系我们。 我们非常感激您帮助我们保护作者和保护我们继续给你带来有价值的内容。

August 13, 2020 · 1 min · 7 words · Link

示例代码下载

示例代码下载 通过这个网站http://www.packtpub.com,你可以用自己的账号下载本书的实例代码(其实我本人是建议自己手动敲一遍,我试了一下,代码是可以直接在这个网站下载的,就算你没有购买这本书也是可以的。但是需要注册一个账号才行,然后搜索到这本书,这本书的页面下面就有下载代码的链接)。如果你在别的地方购买了这本书,那么你可以浏览网站 http://www.packtpub.com/support](https://www.packtpub.com/support)注册一个账号,然后在该页面直接通过书名搜索,也能找到这些文件的下载链接。 代码文件可以通过下面的步骤获得: 通过邮箱和账号密码在我们的网站上登陆或者注册。 把网页拉到最下面,点击 支持主页(Support Home)(这本书出了很久了,网页早就改版了,这是我实际打开网页的操作步骤)。 然后点击该页面左边的 代码下载&勘误表(Code Downloads & Errata) 。 然后在 搜索(Search) 框中输入你的书名(不用输入完整的书名,支持模糊搜索)。 选择那本你想要下载代码的书。 然后在下面的下拉菜单中选择你是从哪儿购买本书的(不要紧,随便选一个,然后下拉菜单的下面就会有一个下载链接)。 然后点击 代码下载(需要注册,链接早就生成了,为了方便大家,我贴出链接,点击就可以下载了,不清楚是否是永久链接) 下载好后,请自行解压,然后就可以获得本书的代码了。

August 13, 2020 · 1 min · 22 words · Link

第一章.创建你的第一个着色器

第一章 创建你的第一个着色器 在这一章我们包含了一些在当今 游戏开发着色器管线 中更通用的漫反射技术基础。在这一章我们将会学习下面的知识点: 创建一个基础的标准着色器 从Unity4迁移旧着色器至Unity5 为着色器添加属性 在表面着色器中使用属性 介绍 让我在脑海中想象一个完全由白色绘制立方体。尽管立方体的每一个面的颜色都是相同的,但是由于不同方向的光线照射和我们看这个立方体的角度的不同,我们总能发现立方体不同的白色阴影。这种层级的逼真场景就是通过3D图形学中的着色器实现的,它是一种模拟光的作用原理的特别的程序。一个木质的立方体和一个金属的立方体也许可以是同一种3d模型,之所以让他们看起来一个是木质的,一个是金属的,就是因为它们使用了不同的着色器的缘故。我们循序渐进,第一章将会向你介绍如何在Unity中进行着色器编码。如果你从来没有编写着色器的经验,那么在这一章,你将会了解着色器是什么,他们如何工作和如何自定义着色器。 接着在这一章的结尾,你将会学习如何构建拥有基础操作的基础着色器。有了这些知识后,那么你将可以创建任何的表面着色器。 创建一个基本的标准着色器 每一个Unity游戏开发者应该都对 组件(components) 这个概念非常熟悉。游戏中的对象都有很多的组件,这些组件决定了游戏中的对象看起来是什么样子和会有什么样的行为。然而 游戏脚本(scripts ) 定义的是游戏对象会有怎样的行为,渲染器(renderers ) 决定游戏对象如何出现在屏幕中。 对于我们想要看到游戏对象类型,Unity本身提供了一些渲染器。每一个3D模型通常都有一个网格渲染器。一个游戏对象应该只能有一个渲染器,但是一个渲染器它可以包含多个 材质(materials) 。 每个材质封装了一个着色器–3D图形的最后一环。这些组件的关系可以用如下的示意图表示: 理解这些组件之间的不同之处对于理解着色器的工作原理是很有必要的 始前准备 开始学习这个知识点之前,你需要打开你的Unity5并且创建一个新的项目。本书的内容讲解都会在这个项目中开展,随着学习的深入你之后自己创建的着色器都可以放在这。这一步完成之后—-欢迎来到着色器实时编程的精彩世界。 操作步骤 在创建我们的第一个着色器前,让我们为实验着色器创建一个简单游戏场景。首先我们导航到Unity的菜单栏,然后选择 游戏对象|创建空对象 。然后在Unity编辑器的 层级面板(Hierarchy) 选中刚刚创建的空对象,在上面创建一个平面作为地面,再创建几个球体用来应用我们的着色器,然后在场景里面创建平行光源。当场景弄好后,我们接下来就按步骤开始着色器的编写: 在编辑器的 项目(Project) 窗口中,直接右键选择 创建(Create)|文件夹(Folder) 。【这里的文件夹名字我就直接用英文了,大家在自己开发的过程中也尽量用有意义的英文文件夹吧】 注意 如果你导入了本书提供的项目文件(就是你从网站上下载的代码,他是一个unitypackage包,导入之后这个文件自动就有了),你可以直接跳至步骤4。 选择该文件夹,右键然后选择 重命名(Rename) ,把这个文件夹命名成 Shaders 。或者你也可以选中该文件夹,然后按 F2 ,重命名为 Shaders 。 用上面同样的方法创建一个 Materials 的文件夹,用来放材质文件的。 右键 Shaders 文件夹,然后在出的窗口中选择 创建(Create)|着色器(Shader)|标准表面着色器(Standard Surface Shader)(这里注意跟原文不一样,创建一个着色器要三步,书中只有两部)。接着我们创建一个材质,右键 Materials 文件夹,然后在弹窗中选择 创建(Create)|材质(Material) 。 把刚刚创建的着色器和材质都命名成 StandardDiffuse 。【各位,文件名也用英文呀,因为怕Unity对中文的支持不好】 然后用Visual Studio 2015或者Visual Studio Code打开 StandardDiffuse 这个着色器【这里我不建议用MonoDevelop这个编辑器,原文是用这个,不好用,强烈建议用各位用Visual Studio Code打开,这个编辑器很好用,一定要去试试】 ...

August 13, 2020 · 2 min · 273 words · Link

读者反馈

读者反馈 非常欢迎来自各位读者的反馈。这能让我们知道你们是否喜欢这本书。你们给与的重要反馈可以让我们写出更适合且对你们更有帮助的内容。 通常最简单的反馈方式是通过feedback@packtpub.com邮箱给我们发邮件,然后在反馈邮件的标题中告诉我们书标题。 如果在本书中有你擅长领域的话题想跟我们讨论,或者你愿意把你专长领域的知识贡献给本书,也可以通过这个网址 www.packtpub.com/authors的指引进行操作

August 13, 2020 · 1 min · 5 words · Link

学习的过程中你需要准备的

学习的过程中你需要准备的 下面列举了在学习本书知识的过程中必须的工具软件和可选的工具软件: Unity5引擎 一款3D建模软件,比如Maya,3DMax,或Blender (可选l) 一款2D图片编辑软件,比如PS或者Gimp (可选)

August 10, 2020 · 1 min · 7 words · Link