unity脚本手册什么是下降指令

QQ群:①群 ②群 ③群 ④群 ⑤群 ⑥群
扫一扫,访问微社区
后使用快捷导航没有帐号?
签到成功!您今天第{todayrank}个签到,签到排名竞争激烈,记得每天都来签到哦!已连续签到:{constant}天,累计签到:{days}天
续上文,Unity3D面试ABC
热度 493362
|个人分类:
最先执行的方法是:1、(激活时的初始化代码)Awake,2、Start、3、Update【FixUpdate、LateUpdate】、4、(渲染模块)OnGUI、5、再向后,就是卸载模块(TearDown),这里主要有两个方法OnDisable与OnDestroy&高频问答的问题:1.什么是渲染管道?是指在显示器上为了显示出图像而经过的一系列必要操作。渲染管道中的很多步骤,都要将几何物体从一个坐标系中变换到另一个坐标系中去。主要步骤有:本地坐标-&视图坐标-&背面裁剪-&光照-&裁剪-&投影-&视图变换-&光栅化。2.如何优化内存?有很多种方式,例如A、压缩自带类库;B、将暂时不用的以后还需要使用的物体隐藏起来而不是直接Destroy掉;C、释放AssetBundle占用的资源;AssetBundle资源包D、降低模型的片面数,降低模型的骨骼数量,降低贴图的大小;E、使用光照贴图,使用多层次细节(LOD),使用着色器(Shader),使用预设(Prefab)。3.动态加载资源的方式?(有时候也问区别,具体请百度)1.通过Resources模块,调用它的load函数:可以直接load并返回某个类型的Object,前提是要把这个资源放在Resource命名的文件夹下,Unity不关有没有场景引用,都会将其全部打入到安装包中。Resources.Load();2.通过bundle的形式:即将资源打成&asset&bundle&放在服务器或本地磁盘,然后使用WWW模块get&下来,然后从这个bundle中load某个object。AssetBundle3.通过AssetDatabase.loadasset&:这种方式只在editor范围内有效,游戏运行时没有这个函数,它通常是在开发中调试用的【AssetDatabase&资源数据库】区别:Resources的方式需要把所有资源全部打入安装包,这对游戏的分包发布(微端)和版本升级(patch)是不利的,所以unity推荐的方式是不用它,都用bundle的方式替代,把资源达成几个小的bundle,用哪个就load哪个,这样还能分包发布和patch,但是在开发过程中,不可能没更新一个资源就打一次bundle,所以editor环境下可以使用AssetDatabase来模拟,这通常需要我们封装一个dynamic&resource的loader模块,在不同的环境下做不同实现。动态资源的存放&&有时我需要存放一些自己的文件在磁盘上,例如我想把几个bundle放在初始的安装里,&unity有一个streaming&asset的概念,用于提供存储接口的访问。我们需要在编辑器建立一个StreamingAssets名字的文件夹,把需要我们放在客户磁盘上的动态文件放在这个文件夹下面,这样安装后,这些文件会放在用户磁盘的指定位置,这个位置可以通过Application.streamingAssetsPath来得到。&4.什么是协同程序?在主线程运行时同时开启另一段逻辑处理,来协助当前程序的执行。换句话说,开启协程就是开启一个线程。可以用来控制运动、序列以及对象的行为。5.你用过哪些插件?一&界面制作&推荐:NGUI二&2D游戏制作&推荐:2D&Toolkit&&&//['tu:lk?t]&工具包,工具箱三&可视化编程&推荐:PlayMaker四&插值插件&推荐:iTween,HOTween五&路径搜寻&推荐:Simple&Path六&美术及动画制作&推荐:RageSpline,Smooth&Moves七&画面增强&&&&推荐:Bitmap2Material,Strumpy&Shader&Editor八&摄像机管理&&推荐:Security&Camera九&资源包&&推荐:Nature&Pack&十、造路插件EasyRoads3D6.使用实现2d游戏,有几种方式?1.使用本身的GUI;2.把摄像机的Projection(投影)值调为Orthographic(正交投影),不考虑z轴;//[??:θ?'ɡraef?k]&adj.&正字法的,拼字正确的;正射3.使用2d插件,如:2DToolKit;&7.Unity3d中的碰撞器和触发器的区别?触发器只是碰撞器身上的一个属性,碰撞器是触发器的载体。碰撞器有碰撞的效果,IsTrigger=false,可以调用OnCollisionEnter/Stay/Exit函数;{[k?'l??n]n.&碰撞;冲突;(意见,看法)的抵触;(政党等的)倾轧}触发器没有碰撞效果,IsTrigger=true,可以调用OnTriggerEnter/Stay/Exit函数。a.如果不想让碰撞检测影响物体移动但是又想检测到碰撞这时用到触发器(Trigger)b.触发器用来检测一个物件是否经过空间中的某个区域&8.物体发生碰撞的必要条件两个物体都必须带有碰撞器(Collider),其中一个物体还必须带有Rigidbody刚体。&8.1&.CharacterController和Rigidbody的区别?CharacterController自带胶囊碰撞器,里面包含有刚体的属性;Rigidbody就是刚体,使物体带有刚体的特征。[CharacterController:角色控制器]Rigidbody具有完全真实物理的特性,而CharacterController可以说是受限的Rigidbody,具有一定的物理效果但不是完全真实的&9.在物体发生碰撞的整个过程中,有几个阶段,分别列出对应的函数三个阶段1.OnCollisionEnter(进入碰撞)&2.OnCollisionStay&(逗留碰撞)&3.OnCollisionExit(当退出碰撞)&&10.Unity3d的物理引擎中,有几种施加力的方式,分别描述出来rigidbody.AddForce/AddForceAtPosition,都在rigidbody系列函数中。&11.什么叫做链条关节?Hinge&Joint,可以模拟两个物体间用一根链条连接在一起的情况,能保持两个物体在一个固定距离内部相互移动而不产生作用力,但是达到固定距离后就会产生拉力。{&[h?nd?]&n.&铰链,折叶;关键,转折点;枢要,中枢}12.物体自身旋转使用的函数?Transform.Rotate()&13.物体围绕某点旋转使用的函数?Transform.RotateAround()&14.Unity3d提供了一个用于保存和读取数据的类(PlayerPrefs),请列出保存和读取整形数据的函数PlayerPrefs.SetInt() PlayerPrefs.GetInt()&15.Unity3d提供了几种光源类型,分别是哪几种?四种。平行光:Directional&Light 点光源:Point&Light聚光灯:Spot&Light 区域光源:Area&Light16.Unity3d脚本从唤醒到销毁有着一套比较完整的生命周期,请列出系统自带的几个重要的方法。Awake—&Start—&Update—&FixedUpdate—&LateUpdate—&OnGUI—&Reset—&OnDisable—&OnDestroy&17.物理更新一般放在哪个系统函数里?FixedUpdate,每固定帧绘制时执行一次,和Update不同的是FixedUpdate是渲染帧执行,如果你的渲染效率低下的时候FixedUpdate调用次数就会跟着下降。FixedUpdate比较适用于物理引擎的计算,因为是跟每帧渲染有关。Update就比较适合做控制。&18.移动摄像机的动作放在哪个系统函数中,为什么放在这个函数中?LateUpdate,在每帧执行完毕调用,它是在所有Update结束后才调,比较适合用于命令脚本的执行。官网上例子是摄像机的跟随,都是在所有Update操作完才跟进摄像机,不然就有可能出现摄像机已经推进了,但是视角里还未有角色的空帧出现。&19.当游戏中需要频繁创建一个物体时,我们需要怎样做能够节省内存?使用预制物体对象Prefab,然后复制创建。&20.在场景中放置多个Camera并同时处于活动状态会发生什么?游戏界面可以看到很多摄像机的混合。&21.请描述Prefab的作用,并描述如何在移动设备的环境下恰当的使用它?Prefab在实例化的时候用到,主要用于经常会用到的物体,属性方便修改。如何销毁一个UnityEngine.Object及其子类?使用Destroy()方法;22.请简述Unity3d下如何安全的在不同工程间迁移asset数据,请列举出三种方法?1.可以把assets目录和Library目录一起迁移2.导出包3.用Unity带的assets&Server功能&23.请描述游戏动画有哪几种,以及其原理?主要有关节动画、骨骼动画、单一网格模型动画(关键帧动画)。a.关节动画:把角色分成若干独立部分,一个部分对应一个网格模型,部分的动画连接成一&个整体的动画,角色比较灵活,Quake2中使用这种动画;b.骨骼动画,广泛应用的动画方式,集成了以上两个方式的优点,骨骼按角色特点组成一定的层次结构,有关节相连,可做相对运动,皮肤作为单一网格蒙在骨骼之外,决定角色的外观;c.单一网格模型动画由一个完整的网格模型构成,在动画序列的关键帧里记录各个顶点的原位置及其改变量,然后插值运算实现动画效果,角色动画较真实。&24.请描述为什么Unity3d中会发生在组件上出现数据丢失的情况一般是组件上绑定的物体对象被删除了&25.alpha&blend工作原理Alpha&Blend&实现透明效果,不过只能针对某块区域进行alpha操作,透明度可设。{['aelf?]&透明(度);&[blend]&混合;把…掺在一起}26.写出光照计算中的diffuse的计算公式计算公式为:&Idiffuse&=&Dintensity*Dcolor*N.L&;&(Dintensity表示漫反射强度,&Dcolor&表示漫反射光颜色,&N&为该点的法向量,&L&为光源向量&其中N与L点乘,如果结果小于等于0,则漫反射为0。){[d?'fju:z]&vi.&传播;四散|intensity[?n'tens?t?]&n.&强烈;(感情的)强烈程度;强度;烈度}&27.Lod是什么,优缺点是什么?LOD(Level&of&detail)多层次细节,是最常用的游戏优化技术。它按照模型的位置和重要程度决定物体渲染的资源分配,降低非重要物体的面数和细节度,从而获得高效率的渲染运算。&28.两种阴影判断的方法、工作原理。A.阴影由两部分组成:本影与半影a.本影:景物表面上那些没有被光源直接照射的区域(全黑的轮廓分明的区域)b.半影:景物表面上那些被某些特定光源直接照射但并非被所有特定光源直接照射的区域(半明半暗区域)求阴影区域的方法:做两次消隐过程一次对每个光源进行消隐,求出对于光源而言不可见的区域L;一次对视点的位置进行消隐,求出对于视点而言可见的面S;shadow&area=&L&∩&SB.阴影分为两种:自身阴影和投射阴影自身阴影:因物体自身的遮挡而使光线照射不到它上面的某些可见面工作原理:利用背面剔除的方法求出,即假设视点在点光源的位置。投射阴影:因不透明物体遮挡光线使得场景中位于该物体后面的物体或区域受不到光照照射而形成的阴影工作原理:从光源处向物体的所有可见面投射光线,将这些面投影到场景中得到投影面,再将这些投影面与场景中的其他平面求交得出阴影多边形,保存这些阴影多边形信息,然后再按视点位置对场景进行相应处理得到所要求的视图(利用空间换时间,每次只需依据视点位置进行一次阴影计算即可,省去了一次消隐过程)若是动态光源此方法就无效了。29.Vertex&Shader是什么,怎么计算?顶点着色器顶点着色器是一段执行在GPU上的程序,用来取代fixed&pipeline中的transformation和lighting,Vertex&Shader主要操作顶点。Vertex&Shader对输入顶点完成了从local&space到homogeneous&space(齐次空间)的变换过程,homogeneous&space即projection&space的下一个space。在这其间共有world&transformation,&view&transformation和projection&transformation及lighting几个过程。&30.MipMap是什么,作用?MipMapping:在三维计算机图形的贴图渲染中有常用的技术,为加快渲染进度和减少图像锯齿,贴图被处理成由一系列被预先计算和优化过的图片组成的文件,这样的贴图被称为MipMap。&31.机试:二选一1.用代码实现第三角色控制器2.实现吊机吊物体的功能【吊机吊物体需要节点挂接和坐标系转换】&32.反向旋转动画的方法是什么?【反转动画,讲动画的速度调到-1,碰撞时,被碰撞物体与碰撞物体有collider组件,碰撞物体有刚体组件,或角色碰撞得包含角色组件&OR&改变animation.speed】&33.碰撞检测需要物体具备什么属性?能检测碰撞发生的方式有两种,一种是利用碰撞器,另一种则是利用触发器【Physics.OverlapSphere相交球检测碰撞,碰撞检测需要包围盒】&34.获取、增加、删除组件的命令分别是什么?获取:GetComponent&增加:AddComponent&&删除:Destroy&35.Animation.CrossFade命令作用是:(C)&&{Fadevi.&褪去,失去光泽;}A.动画放大 B.动画转换 C.动画的淡入为其他动画&36.Application.loadLevel命令为:(A)A加载关卡 B.异步加载关卡 C.加载动作&37.调试记录到控制台的命令是什么?Debug.Log();&39.编辑器类存放路径是什么?工程目录下的Assets/Editor文件夹下。&40.使用原生GUI创建一个可以拖动的窗口命令是什么?GUI.DragWindow();&41.localPosition与Position的使用区别?localPosition:自身位置,相对于父级的变换的位置。Position:在世界坐标transform的位置&意义连线Mathf.Round
插值Mathf.Clamp
四舍五入Mathf.Lerp
限制&42.写一个计时器工具,从整点开始计时,格式为:00:00:00&43.写出Animation的五个方法AddClip&添加剪辑、Blend&混合、Play&播放、Stop&停止、Sample&采样&44.怎么拿到一个对象上脚本的方法GameObject.GetComponent&&();&上机题:用鼠标实现在场景中拖动物体,用鼠标滚轮实现缩放(用一个Cube即可)。&45.请简述向量的点乘,向量的叉乘以及向量归一化的几何意义?点乘的几何意义是:计算两个向量之间的夹角,以及在某一方向上的投影;叉乘的几何意义是:创建垂直于平面,三角形,或者多边形的向量;&&46..Unity3D是否支持写成多线程?如果支持的话要注意什么?支持:如果同时你要处理很多事情或者与Unity的对象互动小可以用thread,否则使用coroutine.{&[k?ru:'ti:n]&n.&协同程序}注意:C#中有lock这个关键字,以确保只有一个线程可以在特定时间内访问特定的对象&&47.Unity3D中的协程(Coroutine)和C#线程之间的区别是什么?Unity3d没有多线程的概念,不过unity也给我们提供了StartCoroutine(协同程序)和LoadLevelAsync(异步加载关卡)后台加载场景的方法。&StartCoroutine为什么叫协同程序呢,所谓协同,就是当你在StartCoroutine的函数体里处理一段代码时,利用yield语句等待执行结果,这期间不影响主程序的继续执行,可以协同工作。而LoadLevelAsync则允许你在后台加载新资源和场景,所以再利用协同,你就可以前台用loading条或动画提示玩家游戏未卡死,同时后台协同处理加载的事宜asynchronous[e?'s??kr?n?s].synchronous同步48.请简述四元数的作用以及四元数相对于欧拉角的优点A.四元数一般定义如下:q=w+xi+yj+zk其中&w,x,y,z是实数。同时,有:&i*i=-1&&&&j*j=-1&&&&k*k=-1B.四元数也可以表示为:&q=[w,v]有多种方式可表示旋转,如&axis/angle、欧拉角(Euler&angles)、矩阵(matrix)、四元组等。&相对于其它方法,四元组有其本身的优点:a.四元数不会有欧拉角存在的&gimbal&lock&问题[万向节死锁]b.四元数由4个数组成,旋转矩阵需要9个数c.两个四元数之间更容易插值d.四元数、矩阵在多次运算后会积攒误差,需要分别对其做规范化(normalize)和正交化 (orthogonalize),对四元数规范化更容易e.与旋转矩阵类似,两个四元组相乘可表示两次旋转49.请简述OnBecameVisible及OnBecameInvisible的发生时机,以及他们执行的意义?当renderer(渲染器)在任何相机上都不可见时调用:OnBecameInvisible&当renderer(渲染器)在任何相机上可见时调用:OnBecameVisible50.动画层(Animation&Layers)的作用是什么?动画层作为一个具有层级动画编辑概念的工具,可以用来制作和处理任何类型的动画51.52.请说出4种面向对象的设计原则,并分别简述它们的含义。1)&单一职责原则&(The&Single&Responsiblity&Principle,简称SRP):一个类,最好只做一件事,只有一个引起它的变化.2)&开放-封闭原则&(The&Open-Close&Principle,简称OCP):对于扩展是开放的,对于更改是封闭的3)&Liskov&替换原则(The&Liskov&Substitution&Principle,简称LSP):子类必须能够替换其基类4)&依赖倒置原则(The&Dependency&Inversion&Pricinple,简称DIP):依赖于抽象5)&接口隔离原则&(The&Interface&Segregation&Principle,简称ISP):使用多个小的专门的接口,而不要使用一个大的总接口。53.Material和Physic&Material区别?PhysicMaterial&物理材质:物理材质描述,如何处理物体碰撞(摩擦,弹性)。Material材质(材质类)为了获得一个对象使用的材质,可以使用&Renderer.materia属性:54.法线贴图&、CG动画A.法线贴图:是在原物体的凹凸表面的每个点上均作法线,通过RGB颜色通道来标记法线的方向,你可以把它理解成与原凹凸表面平行的另一个不同的表面,但实际上它又只是一个光滑的平面。&B.CG动画:原为Computer&Graphics的英文缩写。随着以计算机为主要工具进行视觉设计和生产的一系列相关产业的形成,国际上习惯将利用计算机技术进行视觉设计和生产的领域通称为CG。它既包括技术也包括艺术,几乎囊括了当今电脑时代中所有的视觉艺术创作活动,如平面印刷品的设计、网页设计、三维动画、影视特效、多媒体技术、以计算机辅助设计为主的建筑设计及工业造型设计等。NGUI(NUGUI1、NGUI2)55、NGUI Button怎样接受用户点击并调用函数,具体方法名称是什么a、直接监听事件把下面脚本直接绑定在按钮上,当按钮点击时就可以监听到,这种方法不太好很不灵活。[code]csharpcode:void OnClick()
  Debug.Log("Button is Click!!!");
b、SendMessage选择Button-Component-NGUI-Interaction-Button Message//[??nt?r'aek?n]n. 一起活动;合作;互相影响;互动c、UIListener(推荐)选择Button-Component-NGUI-Internal-Event Listener调用方法:[code]csharpcode:using UnityE
using System.C
public class BtnNUGUI : MonoBehaviour {
void Awake()
GameObject button = GameObject.Find("UI Root (2D)/Camera/Anchor/Panel/Button");
UIEventListener.Get(button).onClick = ButtonC
void ButtonClick(GameObject button)
Debug.Log("NGUI button name :"+button.name);
// Use this for initialization
void Start () {
// Update is called once per frame
void Update () {
} &56、请描述游戏动画有哪几种,以及其原理。  主要有关节动画、单一网格模型动画(关键帧动画)、骨骼动画。 a、关节动画把角色分成若干独立部分,一个部分对应一个网格模型,部分的动画连接成一个整体的动画,角色比较灵活Quake2([kwe?k]vi.发抖,颤抖;)中使用了这种动画;b、 单一网络模型动画由一个完整的网格模型构成,在动画序列的关键帧里记录各个顶点的原位置及其改变量,然后插值运算实现动画效果,角色动画较真实。 c、骨骼动画,广泛应用的动画方式,集成了以上两个方式的优点,骨骼按角色特点组成一定的层次结构,由关节相连,可做相对运动,皮肤作为单一网格蒙在骨骼之外,决定角色的外观。皮肤网格每一个顶点都会受到骨骼的影响,从而实现完美的动画57、下面哪种做法可以打开Unity的Asset&StoreWindows&-&&Asset&Store58、Mecanim系统中,Body&Mask的作用是?  指定身体的某一部分是否参与渲染59、以下哪种操作步骤可以打开Unity编辑器的Lightmapping视图?  Windows&--&&Lightmapping60、关于光照贴图  A:使用光照贴图比使用实时光源渲染要快&B:可以降低游戏内存消耗 C、多个物体可以使用同一张光照贴图61、关于Vector3的API,以下说法正确的是?  Vector3.forward与Vector3(0,0,1)是一样的意思; 62、&以下哪个函数在游戏进入新场景后会被马上调用?  MonoBehaviour.OnLevelWasLoaded63、&什么是导航网格(&NavMesh)?  一种用于实现自动寻路的网格64、什么是局部坐标,什么是世界坐标?  世界坐标是不会变的,一直以世界坐标轴的XYZ为标准。局部坐标其实就是自身的坐标,会随着物体的旋转而变化的。65、itween插件的作用是什么,itween作用于世界坐标还是局部坐标,请列举出3个其常用方法?  iTween是一个动画库,作者创建它的目的就是最小的投入实现最大的产出。让你做开发更轻松,用它可以轻松实现各种动画,晃动,旋转,移动,褪色,上色,控制音频等等“  方法:a、MoveTo &物体移动 ;b、ColorTo:随着时间改变对象的颜色组; c、LookTo:随时间旋转物体让其脸部朝向所提供的Vector3或Transform位置66、请简述NGUI中Panel和Anchor的作用  Anchor包含UIAnchor脚本。UIAnchor的功能是把对象锚定在屏幕的边缘(左上,左中,左下,上,中,下,右上,右中,右下),或缩放物体使其匹配屏幕的尺寸  Panel对象有UIPanel脚本,UIPanel是一个容器,它将包含所有UI小部件,并负责将所包含的部件组合优化,以减少绘制命令的调用。67、Unity摄像机有几种工作方式,分别是什么?&68、LayerMask.NameToLayer()这个方法有什么作用?  LayerMask的使用是按位操作的,LayerMask.NameToLayer("Players") 返回该Layer的编号。&69、请描述MeshRender中material和shader的区别?  Shader(着色器)实际上就是一小段程序,它负责将输入的Mesh(网格)以指定的方式和输入的贴图或者颜色等组合作用,然后输出。绘图单元可以依据这个输出来将图像绘制到屏幕上。输入的贴图或者颜色等,加上对应的Shader,以及对Shader的特定的参数设置,将这些内容(Shader及输入参数)打包存储在一起,得到的就是一个Material(材质)  Shader大体上可以分为两类:表面着色器(Surface Shader) 、片段着色器(Fragment Shader)&70、什么是矢量图矢量图:计算机中显示的图形一般可以分为两大类——矢量图和位图。矢量图使用直线和曲线来描述图形,这些图形的元素是一些点、线、矩形、多边形、圆和弧线等等,它们都是通过数学公式计算获得的。例如一幅花的矢量图形实际上是由线段形成外框轮廓,由外框的颜色以及外框所封闭的颜色决定花显示出的颜色。由于矢量图形可通过公式计算获得,所以矢量图形文件体积一般较小。矢量图形最大的优点是无论放大、缩小或旋转等不会失真;最大的缺点是难以表现色彩层次丰富的逼真图像效果。&71、Unity 连接数据库  需要得到Mono.Data.Sqlite.dll 文件与System.Data.dll文件72、四元组是什么?  所谓四元数,就是把4个实数组合起来的东西。4个元素中,一个是实部,其余3个是虚部。------------------------------------------------------------------------------------------【转】
刚表态过的朋友 ()
作者的其他最新博客
评论 ( 个评论)
观看游戏蛮牛微信版网站,可以查看论坛版块以及Unity手册哦!
←_←立即扫描,开启你的"游戏蛮牛"之旅吧!Unity帮助_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
3页免费2页免费46页1下载券80页免费50页免费 39页免费40页免费37页免费26页免费22页免费
Unity帮助|帮​助​哦
把文档贴到Blog、BBS或个人站等:
普通尺寸(450*500pix)
较大尺寸(630*500pix)
2014年全国注册建造师考试
你可能喜欢北京科学书店
Unity 3D ShaderLab开发实战详解
开&&&&&&本:16开
页&&&&&&数:
字&&&&&&数:
I&&S&&B&&N:7
售&&&&&&价:61.07元
原书售价:69.00元
品&&&&&&相:
运&&&&&&费:北京市通州区
快递:8.00元
上书时间:
购买数量:
(库存160件)
店铺名称:
店主昵称:
店铺等级:
拍卖等级:
卖家信誉:
卖家好评率:
实名认证:
担&保&&金:307元
地&&&&&&址:北京市朝阳区
开通时间:
商品分类:
详细描述:
基本信息
书名:Unity&3D&ShaderLab开发实战详解
原价:69.00元
作者:郭浩瑜 编著
出版社:人民邮电出版社
出版日期:
ISBN:7
字数:552000
页码:310
版次:1
装帧:平装
开本:16开
商品重量:
编辑推荐
第一本专一介绍底层渲染著作  Unity社区高知名度作者编著  全面讲解Unity&Shader渲染实战技术
内容提要
《Unity&3D&ShaderLab开发实战详解》全面讲解了Unity&Shader渲染的实战技术,全书分为五篇共33章,主要内容为:Shader在3D游戏中的作用、Shader的实例化、Shader的实现语言等;Unity中Shader的形态、SubShader的重要标签、可编程Shader、Surface&Shader;Shader中用到的各种空间的概念和Shader中的投影矩阵;基本的光照模型;第一个被执行的Pass,包括渲染路径和Pass的LightMode标签;VertexLit渲染路径,包括顶点照明和Unity存放光源的方式;Forward渲染路径;基于光照贴图的烘焙照明;基于LightProbes的照明;平面阴影;球体阴影;体积阴影;映射阴影;内置的阴影;Pass的通用指令开关;固定管线;Surface&Shader;凹凸材质;卡通材质;镜面材质;半透明材质;体积雾;Wrap&Model新解;面积光;体积光;材质替代渲染;后期效果;地形;投影;Shader的组织和复用。和你必须知道的渲染概念及基于渲染路径的优化、移动平台上的优化等实战内容,是不可多得的实战教程。  《Unity&3D&ShaderLab开发实战详解》适合移动开发者、游戏开发者、程序员阅读,可作为大专院校相关专业的师生用书,也可当作培训学校的教材。
目录
"目&录第1篇&初识庐山真面目——Unity&3D&Shader第1章&Shader(着色器)的概念和在3D游戏中的作用 1.1&Shader的概念 1.1.1&虚拟世界中的光明和色彩 1.1.2&游戏开发人员的终点 1.1.3&Shader(着色器)简史 1.2&Shader的实例化 1.3&Shader的实现语言 1.3.1&GPU上的编程 1.3.2&Unity中的着色器编程 第2章&Unity中Shader(着色器)的形态 2.1&Unity通过ShaderLab来组织Shader 2.1.1&关键字Shader 2.1.2&使用SubShader组织Shader的不同实现 2.1.3&SubShader的重要标签 2.1.4&SubShader中的Pass块 2.1.5&Pass块的标签及其名字的意义 2.1.6&使用FallBack保证Shader的广泛适应性 2.2&Unity的ShaderLab所支持的Shader编程语言 2.3&Unity中Shader的3种形态 2.3.1&固定管线 2.3.2&可编程Shader 2.3.3&ShaderLab的骄傲:Surface&Shader 2.4&Shader的数据接口:属性和uniform变量 2.4.1&在Properties块中定义属性 2.4.2&通过图形界面操作属性 2.4.3&通过脚本操控属性 2.4.4&矩阵:不能在属性块定义的变量 2.4.5&在Cg代码中使用属性 第3章&Shader(着色器)中用到的各种空间概念 3.1&模型空间 3.1.1&为什么用模型空间 3.1.2&在脚本和Shader中进出模型空间 3.2&世界坐标空间 3.2.1&统一表达:世界坐标空间 3.2.2&在脚本和Shader中进出世界坐标空间 3.3&视空间 3.3.1&渲染的需要:视空间 3.3.2&在脚本和Shader中进出视空间 3.4&空间的一块:视锥体 3.5&剪切空间 3.5.1&投影 3.5.2&脚本和Shader中的投影矩阵 第4章&基本的光照模型 4.1&光源对物体照明的分类 4.1.1&间接照明 4.1.2&直接照明 4.2&照明的计算方式:光照模型 4.2.1&漫反射和Lambert 4.2.2&镜面高光和Phong 4.2.3&半角向量和BlinnPhong 第2篇&让你的应用更炫彩——Unity中的照明第5章&第一个被执行的Pass 5.1&不同的LightMode被选择的顺序 5.1.1&渲染路径和Pass的LightMode标签 5.1.2&设计可以检测渲染路径的材质 5.1.3&设计便于检测渲染路径的场景 5.1.4&VertexLit渲染路径下Pass的执行 5.1.5&Forward渲染路径下Pass的执行 5.1.6&Deferred渲染路径下Pass的执行 5.1.7&不同渲染路径下的Pass执行规则总结 5.2&3个渲染路径之外 5.2.1&LightMode的其他值 5.2.2&设计检测用的材质 5.2.3&Always类型的Pass在3种渲染路径下的执行 5.2.4&LightMode的默认值及其在3种渲染路径下的执行 第6章&VertexLit渲染路径 6.1&顶点照明 6.1.1&什么是顶点照明 6.1.2&存取光源的变量 6.2&顶点照明和Unity存放光源的第一种方式 6.2.1&用于调试输出的材质 6.2.2&设计用于检测的场景 6.2.3&在Vertex&Pass中的检测结果 6.2.4&效数据 6.3&顶点照明和Unity存放光源的第二种方式 6.3.1&用于调试输出的材质 6.3.2&设计用于检测的场景 6.3.3&在Vertex&Pass中的检测结果 6.4&顶点照明和Unity存放光源的第三种方式 6.4.1&Unity为Vertex&Pass准备的光源 6.4.2&设计用于检测的场景 6.4.3&顶点照明中的点光源 6.4.4&计算顶点照明的ShadeVertexLights函数 6.4.5&顶点照明中的Pixel光源 6.4.6&顶点照明中的平行光 6.4.7&顶点照明中的灯光信息小结 6.4.8&一个顶点照明的实现例子 第7章&Forward渲染路径 7.1&ForwardBase和ForwardAdd 7.1.1&设计检测用的场景和材质 7.1.2&ForwardBase和ForwardAdd的表现 7.2&Forward渲染路径下的重要光源 7.2.1&设计检测用的材质 7.2.2&不存在Pixel光源时的情况 7.2.3&存在Pixel平行光时的情况 7.2.4&存在Pixel点光源时的情况 7.2.5&有多种类型的Pixel光源时的情况 7.2.6&Forward渲染路径下的Pixel光源小结 7.3&重要光源在ForwardAdd内的执行 7.3.1&设计用来检测Pixel光源的材质 7.3.2&设计检测用的场景 7.3.3&检测结果:ForwardAdd如何被执行 7.4&ForwardBase和Unity存放光源的第一种方式 7.4.1&设计检测用的材质 7.4.2&第一种方式内的Vertex点光源 7.4.3&第一种方式内的平行光 7.4.4&第一种方式内的重要Pixel点光源 7.4.5&只有ForwardBase时的情况总结 7.4.6&ForwardAdd对ForwardBase内光源的影响 7.4.7&有ForwardAdd时存放光源数据第一种方式的总结 7.5&ForwardAdd和Unity存放光源的第一种方式 7.5.1&设计检测用的材质 7.5.2&设计检测用的场景 7.5.3&ForwardAdd内的Pixel光源 7.5.4&ForwardAdd内的平行光 7.5.5&数组变量unity_4LightPos的使用情况分析 7.6&Forward渲染路径和Unity存放光源的第三种方式 7.6.1&检测ForwardBase内情况的材质 7.6.2&检测结果:第三种方式不包含对ForwardBase有效的数据 7.6.3&检测结果:第三种方式不包含对ForwardAdd有效的数据 7.7&Forward渲染路径总结 7.7.1&Forward渲染路径下材质的适应性 7.7.2&Unity如何为Forward渲染路径设置光源 第8章&基于光照贴图的烘焙照明 8.1&单光照贴图和VertexLit渲染路径 8.1.1&测试烘焙的场景 8.1.2&烘焙场景中使用的材质 8.1.3&烘焙的前提:静态物体 8.1.4&如何在烘焙中使用自发光材质 8.1.5&烘焙之后静态物体和非静态物体的实时照明 8.1.6&应用光照贴图到VertexLit渲染路径下的材质中 8.1.7&通过自己的材质改变实时光源对烘焙后物体的照明 8.2&在效果和性能间进行权衡 8.2.1&影响全局的Resolution选项 8.2.2&影响单个物体的Scale&In&Lightmap选项 8.3&单光照贴图和Forward渲染路径 8.3.1&单光照贴图在VertexLit和Forward下面的不同表现 8.3.2&准备可应用于烘焙的自发光材质 8.3.3&在ForwardBase内计算光照贴图 8.3.4&Forward渲染路径下烘焙之后的实时照明 8.4&单光照贴图在Deferred渲染路径下的实时阴影 8.5&双光照贴图和Deferred渲染路径 8.5.1&全局GI、间接照明以及双光照贴图 8.5.2&混合双光照贴图和实时照明 8.5.3&观察混合过程 8.5.4&双光照贴图的使用限制 8.6&双光照贴图和Forward渲染路径 8.7&方向光照贴图和Forward渲染路径 8.7.1&烘焙后的凹凸问题 8.7.2&方向光照贴图(Direction&Lightmaps)和凹凸贴图 第9章&基于LightProbes的照明 9.1&初识LightProbes 9.1.1&LightProbes照明的优点 9.1.2&检测LightProbes照明的场景 9.1.3&使用Light&Probe&Group进行管理 9.1.4&烘焙场景光照信息到LightProbes中 9.1.5&对比Light&Probes照明和实时照明 9.2&放置LightProbes的注意事项 9.2.1&必须形成一个体积 9.2.2&单个Light&Probe必须处于采样光源的照射范围 9.3&动态更新LightProbes 9.3.1&跟新数据的注意事项 9.3.2&更改不同通道的Coefficient 9.4&照明采样的Archor&Override 9.4.1&基于线性插值的采样 9.4.2&改变默认的插值位置 9.5&LightProbes照明和阴影 9.5.1&LightProbes和光照贴图的异同 9.5.2&烘焙阴影时可能会犯的错误 9.5.3&将静态物体的阴影烘焙到Light&Probe上 9.5.4&LightProbes照明和实时阴影的混合 9.6&烘焙一个色彩丰富的场景 9.7&在自己的材质中使用LightProbes 9.7.1&为Forward渲染路径的材质计算LightProbes 9.7.2&使用ShadeSH9函数 9.7.3&在一个Surface&Shader中进行计算 第3篇&使应用更逼真——Shadows(阴影)第10章&平面阴影 10.1&平行光对平面的投影 10.1.1&对平行光投影的考虑 10.1.2&进出阴影接受平面的矩阵 10.1.3&使用三角形相似计算阴影 10.2&点光源对平面的投影 10.3&阴影的淡出 10.3.1&有效利用计算平面阴影过程中的数据 10.3.2&潜在的问题 第11章&球体阴影 11.1&平行光对球体的投影 11.1.1&投影球体的信息 11.1.2&使用相似三角形计算投影 11.2&阴影的淡入/淡出 11.3&点光源对球体的投影 第12章&体积阴影 12.1&将顶点沿某一方向挤出 12.1.1&在Vertex函数中操作 12.1.2&判断顶点是向光还是背光 12.2&从Volumes中找到阴影区域 12.2.1&两次挤出 12.2.2&计算出阴影区域 12.2.3&渲染阴影 12.2.4&需要注意的问题 第13章&阴影映射 13.1&灯光空间和相机空间 13.1.1&观察两个空间 13.1.2&两个视角的Z深度 13.1.3&渲染Z深度的材质 13.2&投射Z深度 13.2.1&准备灯光视角的投影矩阵 13.2.2&在材质中计算投影后的Z深度 13.3&比较Z深度 13.3.1&比较Z深度的材质 13.3.2&Z精度引起的问题 13.3.3&增加Z的精度 13.3.4&对Z值进行偏移 第14章&内置的阴影 14.1&投射阴影 14.1.1&使用ShadowCaster投射阴影 14.1.2&ShadowCaster里都做了什么 14.1.3&写一个自己的ShadowCaster 14.1.4&改变ShadowCaster的行为 14.1.5&阴影和FallBack机制 14.2&接受阴影 14.3&Surface&Shader和阴影 14.3.1&Surface&Shader的阴影和Fallback 14.3.2&Surface&Shader里的灯光参数和阴影 14.3.3&Surface&Shader对Forward渲染路径下阴影的支持 第4篇&Unity中的各种Shader第15章&Pass的通用指令开关 15.1&使用LOD在运行时决定材质 15.1.1&材质的LOD 15.1.2&运行时设定单个材质的LOD 15.1.3&设定全局所有材质的LOD 15.1.4&Unity内置的LOD层级 15.2&渲染队列 15.2.1&标签队列和渲染顺序 15.2.2&渲染队列和ZTest判断 15.2.3&Unity中内置的渲染队列 15.3&透明的产生 15.3.1&Alpha检测和8种比较条件 15.3.2&动态生成AlphaTest的材质 15.3.3&动态生成Shader的内容 15.3.4&结合AlphaTest和Blend操作 15.4&混合操作 15.4.1&什么是混合(Blend)操作 15.4.2&动态生成测试用的材质 15.4.3&生成Shader的代码 15.4.4&检测不同的混合操作 15.4.5&BlendOp选项 15.4.6&动态生成带BlendOp选项的材质 15.4.7&生成Shader的代码 15.4.8&检测BlendOp操作 15.5&使用通道遮罩(ColorMask) 15.5.1&ColorMask的作用 15.5.2&检测ColorMask 15.5.3&一个使用ColorMask的例子 15.6&ZTest(深度测试) 15.6.1&存取场景的ZTest 15.6.2&RenderType标签和生成ZTest的关联 15.6.3&内置RenderType的值 15.6.4&Forward渲染路径下的ZTest 15.6.5&Deferred渲染路径下的ZTest 15.7&对Z深度的偏移 15.7.1&干预正常ZTest的手段 15.7.2&动态改变Offset的参数 15.7.3&观察Offset在不同应用条件下的表现 15.8&面的剔除操作 15.9&自动贴图坐标的生成 15.9.1&ObjectLinear和等价的Cg代码 15.9.2&EyeLinear和等价的Cg代码 15.9.3&SphereMap和等价的Cg代码 15.9.4&CubeReflect和等价的Cg代码 15.9.5&CubeNormal和等价的Cg代码 15.10&抓屏操作 15.10.1&如何使用GrabPass 15.10.2&一个模拟曲面反射的例子 15.11&Fog(雾效) 15.11.1&Fog和Unity的3种实现 15.11.2&材质中对Fog的控制 15.11.3&实现自己的Fog 第16章&固定管线 16.1&Unity中固定管线的基本形态 16.1.1&基本形态 16.1.2&与照明相关的Material块 16.1.3&处理纹理的SetTexture块 16.1.4&基本形态的另一种写法 16.1.5&Combine语句 16.2&使用顶点色 16.2.1&使用ColorMaterial 16.2.2&使用Bind 16.3&在固定管线中使用光照贴图 16.4&嵌套Cg代码 第17章&Surface&Shader 17.1&Surface&Shader的适应性 17.1.1&一个分析策略 17.1.2&VertexLit渲染路径的检测材质 17.1.3&Forward渲染路径的检测材质 17.1.4&测试用的场景 17.1.5&检测结果:不独立支持VertexLit渲染路径 17.1.6&检测结果:对Forward渲染路径的有条件支持 17.2&Surface&Shader和Deferred渲染路径 17.2.1&设计检测的策略和材质 17.2.2&检测结果:Surface&Shader对Deferred渲染路径的支持条件 17.3&Forward渲染路径下的Surface&Shader 17.3.1&Cg代码完全体 17.3.2&最简形式的等价Cg代码 17.3.3&Cg代码对光照贴图的支持 17.3.4&一个检测生成的ForwardBase场景 17.3.5&自动生成的ForwardAdd 17.3.6&参数noambient和novertexlights 17.3.7&参数approxview和halfasview 17.3.8&Forward渲染路径下的透明和混合模式参数 17.3.9&加强Forward渲染路径下效果的参数 17.4&Deferred渲染路径下的Surface&Shader 17.4.1&自动生成的PrePassBase和PrePassFinal 17.4.2&PrePassBase都做了什么 17.4.3&_LightBuffer里面的东西 17.4.4&计算_LightBuffer所使用的材质 17.4.5&PrePassFinal的工作 17.4.6&FallBack和Surface&Shader的阴影 17.4.7&精简用的参数 17.4.8&Vertex、finalcolor函数和addshadow选项 17.4.9&Deferred模式下的材质透明 17.4.10&decal参数 第18章&凹凸材质 18.1&切空间 18.2&凹凸贴图 18.2.1&计算到切空间的矩阵 18.2.2&Unity中法线贴图的压缩格式 18.2.3&使用切空间矩阵的另一种方法 18.2.4&Unity对切空间计算的支持 18.2.5&解压缩法线贴图的函数 18.2.6&在切空间中计算高光 18.2.7&Surface&Shader和切空间 18.3&Parallax&Mapping(视差映射) 18.3.1&Parallax&Mapping及其别名 18.3.2&一个使用灰度图来偏移UV的材质 18.3.3&结合法线贴图 18.3.4&用视角来决定UV偏移 18.3.5&一个完整的实现 18.4&Relief&Mapping(地势映射) 18.4.1&Parallax&Mapping的极限和Relief&Mapping的面世 18.4.2&Relief&Mapping的算法 18.4.3&一个完整的实现 第19章&卡通材质 19.1&描边 19.1.1&沿法线挤出轮廓 19.1.2&容易产生的问题 19.1.3&在视空间中挤出 19.1.4&顶点位置的另一个含义 19.1.5&调和法线和顶点方向 19.1.6&判断顶点的指向 19.1.7&不仅仅是轮廓 19.1.8&通过Z偏移来描边 19.2&卡通着色 19.2.1&对光照进行离散化 19.2.2&使用2D贴图重新映射光照 第20章&镜面材质 20.1&镜像一个相机 20.1.1&镜子里的世界和我的计划 20.1.2&在脚本中对位置和角度进行镜像 20.2&使用镜像相机来渲染、投影 20.2.1&镜面材质的工作:采样被投影的渲染结果 20.2.2&脚本的工作:渲染镜像相机和设置投影矩阵 20.3&镜像相机的近剪切平面和倾斜矩阵 20.3.1&调节近剪切平面 20.3.2&使用倾斜矩阵微调视锥体 第21章&半透明材质 21.1&什么是半透明材质 21.2&用简单来表达复杂 第22章&体积雾 22.1&距离的表达:相对于背景的体积雾 22.1.1&需要计算的东西 22.1.2&使用一个Pass来完成所有的计算 22.1.3&黑色的雾效 22.2&厚度的表达:物体形体的体积雾 22.2.1&必须计算的两个数据 22.2.2&在Unity中使用一个Pass来完成所有计算 第23章&Wrap&Model新解 23.1&一个可调节的Wrap光照模型 23.2&另一种实现途径 23.2.1&基于不同构想的Wrap 23.2.2&实现这种构想 23.2.3&进一步的变通 第24章&面积光 24.1&线光源 24.1.1&点,线,面 24.1.2&如何理解一个线光源 24.1.3&通过脚本传递线光源的几何信息 24.1.4&计算线光源的照明 24.1.5&线光源的辐射方向 24.1.6&线光源的衰减 24.2&面积光源 24.2.1&面积光和线光源的不同 24.2.2&通过脚本设定面积光的几何特性 24.2.3&计算面积光 24.2.4&和默认照明的整合 第25章&体积光 25.1&体积光和体积阴影 25.1.1&什么是体积光 25.1.2&体积光和体积阴影的关系 25.2&实现体积光 25.2.1&在Shader中表现体积光 25.2.2&脚本的帮助 第26章&材质替代渲染 26.1&相机(Camera)和渲染消息 26.1.1&相机的渲染消息发送顺序 26.1.2&物体的渲染消息发送顺序 26.1.3&相机和物体的渲染消息先后顺序 26.1.4&存在两个相机时的渲染消息 26.1.5&最后能改变Cull操作结果的地方 26.1.6&最后能设置材质数据的地方 26.2&相机(Camera)的渲染方法 26.2.1&Render方法 26.2.2&RenderWithShader方法 26.3&如何使用RenderWithShader方法 26.3.1&标签值不同的5个Shader 26.3.2&调用RenderWithShader方法的脚本 26.3.3&替换用的5个材质 26.3.4&检测RenderWithShader方法的效果 26.3.5&使用SubShader组织替代材质 26.3.6&如何设置替代材质的属性 26.3.7&将结果输出到屏幕上 26.4&SetReplacementShader和ResetReplacementShader 第27章&后期效果 27.1&Graphics的两个方法 27.1.1&与相机渲染方法的不同之处 27.1.2&Blit方法的简单示例 27.1.3&使用BlitMultiTap方法进行多重采样 27.2&一个简单的调色 27.2.1&调色用的脚本 27.2.2&调色用的材质 27.2.3&更高效的做法 27.3&景深 27.3.1&用于模糊图像的材质 27.3.2&进行纵横两次模糊操作 27.3.3&进行混合操作的脚本 27.3.4&进行混合操作的材质 27.3.5&提供一个可调节参数 27.4&轮廓检测 27.4.1&用脚本索要场景的Z深度和法线 27.4.2&在材质中进行边缘检测 27.5&扭曲 27.5.1&通过UV操作扭曲图像 27.5.2&限定扭曲的区域 27.5.3&使用物体来做遮罩 27.6&运动模糊 27.6.1&如何记录运动轨迹 27.6.2&实现运动模糊的材质 27.6.3&用于完成整个过程的脚本 27.6.4&通过Alpha和帧的混合操作实现运动模糊 27.7&噪波 27.7.1&根据Z深度来混合噪波 27.7.2&根据明暗程度来混合噪波 27.8&色彩的溢出 27.8.1&色彩溢出的算法考量 27.8.2&实现色彩溢出的采样计算 第28章&地形 28.1&地表的材质 28.1.1&地面纹理的控制贴图 28.1.2&如何自定义地表材质 28.1.3&如何使用更多的纹理贴图 28.2&花草的材质 28.2.1&非Billboard类型花草的材质 28.2.2&Terrain引擎传入的数据 28.2.3&Billboard类型花草的材质 28.2.4&自定义Detail&Mesh的材质 28.3&树木的材质 28.3.1&树木的2D&Billboard材质 28.3.2&3D形态树木的材质 28.3.3&应用Unity计算的Occlusion 第29章&投影 29.1&Unity的Projector 29.1.1&Projector中的材质被执行的顺序 29.1.2&如何写Projector使用的材质 29.1.3&控制投影淡进淡出的矩阵 29.2&实现自己的投影 29.2.1&设定投影矩阵的脚本 29.2.2&采样投影的材质 29.2.3&直接投影到屏幕上 29.2.4&模拟GUITexture 29.3&模拟粒子的广告牌效果 29.3.1&使用材质将物体面向相机 29.3.2&保持旋转角度 第5篇&Shader的组织和优化第30章&Shader的组织和复用 30.1&cginc文件 30.1.1&Unity的UnityCG.cginc文件 30.1.2&定义自己的cginc文件 30.1.3&使用自定义的cginc文件 30.2&通过UsePass来复用 30.2.1&定义自己要复用的Pass 30.2.2&复用这些Pass 30.3&定义自己的Shader关键字 30.3.1&使用关键字改变Shader的行为 30.3.2&定义自己的Shader关键字 30.4&使用multi_compile编译Shader的多个版本 30.4.1&使用multi_compile实现多次编译 30.4.2&在脚本中选择Shader的版本 30.5&Unity对DX11支持所带来的问题 第31章&你必须知道的渲染概念 31.1&逐顶点计算和逐像素计算 31.1.1&逐顶点计算 31.1.2&逐像素计算 31.1.3&如何在这两个概念中取舍 31.2&Draw&Call的指标意义 31.2.1&Draw&Call的概念 31.2.2&正确理解Draw&Call对你开发应用的意义 31.2.3&Batching的概念和Unity为优化Draw&Call所做的工作 31.2.4&优化Draw&Call 31.3&利用渲染队列的技巧 31.3.1&渲染队列的概念 31.3.2&设置Render&Queue的技巧 第32章&基于渲染路径的优化 32.1&VertexLit渲染路径下的优化 32.1.1&VertexLit渲染路径的特点 32.1.2&合理的光照计算 32.2&Forward渲染路径下的优化 32.2.1&Forward渲染路径的特点 32.2.2&合理的光照计算 32.3&Deferred渲染路径下的优化 32.3.1&Deferred渲染路径的特点 32.3.2&合理的灯光布局 第33章&移动平台上的优化 33.1&移动平台的特点 33.2&一些指令的运算速度概念 33.3&几何复杂度的考量 33.4&贴图的问题 33.5&数据类型的使用方式 33.6&变量的使用 33.7&慎用后期效果 33.8&慎用透明效果 附录&相关资源
作者介绍
东西不错,书也是正版的书。下次有需要的话也会向您购买,谢谢
确认及时,邮寄及时!谢谢书友!
您可能感兴趣的商品
Copyright(C)
孔夫子旧书网
京ICP证041501号
海淀分局备案编号
购物车共有0件商品,合计:0.00元
商品已成功添加到收藏夹!}

我要回帖

更多关于 我和僵尸有个约会 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信