有没有什么办法解决Unity3D里面反锯齿效果是什么的效果

unity3d阴影有锯齿,怎么解决?_unity3d吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:76,697贴子:
unity3d阴影有锯齿,怎么解决?收藏
用自带的灯光的软阴影,会出现锯齿。通过edit-&project setting -& quality进行设置也会有锯齿,这种情况怎么解决?另外unity程序要通过什么方式来制作引用效果才能好些,程序需要在android平台上跑,所以要考虑资源和性能,求大神指点。如果您对这方面很了解,麻烦您能花几分钟帮忙说下;如果您有一点思路也请您指点下;如果您有相关的资料,也请您能留下。
达内unity3d培训全程&实战教学&,unity3d金牌讲师授课.免费unity3d课程试听中!到达内unity3d学院学习unity3d,只需4个月速成unity3d游戏工程师.
阴影可以理解为灯光视口渲染的图片投射的一张图片,图片的尺寸按阴影的质量设置来生成,但是这个尺寸是有上限的,所以另一个方法就是缩小阴影可见范围,这样相同面积内的阴影图像素密度增加,也会起到减少锯齿的作用,配合lightmap系统来补足远处的非即时阴影。如果真的一定要高质量的无锯齿实时阴影,也可以自己实现一套,比如用灯光视口角度拍摄主角轮廓图,投射在主角身边~ Unity官网论坛应该有相关的资料。Unity2.x的时代大家都是这样做的。。。多么美好的记忆~~
登录百度帐号推荐应用数据结构和算法很重要!图形学也很重要!大的游戏公司很看重个人基础,综合能力小公司看你实际工作能力,看你的Demo。
1.什么是渲染管道?
是指在显示器上为了显示出图像而经过的一系列必要操作。 渲染管道中的很多步骤,都要将几何物体从一个坐标系中变换到另一个坐标系中去。
主要步骤有:
本地坐标-&视图坐标-&背面裁剪-&光照-&裁剪-&投影-&视图变换-&光栅化。
2.如何优化内存?
有很多种方式,例如
1.压缩自带类库;
2.将暂时不用的以后还需要使用的物体隐藏起来而不是直接Destroy掉;
3.释放AssetBundle占用的资源;
4.降低模型的片面数,降低模型的骨骼数量,降低贴图的大小;
5.使用光照贴图,使用多层次细节(LOD),使用着色器(Shader),使用预设(Prefab)。
3.动态加载资源的方式?
1.Resources.Load();
2.AssetBundle
1.通过Resources模块,调用它的load函数:可以直接load并返回某个类型的Object,前提是要把这个资源放在Resource命名的文件夹下,Unity不关有没有场景引用,都会将其全部打入到安装包中。Resources.Load();
2.通过bundle的形式:即将资源打成 asset bundle 放在服务器或本地磁盘,然后使用WWW模块get 下来,然后从这个bundle中load某个object。AssetBundle
3.通过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 /工具包,工具箱
三 可视化编程 推荐:PlayMaker
四 插值插件 推荐:iTween,HOTween
五 路径搜寻 推荐:Simple Path
六 美术及动画制作 推荐:RageSpline,Smooth Moves
七 画面增强 推荐:Bitmap2Material,Strumpy Shader Editor
八 摄像机管理 推荐:Security Camera
九 资源包 推荐:Nature Pack
十、造路插件EasyRoads3D
6.使用Unity3d实现2d游戏,有几种方式?
1.使用本身的GUI;
2.把摄像机的Projection(投影)值调为Orthographic(正交投影),不考虑z轴;
3.使用2d插件,如:2DToolKit;
7.Unity3d中的碰撞器和触发器的区别?
触发器只是碰撞器身上的一个属性,碰撞器是触发器的载体。
碰撞器有碰撞的效果,IsTrigger=false,可以调用OnCollisionEnter/Stay/Exit函数;
触发器没有碰撞效果,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,可以模拟两个物体间用一根链条连接在一起的情况,能保持两个物体在一个固定距离内部相互移动而不产生作用力,但是达到固定距离后就会产生拉力。
12.物体自身旋转使用的函数?
Transform.Rotate()
13.物体围绕某点旋转使用的函数?
Transform.RotateAround()
14.Unity3d提供了一个用于保存和读取数据的类(PlayerPrefs),请列出保存和读取整形数据的函数
PlayerPrefs.SetInt()
PlayerPrefs.GetInt()
15.Unity3d提供了几种光源类型,分别是哪几种?
平行光:Directional Light
点光源:Point Light
聚光灯:Spot Light
区域光源:Area Light
16.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在实例化的时候用到,主要用于经常会用到的物体,属性方便修改。
22.请简述Unity3d下如何安全的在不同工程间迁移asset数据,请列举出三种方法?
1.可以把assets目录和Library目录一起迁移
3.用Unity带的assets Server功能
23.请描述游戏动画有哪几种,以及其原理?
主要有关节动画、骨骼动画、单一网格模型动画(关键帧动画)。
a.关节动画:把角色分成若干独立部分,一个部分对应一个网格模型,部分的动画连接成一 个整体的动画,角色比较灵活,Quake2中使用这种动画;
b.骨骼动画,广泛应用的动画方式,集成了以上两个方式的优点,骨骼按角色特点组成一定的层次结构,有关节相连,可做相对运动,皮肤作为单一网格蒙在骨骼之外,决定角色的外观;
c.单一网格模型动画由一个完整的网格模型构成,在动画序列的关键帧里记录各个顶点的原位置及其改变量,然后插值运算实现动画效果,角色动画较真实。
24.请描述为什么Unity3d中会发生在组件上出现数据丢失的情况
一般是组件上绑定的物体对象被删除了
25.alpha blend工作原理
Alpha Blend 实现透明效果,不过只能针对某块区域进行alpha操作,透明度可设。
26.写出光照计算中的diffuse的计算公式
计算公式为: Idiffuse = Dintensity*Dcolor*N.L ; (Dintensity表示漫反射强度,
Dcolor 表示漫反射光颜色,
N 为该点的法向量,
&L 为光源向量 其中N与L点乘,如果结果小于等于0,则漫反射为0。
27.Lod是什么,优缺点是什么?
LOD(Level of detail)多层次细节,是最常用的游戏优化技术。它按照模型的位置和重要程度决定物体渲染的资源分配,降低非重要物体的面数和细节度,从而获得高效率的渲染运算。
28.两种阴影判断的方法、工作原理。
A.阴影由两部分组成:本影与半影
a.本影:景物表面上那些没有被光源直接照射的区域(全黑的轮廓分明的区域)
b.半影:景物表面上那些被某些特定光源直接照射但并非被所有特定光源直接照射的区域(半明半暗区域)
求阴影区域的方法:做两次消隐过程
一次对每个光源进行消隐,求出对于光源而言不可见的区域L;
一次对视点的位置进行消隐,求出对于视点而言可见的面S;
shadow area= L ∩ S
B.阴影分为两种:自身阴影和投射阴影
自身阴影:因物体自身的遮挡而使光线照射不到它上面的某些可见面
工作原理:利用背面剔除的方法求出,即假设视点在点光源的位置。
投射阴影:因不透明物体遮挡光线使得场景中位于该物体后面的物体或区域受不到光照照射而形成的阴影
工作原理:从光源处向物体的所有可见面投射光线,将这些面投影到场景中得到投影面,再将这些投影面与场景中的其他平面求交得出阴影多边形,保存这些阴影多边形信息,然后再按视点位置对场景进行相应处理得到所要求的视图(利用空间换时间,每次只需依据视点位置进行一次阴影计算即可,省去了一次消隐过程)若是动态光源此方法就无效了。
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)
&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的位置
42.写一个计时器工具,从整点开始计时,格式为:00:00:00
43.写出Animation的五个方法
AddClip 添加剪辑、
Blend 混合、
Play 播放、
Stop 停止、
Sample 采样
44.怎么拿到一个对象上脚本的方法
GameObject.GetComponent&&();
45.请简述向量的点乘,向量的叉乘以及向量归一化的几何意义?
点乘的几何意义是:计算两个向量之间的夹角,以及在某一方向上的投影;
叉乘的几何意义是:创建垂直于平面,三角形,或者多边形的向量;
46.Unity3D是否支持写成多线程?如果支持的话要注意什么?
支持:如果同时你要处理很多事情或者与Unity的对象互动小可以用thread,否则使用coroutine.
注意: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=-1
B.四元数也可以表示为: 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(渲染器)在任何相机上可见时调用:OnBecameVisible
50.动画层(Animation Layers)的作用是什么?
动画层作为一个具有层级动画编辑概念的工具,可以用来制作和处理任何类型的动画
51.请说出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):使用多个小的专门的接口,而不要使用一个大的总接口。
52.Material和Physic Material区别?
PhysicMaterial 物理材质:物理材质描述,如何处理物体碰撞(摩擦,弹性)。
Material材质(材质类)为了获得一个对象使用的材质,可以使用 Renderer.materia属性:
53.法线贴图 、CG动画
A.法线贴图:是在原物体的凹凸表面的每个点上均作法线,通过RGB颜色通道来标记法线的方向,你可以把它理解成与原凹凸表面平行的另一个不同的表面,但实际上它又只是一个光滑的平面。
B.CG动画:原为Computer Graphics的英文缩写。随着以计算机为主要工具进行视觉设计和生产的一系列相关产业的形成,国际上习惯将利用计算机技术进行视觉设计和生产的领域通称为CG。它既包括技术也包括艺术,几乎囊括了当今电脑时代中所有的视觉艺术创作活动,如平面印刷品的设计、网页设计、三维动画、影视特效、多媒体技术、以计算机辅助设计为主的建筑设计及工业造型设计等。 NGUI(NUGUI1、NGUI2)
54. 如何销毁一个UnityEngine.Object及其子类?
使用Destroy()方法;
55、请描述游戏动画有哪几种,以及其原理。
主要有关节动画、单一网格模型动画(关键帧动画)、骨骼动画。
a、关节动画把角色分成若干独立部分,一个部分对应一个网格模型,部分的动画连接成一个整体的动画,角色比较灵活Quake2([kwe?k]vi.发抖,颤抖;)中使用了这种动画;
b、 单一网络模型动画由一个完整的网格模型构成,在动画序列的关键帧里记录各个顶点的原位置及其改变量,然后插值运算实现动画效果,角色动画较真实。
c、骨骼动画,广泛应用的动画方式,集成了以上两个方式的优点,骨骼按角色特点组成一定的层次结构,由关节相连,可做相对运动,皮肤作为单一网格蒙在骨骼之外,决定角色的外观。皮肤网格每一个顶点都会受到骨骼的影响,从而实现完美的动画
56、下面哪种做法可以打开Unity的Asset Store
Windows -& Asset Store
57、Mecanim系统中,Body Mask的作用是?
指定身体的某一部分是否参与渲染
58、以下哪种操作步骤可以打开Unity编辑器的Lightmapping视图?
Windows --& Lightmapping
59、关于光照贴图
A:使用光照贴图比使用实时光源渲染要快
B:可以降低游戏内存消耗
C、多个物体可以使用同一张光照贴图
60、关于Vector3的API,以下说法正确的是?
Vector3.forward与Vector3(0,0,1)是一样的意思;
61、 什么是导航网格( NavMesh)?
一种用于实现自动寻路的网格
62、什么是局部坐标,什么是世界坐标?
世界坐标是不会变的,一直以世界坐标轴的XYZ为标准。局部坐标其实就是自身的坐标,会随着物体的旋转而变化的。
63、itween插件的作用是什么,itween作用于世界坐标还是局部坐标,请列举出3个其常用方法?
iTween是一个动画库,作者创建它的目的就是最小的投入实现最大的产出。让你做开发更轻松,用它可以轻松实现各种动画,晃动,旋转,移动,褪色,上色,控制音频等等“
a、MoveTo 物体移动 ;
b、ColorTo:随着时间改变对象的颜色组;
c、LookTo:随时间旋转物体让其脸部朝向所提供的Vector3或Transform位置
64、请简述NGUI中Panel和Anchor的作用
Anchor包含UIAnchor脚本。UIAnchor的功能是把对象锚定在屏幕的边缘(左上,左中,左下,上,中,下,右上,右中,右下),或缩放物体使其匹配屏幕的尺寸Panel对象有UIPanel脚本,UIPanel是一个容器,它将包含所有UI小部件,并负责将所包含的部件组合优化、承载,以减少绘制命令的调用。
65、Unity摄像机有几种工作方式,分别是什么?
perspective透视摄像机和orthographic正交摄像机
66、LayerMask.NameToLayer()这个方法有什么作用?
LayerMask的使用是按位操作的,LayerMask.NameToLayer("Players") 返回该Layer的编号。
67、请描述MeshRender中material和shader的区别?
Shader(着色器)实际上就是一小段程序,它负责将输入的Mesh(网格)以指定的方式和输入的贴图或者颜色等组合作用,然后输出。绘图单元可以依据这个输出来将图像绘制到屏幕上。输入的贴图或者颜色等,加上对应的Shader,以及对Shader的特定的参数设置,将这些内容(Shader及输入参数)打包存储在一起,得到的就是一个Material(材质)
Shader大体上可以分为两类:
表面着色器(Surface Shader) 、
片段着色器(Fragment Shader)
68、什么是矢量图
矢量图:计算机中显示的图形一般可以分为两大类——矢量图和位图。矢量图使用直线和曲线来描述图形,这些图形的元素是一些点、线、矩形、多边形、圆和弧线等等,它们都是通过数学公式计算获得的。例如一幅花的矢量图形实际上是由线段形成外框轮廓,由外框的颜色以及外框所封闭的颜色决定花显示出的颜色。由于矢量图形可通过公式计算获得,所以矢量图形文件体积一般较小。矢量图形最大的优点是无论放大、缩小或旋转等不会失真;最大的缺点是难以表现色。
69. 上机题:用鼠标实现在场景中拖动物体,用鼠标滚轮实现缩放(用一个Cube即可)。
70、 以下哪个函数在游戏进入新场景后会被马上调用?
MonoBehaviour.OnLevelWasLoaded
71、Unity3D方法执行的顺序:
1、Awake( ),2、Start( )(激活时的初始化代码)
3、Update( )【FixUpdate、LateUpdate】、
4、OnGUI(渲染模块)
5、然后是卸载模块(TearDown),这里主要有两个方法OnDisable( )与OnDestroy( )
72.数学函数
Mathf.R四舍五入;& Mathf.Clamp 限制 ;&& Mathf.Lerp 插值;
阅读(...) 评论()主题信息(必填)
主题描述(最多限制在50个字符)
申请人信息(必填)
申请信息已提交审核,请注意查收邮件,我们会尽快给您反馈。
如有疑问,请联系
CSDN &《程序员》编辑/记者,投稿&纠错等事宜请致邮
你只管努力,剩下的交给时光!
如今的编程是一场程序员和上帝的竞赛,程序员要开发出更大更好、傻瓜都会用到软件。而上帝在努力创造出更大更傻的傻瓜。目前为止,上帝是赢的。个人网站:。个人QQ群:、
个人大数据技术博客:
北京时间 4 月 1 日,Unity Technologies 正式发布了最新版的 Unity 5.6 引擎,这也是 Unity 5.x 系列的最后一个版本。其中包括改进的 2D 功能、更好的图形性能、新的视频播放器、Progressive Lightmapper 预览版,新的光照模式,以及对 Facebook Gameroom 和 Google DayDream 平台的支持。自 至今,今天发布的 5.6 正式为 Unity 5.x 画上了句号。接下来,一起看看最新的 Unity 5.6 为我们带来了哪些全新的功能特性。主要为:Progressive Lightmapper(预览)Unity 5.6 最值得注意的功能之一是基于路径追踪的新解决方案 Progressive Lightmapper。它使烘焙照明可以快速迭代,并可以预测大概结束时间。在 Unity 5.6 中,它将作为一个预览功能发布。新灯光模式替换混合模式照明灯光模式正在取代混合模式照明,这使得烘焙照明可以与实时照明相融合,包括烘焙和实时阴影。 Unity 5.6 提供了多种预设,以涵盖广泛的场景,包括完全实时 GI 照明,部分烘焙照明和完全烘焙的照明。同时,添加了烘焙阴影遮罩的能力,提供“超越实时阴影距离”的阴影。这大大减少了实时阴影距离,提高了性能。对远距离阴影与实时镜面高光的支持可以实现更高的视觉逼真度。已经为每个灯光类型和渲染路径添加了实时阴影淡出,并且从实时阴影转换到阴影遮罩是无缝的。混合灯光模式:
在间接烘焙模式下,混合灯光表现为实时动态灯光,并附加由烘焙光照贴图和光线探测器采样而来的间接照明。像雾这样的效果可以用于超越实时阴影距离。
在 Shadowmask 模式下,混合灯光是实时的,静态对象投射的阴影被烘焙成阴影纹理和光线探测器。这种模式大大减少了渲染阴影投射物的数量,并仍能在远处产生阴影。然而,静态对象在动态对象上产生的阴影质量不是很高。
Distance Shadowmask 是一种混合模式,允许动态对象接收来自静态对象的高质量阴影,以及超越实时阴影距离的预计算阴影。为此,从静态对象投射的阴影在阴影遮罩纹理和光线探测器中进行预计算。然而,在阴影距离内,动态和静态对象都将使用实时阴影贴图进行渲染。距离之外的阴影将使用预计算阴影,两者之间平滑过渡。间接照明从预计算光照贴图和光线探测器采样。
在 Subtractive 模式下,直接照明被烘焙到光照贴图中,因此静态对象将不会有来自混合光的镜面或光亮的高光。但是,动态对象将被实时照亮,并通过光线探测器从静态对象接收预计算的阴影。主定向光允许动态对象在静态对象上投射减色实时阴影。
同时,Unity 5.6 还重新设计了照明窗口以增强可用性,并添加了一个新的 Light Explorer 窗口,以简化照明艺术家的工作。支持 Vulkan - 将图形性能提升到一个新的水平,并增加了移动设备的电池寿命Vulkan 是新一代的图形和计算 API,可在台式机和移动平台上提供高效、跨平台的现代 GPU 功能。它通过多线程并行来充分利用多个 CPU 内核,在使速度提高的同时,减少了驱动程序开销和 CPU 工作负载,使 CPU 可以更好地进行额外的计算或渲染。Vulkan 的另一个优点是比使用 OpenGL ES 渲染相同内容的功耗更低。Vulkan 消耗的平均电量是 OpenGL ES 的 88-90%,因此可以增加“10-12%的额外播放时间”。目前,Unity 5.6 已经在 Android、Windows 和 Linux 平台上添加了 Vulkan 支持,同时还增加了 Vulkan 对 OpenVR 的初步支持。TextMesh Pro 即将集成到 Unity,免费使用TextMesh Pro 使用签名距离字段(SDF)作为其主要的文本渲染管线,使得可以以任何点大小和分辨率清晰地渲染文本。使用一组利用 SDF 文本渲染功能的自定义着色器,TextMesh Pro 可以通过简单地更改材质属性来动态地更改文本的视觉外观。添加视觉风格,如扩张、轮廓、柔和阴影、斜面、纹理、发光等,并通过创建/使用材质预设来保存并调用这些视觉风格。TextMesh Pro 提供对文本布局和格式设置的改进控制,使用户可以控制字符、字、行和段落间距,支持字距和基本连字,以及附加文本对齐模式,如对齐和刷新文本。超过 30 个富文本标签可用于让用户控制边距、缩进,用户可自定义样式、链接,甚至支持使用多个字体和图形与文本混合。图形改进:实例化Unity 5.6 还包括对图形各方面的大量改进,包括粒子系统和 GPU Instancing。在 5.4 和 5.5 中引入的 GPU Instancing 允许用户在单个绘制调用中使用实例着色器绘制相同网格的许多实例,同时仍允许每个实例拥有各自的数据集,包括位置,旋转和颜色。当 GPU 成为限制游戏帧率的因素时,实例化可以提供显著的性能优势。改进粒子系统在 Unity 5.5 中,用户能为粒子添加自定义数据,而这些数据可以从脚本和着色器访问。在 5.6 中,这个系统得到了扩展。现在,用户可以在 Inspector 中直接配置数据,从而很容易地创建曲线和颜色应用在脚本和着色器中以驱动自定义逻辑。更进一步,本模块中定义的颜色还可以使用高动态范围。并且,Unity 5.6 还支持并行处理多个粒子系统,以改进工作流程。为 Metal 添加 Compute Shader 支持Unity 5.6 为 iOS 和 MacOS 添加了对 Metal Compute Shader 的支持。计算着色器由 HLSL 编写,就如 Unity 中的其他图形 API 一样,它们最终都会转换为 Metal Shading Language(目前仅限于 Metal v1.1)。新的后期处理栈新的后处理栈已发布,支持 Unity 5.6 及 5.5。用户可以从 Asset Store 免费获取。它将一套完整的图像效果组合到一个后期流程中。这种做法的优点是:效果顺序配置始终正确;
允许将许多效果合并到单个 pass;
具有基于资源的配置系统,便于预置管理;
所有效果在 UI 中分组在一起,用户体验更好。它具有以下效果:
Antialiasing(抗锯齿,FXAA、Temporal AA)
Ambient Occlusion(环境光遮蔽)
Screen Space Reflections(屏幕空间反射)
Fog(烟雾)
Depth of Field(景深)
Motion Blur(运动模糊)
Eye Adaptation(眼适应)
Bloom(虚化)
Color Grading(颜色分级)
User Lut(摄影表)
Chromatic Aberration(色差)
Grain(粒度)
Vignette(晕影)
Dithering(抖动)
该工具还包括一组监视器和调试视图,可以帮助用户正确设置效果并调试输出中的问题。具有 4k 视频播放能力的新视频播放器Unity 5.6 包含一个全新的视频播放器,全新架构平切添加了硬件加速。即使是普通的手持设备,现在也可以播放支持 Alpha 通道的高分辨率 4K 视频。它支持目前被广泛使用的 H.264 / AAC 编解码器,在无法使用 H.264 / AAC 的情况下则会使用 VP8 / Vorbis。NavMesh:改进的寻路和 AIUnity 5.6 引入了底层 API,旨在解决以前版本的限制。这些改进为角色和 AI 导航提供了一整套新的用例和游戏选项。此外,底层 API 还提供四种新的易于使用的组件,。能将 Unity 的 NavMesh 功能应用到动态生成或动态加载的内容上是开发者呼声最高的功能。 利用 5.6 中的新功能,这不仅成为可能,而且简单高效。只需加载或生成场景,然后让 NavMesh 进行烘焙即可。2D 物理改进和功能对于 2D 物理引擎,内部 2D 碰撞处理系统已经被完全重写,可提供更强大和可靠的碰撞测试,确保在所有条件下都能正确的获得 Enter、Stay 和 Exit 回调状态。在 2D 物理引擎 API 的众多改进之中,几个特性脱颖而出:
能够检索 Rigidbody2D 或 Collider2D 的所有碰撞结果,可以返回完整的碰撞详细信息或只返回碰撞中的 Collider2D。
添加了一个名为 ContactFilter2D 的新类型,可用于所有物理查询。 这允许通过层掩码、碰撞法线角度、Collider2D Z 深度等快速过滤结果,以及现在接受新的 ContactFilter2D 的新的非分配重载,如 Linecast,Raycast,BoxCast, CircleCast,CapsuleCast,OverlapPoint,OverlapCircle,OverlapBox,OverlapArea,OverlapCapsule,GetContacts&IsTouching。 用于过滤的示例用法包括:询问玩家是否沿特定方向触摸特定图层; 如果 Collider2D 区域在特定层上有任何接触,或者 Rigidbody2D 在特定方向上有任何接触。
检索所有 Collider2D 与其他 Collider2D 重叠的能力,并附加到特定的 Rigidbody2D,或使用新的 OverlapCollider 功能重叠特定的 Collider2D。
检索当前连接到 Rigidbody2D 的所有 Collider2D 的能力。
可视化调试物理有时可能难以判断场景中的哪些对象应该或者不应该碰撞,特别是当渲染和碰撞网格不同步时。 为了帮助用户快速检查场景中的碰撞几何体,Unity 5.6 添加了物理碰撞的调试视图模式。它旨在为用户提供一个在 Unity 场景中快速找到与碰撞相对应的碰撞体。它也可以作为一个分析工具,因为它可以隐藏所有不被使用的 Rigidbodies,以及显示所有凹面网格的 MeshColliders。物理引擎的反穿透方法和改进的编辑器 UIUnity 5.6 添加了两个新的方法:<putePenetration 和 Physics.ClosestPoint,以帮助编写自定义的反穿透方法。这对创建自定义角色控制器以及需要额外控制如何对周围的碰撞体做出反馈的游戏代码很有帮助。 目前场景中有一个正在移动的球体和一个静止不动的胶囊。球体在与胶囊重叠的情况下,沿着胶囊转动。在球体中心有一条红色的光线,显示球体需要翻转的方向和距离,以便与胶囊完全分离。此外,Unity 5.6 还统一了在场景视图中编辑原始 2D 和 3D Colliders 的交互式手柄。 他们现在都使用相同的逻辑并支持新的修改键(Shift 和 Alt),使编辑碰撞体的尺寸,将中心固定到位,或者从任何方向均匀地缩放形状变得容易。同时,添加了 TreeView IMGUI 控件,可以显示展开和折叠的分层数据。用户可以使用 TreeView 为编辑器窗口创建高度可定制的列表视图和多列表,可以与其他 IMGUI 控件和组件一起使用,或自定义行内容渲染、拖动逻辑、选择逻辑、搜索、排序和重命名项目。Unity 5.6 改进了为每个 UI 元素发送到 GPU 的数据量,向 Canvas 添加了一个新的“AdditionalShaderProperties”。 这会更改创建的所有新 Canvas 组件的默认行为,并减少渲染画布的内存成本,因为排除了其他未使用的通道。如果您正在使用 ,您会注意到,现在可以自动检测带有 Unity 工作负载的安装,并显示并添加到“外部脚本编辑器”列表中。Google Daydream&Cardboard VR 支持5.6 原生支持 iOS 和 Android 版本的 Google Cardboard VR,和支持 Android 上 Google Daydream VR 平台。为了从 Daydream 平台获得最佳性能和延迟,Unity 与 Google VR NDK 集成,以利用该平台的异步重放和 VR 性能模式。与 Google I/O 发布的 Google VR SDK for Unity 中的 Daydream 支持相比,Unity 5.6 现在提供了一个更简化的工作流程,进行了显著的优化和减少了延迟。无需添加任何预制体,脚本或修改 manifest 文件即可开始使用——只需启用 VR 并将 Daydream 添加为目标平台,就可以开始制作自己的虚拟世界。同时,Unity 5.6 支持轻松地切换和退出 VR 模式,以便应用程序可以轻松扩展到完整的 Google VR 受众群体,并原生支持 Google Cardboard,针对 Cardboard 的应用程序可以在较老的设备上运行。目前,Cardboard 的支持是专门针对 Android 的,iOS Cardboard 支持即将推出。支持 Facebook Gameroom通过 Gameroom,Facebook 为开发人员提供了一种更轻松的方法,将高质量的游戏带入 PC,并且让游戏可以充分利用 PC 的 CPU 和 GPU 的能力。开发者现在可以将自己的项目作为原生 Windows 应用发布到 Facebook Gameroom,或者使用 Unity 的 WebGL 支持发布到 。WebAssembly 的实验性支持WebAssembly 是一种新的跨浏览器技术,旨在帮助改进 Unity WebGL 体验。尽管从技术上将其定义为一种新的独立的标准,但从 Unity 的角度来看,WebAssembly 本质上是 asm.js JavaScript 子集的字节码格式(asm.js 用于将 Unity 代码部署到 WebGL)。与当前使用的基于文本的表示相比,字节码格式显著地减少了编译为 asm.js 代码的大小。这将使代码下载更快,更重要的是,能够更快地解析和编译代码,使用更少的内存。这将改善大型已编译 JavaScript 代码库的启动时间,并减少其内存需求——这两个都是开发者在 WebGL 平台面临的常见问题。改进 Unity Multiplayer 多人联网Unity 5.6 包含对现有 Unity Multiplayer 功能的优化和稳定性的改进。值得注意的是,在不太可靠的网络条件下运行时,Unity 已经提高了稳定性。大多数更改是透明的,不会影响已有游戏所用的网络 API 的实现。除了与编辑器相关的修改之外,Unity 还对 Multiplayer 文档进行了改进,制作了一些新的学习材质,并开始了新功能的基础工作。更多 Unity 5.6 新功能与亮点,可查阅:Unity 5.6 宣告 Unity 5.x 周期结束,那么,Unity 2017 将有哪些新功能?更多 Unity 引擎精彩内容与绝密技巧,尽在 Unite 2017 Shanghai:。

我要回帖

更多关于 ps锯齿效果 的文章

 

随机推荐