unity5.0新功能
原作者 只待苍霞
章节1:
先来两个最关心的新功能, 第一章先讲PBS, 第二章讲光影GI.
说到PBS, 首先应该想到的是Unity自带的两个新的Shader, 分别是Standard以及Standard(Specular setup)
如果你没有为你的材质选择这两个Shader之一, 那么你的材质是不会有PBS效果的, 对比一下PBS.
第一幅图是使用了Unity4中的Bumped Specular, 第二幅图使用了Standard(Specular Setup), 值得一提的是为了展现最纯粹的光照效果我特意关掉了PBS的另一大特性, Reflection. 而如果开启了Reflection, 上面的截图差距应该更加明显才对, 相信各位这里也是一目了然.
PBS的具体原理是什么, 这个我没有太大的兴趣去研究, 有兴趣的同学可以自己搜索相关知识.
Standard以及Standard(Specular setup)两者的区别是, Standard使用了金属模拟的外观, 而Standard(Specular Setup)使用了镜面模拟的外观.
使用中, 对于任何不是金属的材质, 都应该选择Standard(Specular Setup).
看图, 左边是Standard, 右边是Standard(Specular Setup), 可以看出两者的差别是很明显的.
Unity官方的意思是, 用这两种Shader可以替代Unity4之前的大部分的Shader. 事实证明也的确如此.
这里先用Standard(Specular Setup)作为教程例子, 有兴趣的朋友可以自己研究Standard, 无非就是差了两个参数.
这里是Standard(Specular Setup)的参数设置界面. 这里不讲解Unity4当中很熟悉的概念. 比如Specular和NormalMap或者Tilling以及Offset这些.
RenderingMode---
选择Shader的渲染形式, 四种可选:
`Opaque---不透明
`Cutout---透明但没有半透明
`Fade---整体透明
`Transparent---只有像素透明(意思就是相比起Fade来说, 材质上的高光等信息不会变得透明化).
Albedo---就是Diffuse漫射的意思, 但是这里的Alpha通道还会控制透明程度.
Emmision---这个很有意思, 你在Emmision中设置的像素以及他的强度会影响GI, 至于GI是什么, 待会再说. 而他是如何影响GI的, 你可以选择Realtime或者Baked, 这个我会放在第二章来讲.
Secondary Maps---这里可以赋予细节贴图.
UV Set---设置UV通道.
技巧: 你赋予上去的贴图, 按住ctrl点击缩略图可以打开贴图预览.
值得一提的是, 两个Standar材质是经过高度优化的, 你没有赋予贴图的部分在工程打包的时候是不会造成任何性能消耗的, 比如你没有为"Heightmap"赋予任何贴图, 那么你就无需担心这个Heightmap在Shader中有什么亢余.
第二章GI.
重头戏来了!
GI是什么? GI =直接光照+间接光照+环境光+反射光.
直接光照先不用说了,
间接光照是光线在物体上反射所带来的光照. 核心参数: 每个光源上的Bounce Intensity.
环境光可以直接理解为你天空盒的颜色, 蓝天白云, 那么环境光就是蓝色白色. 核心参数: Lighting视图中的Ambient Intensity.
反射光可以理解为镜面反射一样的存在, 核心参数: Lighting视图中的Reflection Intensity
请各位逐一尝试这四个参数并且尝试能将场景调成纯黑然后再调回来, 就能理解其中的概念了.
GI分为两种, 一种是Precomputed Reatime GI, 这种GI需要预先计算, 计算场景中所有的Static物体的信息, 并且允许在运行时任意修改光源的Bounce Intensity或者移动光源的位置. 所有的变化都是实时的.
第二种是Baked GI, 这种GI不会预先计算但会进行预先烘焙, 无法像Precomputed Realtime GI那样在运行时更改光源.
GI的重点在于Bounce , 可以将Static物体上的光反弹到其他Static物体上, 无法将非Static物体上的光反弹到Static物体上. 也无法将Static物体上的光反弹到非Static物体上, 但是Unity5引入了新的概念, 那就是Realtime的LightProbe, Unity4中的LightProbe只能静态烘焙, 而Unity5的LightProbe会实时捕捉包括Precomputed Realtime GI的Bounce光在内的任何光线信息并且将其赋予非Static物体上.
要想完全理解GI, 首先要好好说一下Lighting面板.
先说重点的Scene页面.
Environment Lighting这些内容控制的是场景总体的光线信息, 包括天空盒的设置, 可以赋予一个天空盒材质上去, 而天空盒材质在Unity5里面也有更新, 很有意思, 大家可以试试, 新建一个材质然后选择Skybox/Procedural就行了.
Sun---如果你的天空盒材质是Skybox/Procedural那么这里允许指定一个Directional Light, 你试着旋转一下这个Directional Light就知道他是干嘛的了.
Ambient Source---环境光来源, 一般都是天空盒. 如果你的天空盒会在游戏运行时实时变化, 一定要在Ambient GI这里选择Realtime, 否则可以选择Baked.
Reflection Source---镜面反光的来源, 说到镜面放光, 需要说到Reflection Probe, 可以理解为Reflection Probe会规定一个区域, 任何进入这个区域的物体的镜面反光的信息都会被覆盖, 而没有进入任何Reflection Probe的物体的镜面放光的信息就是这个Reflection Source所指定的内容.
Reflection Bounces---当你使用Reflection Probe的时候, 最多允许镜面来回反弹几次, 举个例子, 两面镜子对着放, 会有无穷的发射次数, 而这显然是有性能消耗的, 这里指定这个来回反弹的最大的次数.
Precomputed Realtime GI的概念是, 预先计算场景中的所有静态物体的信息, 具体计算出来了哪些信息咱们开发者不用操心, 这些计算出来的信息会用于实时GI.
Realtime Resolution控制的是实时GI的分辨率, 建议不要调太高.
CPU Usage这个越大, 在调节Realtime光源的时候, GI效果就会响应得越快.
Baked GI就是烘焙光影贴图的内容了. 可以和Precomputed Realtime GI同时存在.
Baked Resolution---Bounce效果的分辨率, 由于是Baked的, 所以不用像Realtime那样设置得很小.
Baked Padding---防止光照贴图的像素在物体之间溢出. 是物体之间而不是UV簇之间, Unity没有智能到可以自动帮我将一个物体的UV拆开来然后再合并.
Compressed---是否压缩光照贴图, 提高性能, 缩小容量, 但画质会降低.
AO不用说了吧
Final Gather---开启后效果的确有很大的提升, 但是会让烘焙变慢, 成品必开.
Ray Count---与Final Gather有关. 该值越大效果越好. 烘焙也越慢. 经过仔细对比, 默认的1024和4096几乎没有区别, 但4096烘焙得出奇地慢. 事实上1024和128也几乎没有区别. 反正在我的小测试场景中是几乎没有任何区别.
General GI组的这些参数同时适用于实时GI以及烘焙GI.
Directional Mode这个真是太有意思了!
Directional Mode这个真是太有意思了!
图中是静态物体+Bake光源. 可以看到如果选择了Directional, 会像Unity4一样对静态物体处理得很不好, 但如果选择了Directional Specular, 画质马上就提升了一个等级.
不仅对于静态物体+Baked光源有提升, 对于静态物体+Realtime光源也有提升. 但是对于动态物体是没有提升的.
这两幅图是静态物体+动态光源. 可以说Directional Specular直接提升了静态物体对于直接光和间接光的效果.
但是这里有一个不得不重视的警告, 说Directional Specular对于SM2.0以及GLES2.0无法支持. 如果选择了Directional Specular, 就说明我不得不在我的PC游戏的最低配置上提升需求(当然了要是在八年前是要这么说的)! 这里说一下GLES(OpenGL ES)和SM(Shader Model). OpenGL ES针对手机平台, SM针对主机和PC平台. 从iPhone5s开始支持了OpenGL ES 3.0版本. 而对于SM版本来说, 目前还停留在SM2.0的显卡基本已经不存在了.
Indirect Intensity---同时调节Bounce, 静态物体的自发光对其他物体的影响, 以及ambient lighting的强度.
Bounce Boost顾名思义
Default Parameters---设置一个LightmapParameters资源上去. 这么做是为了复用性.
Atlas Size---Atlas尺寸.
Fog 组合Other Settings组的内容都是Unity4就有了的
下面来看一下Lighting窗口的Object页面
Preserve UVs以及Auto UV Max Distance以及Auto UV Max Angle--- 说到这三个UV选项, 就不得不说一个新的知识点.
每个物体在Unity中最多会使用3个UV通道, UV1是贴图通道, UV2是光照贴图的通道, 而第三个UV是Unity自动生成的要用于Precomputed Realtime GI的UV通道.
在这里会看到区别, 其中最后两个, 使用了光照贴图的UV通道, 而前面五个使用了第三个UV,
而这三个参数正是用于控制如何生成这第三套UV的. 这三个选项自己测试一下就有结论了, 不再赘述. 说到这里, 如果你坚持看到这里还没有打开Unity手动进行测试并且记笔记的话, 我推荐你不要这样. 我不是专门写教程的我无法写得很好如果你不能一边测试一边看教程你说不定什么都学不到.
Important GI---在比较大的场景里面, Emission物体够大够亮. 但有些物体没有却没有被他照射到, 那么可以为他开启这个Important GI.
好了, 这里要说一下Emmision了, 在第一章里, 我们说到了两种自带PBS的Shader都有Emmision可以用,
,
重点: 要想Emmision影响其他物体, 那么Emmision物体必须是Static的. Realtime和Baked的区别在于, Realtime允许在游戏运行时更改Emmision颜色以及强度来影响整体GI, 当然了更改了Emmision颜色之后需要调用一个API, 这个API就是DynamicGI.UpdateMaterials, Unity官方文档说, 之所以没有做成自动刷新显示是因为这方面的刷新比较消耗性能, 而Unity正在想办法将这个操作的性能消耗减少并且将这个做成实时刷新的.
Advanced Parameters---允许单独的物体的LightParameter的设置覆盖Default Parameters. 关于LightParameter一会再说哈.
下面说LightmapParameters,为了复用性, 将LightmapParameters做成了资源.
LightmapParameters资源可以赋予全局, 或者赋予单个物体来覆盖全局中的设置.
Precomputed Realtime GI这组的都是与Precomputed Realtime GI相关的.
Resolution---Realtime Resolution会乘以这个值来得出最终要使用于实时GI的Resolution.
Cluster Resolution---Too large clusters will result in light/shadow bleeding and too small clusters slow down the precompute. 数值越小效果越精确, 但是烘焙起来也越慢.
什么是Cluster? 看图
Irradiance Budget---数值越小效果越平滑. 但是更加消耗内存和少量的CPU.
Irradiance Quality---数值越大效果越好, 但是预计算越慢. 对游戏运行时的性能消耗无影响.
Backface Tolerance---数值越小, GI就越容易无视物体的背面. 同时, 两个完全贴合的物体的贴合部分也越容易被GI无视.
Modelling Tolerance---数值越小效果越好但是不能是0.
Edge Stitching---不能说完全消除但是可以缓解UV接缝的视觉纰漏.
Is Transparent---还记得刚才说过什么吗? LightmapParameters资源可以赋予全局, 或者赋予单个物体来覆盖全局中的设置. 没错, 为透明的物体赋予可以覆盖全局设置的LightParameters, 并且将这个LightParameters中的这个Is Transparent开启是更好的选择.
System Tag---和Is Transparent一样, 使用单独物体的LightParameter来确定这个物体被考虑进哪个System. 说到System, 可以理解为Precomputed Realtime GI的Atlas.
Baked GI这里的选项都是针对Baked GI的.
Blur Radius---光照贴图的模糊处理. 可用于将烘焙出来的阴影进行柔化处理.
Anti-aliasing Samples---数值越高, 烘焙出来的阴影的锯齿越少.
Direct Light Quality---数值越高烘焙效果越精确. 烘焙时间也会更长.
Baked AO这组是与AO有关的参数.
Quality---数值越高AO的质量越高.
Anti-aliasing Samples---AO抗锯齿.
Baked Tag---这个参数虽然和Baked AO组离的很近, 但是注意观察其实是有一定Space的, 因此他不属于AO组. 控制光照贴图的Atlas编号.
下面说一下Reflection Probe, 这东西很扯, 工作原理在这里摆着呢, 显然Reflection无论怎么调节Bound的或者采样点的位置, 都无法适应一个”房间”或者一个”地板”, 他只适用于一个玻璃球, 一个杯子, 或者是其他的单个的小型物体.
当一个物体横跨了多个Reflection Probe的时候, 他的Mesh Renderer中会自动加入所有他触及到的Reflection Probe. Weight是通过计算每个他触及的Reflection Probe和这个物体之间距离来得出的. 另外还可以单独调节Reflection Probe的”Importance”这个参数来手动干预这个计算结果.
Mesh Renderer的Reflection Probes选项能够选择四种使用ReflectionProbe的方法,
Off---代表不使用Reflection Probe.
Simple---代表只使用列表中Weight值最大的那个ReflectionProbe.
Blend Probes---should be used for interior objects, that way you’ll ensure that object won’t accidentally use reflections from skybox (a.k.a default reflection).
Blend Probes And Skybox---should be used for exterior objects, that way when object leaves the bounding box of reflection probe, it will gradually switch reflections from reflection probe to skybox.
这里只讲无法第一时间测试出意义的参数. 其他参数都比较简单.
Type选择类型, 三种可选.
Dynamic Objects---在Custom模式中是否将非静态物体也给Bake出来.
Time Slicing---官方文档上说这个选项仅仅针对于当我选择了Every frame作为刷新模式的情况, 实则不然, 因为不管是On Awake还是Every frame还是Via scripting, 这个Time Slicing都是有效果的, 要了解这个选项. 首先要了解一下Reflection Probe的内部生成机制, 一个Realtime的Reflection的生成有三个步骤, 第一个步骤要计算一个Cubemap的六个面, 第二步要考虑这个Cubemap的mipmap(文档上说为了支持Glossy Reflections, mipmap是必要的, 而Glossy Reflections对于调节不同程度的Smoothness时是有一定效果上的提升的), 第三步是将计算结果拷贝到Cubemap中. 那么TimeSlicing的三个选项分别有不同的三步计算所需帧数.
All faces at once---9帧, 性能消耗中等. (9帧之内再次通过Via Scripting调用刷新是无效的)
Individual faces---14帧(在9帧的基础上加了将六个面分为六帧的那多出来的五帧), 性能消耗最低.(14帧之内再次通过Via Scripting调用刷新是无效的)
No time slicing---1帧. 所有动作都在同一帧执行, 这种性能消耗最大. (1帧之内再次通过Via Scripting调用刷新是无效的)
Importance---影响了一个MeshRenderer中的多个ReflectionProbe的Weight的自动混合比例. 当一个物体处在多个Reflection Probe的”领地”内的时候, 首先会考虑每个Reflection Probe的Importance, 之后, 在此基础上才会考虑每个Reflection Probe与该物体之间的分别的交叉的体积的大小. 也就是说Importance的优先级高于交叉体积的计算.
关于交叉体积的计算: For ex., if the first volume is 1.0 and the second is 2.0, then first probe’s influence will be 1.0 / (1.0 + 2.0) = 0.33, the second probe’s influence will be 2.0 / (1.0 + 2.0) = 0.67. 还有一种特殊情况, 就是就是一个小的Probe套在一个大的Probe里面, 而一个物体又完全在这个小的Probe里面, 那么对这个物体来说, 小的Probe的Weight会是1, 大的会是0. 而当这个物体逐渐脱离这个小的Probe的时候, 那么小的Probe和大的Probe对于这个物体的Weight会进行一个混合.
Box Projection---如果选中这个选项, 那么Probe Size以及Probe Origin会影响Reflection Probe的映射效果.
Size---该Reflection Probe的影响范围. 进入这个范围的MeshRenderer会自动和这个Reflection Probe产生关联. 同时, 当Box Projection开启的时候, 这个Size也会影响Reflection Probe的UV映射.
Probe Origin---取样点相对于影响范围中心的偏移. 当勾选了Box Projection的时候, Probe Origin的位置会影响Reflection Probe的UV映射.
Shadow Distance---阴影距离, 特性和Quality Setting中的特性一样, 数值越小, 阴影显示越近, 但阴影越精细, 调成0会完全关闭阴影.
关于Box Projection, 官方文档说,If you have a room which you want to reflect, ensure that reflection bounding box’s is of similar dimensions, this way you’ll get the best results. 的确是这样, Reflection Probe的Bound刚好覆盖要反射的范围是最佳的效果.
下面说一下GI方面的其他注意事项以及Rendering Path
首先, 在Linear Color Space中PBR才会有最正确的效果
然后是,
光源的Baking模式有三种可选.
`Realtime---对动态物体还是静态物体都使用实时光源.
`Baked---只对静态物体使用烘焙光照. 对动态物体没有作用.
`Mixed---对静态物体使用烘焙光照, 对动态物体使用实时光源.
首先要明确的一点, 那就是提到Bounce ,就马上应该联想到静态物体, 因为Bounce对动态物体是无效的. 那么关于Bounce和光源的Baking模式之间的关系, 只有Realtime模式支持实时Bounce, 也就是更改Intensity或Bounce Intensity会对结果产生影响. 与此相对的, Baked以及Mixed都仅仅支持烘焙的Bounce.
下面说一下Rendering Path, 请各位集中看一下下面的话, 或者反复读两遍. 因为个人觉得这个挺重要.
Unity5多了一种RenderingPath, 可以取代过去的Legacy Deferred. 最大的特点是对于实时光影来说的性能消耗更低了.
Deferred
这个模式是最适合动态光影的. 对于次时代PC或者主机游戏, 当然要选择这个. 通过Viking Village以及”进化”这些最新游戏的观察我发现次时代游戏几乎不需要烘焙光照贴图了, 全都使用实时阴影是很好的选择. 通过阴影距离来控制性能消耗. 而在Viking Village的场景中,由于整个场景全部使用了动态光源, Forward的Rendering方面的性能消耗要比Deferred高出一倍! 因此在完全使用动态光源的项目中千万不能使用Forward.
Forward
对于实时光影来说, Forward的消耗比Deferred更高, 但是Forward更加适合用于半烘焙半实时的项目.
Forward解决了一个Deferred没能解决的问题. 那就是Deferred不能让Mixed模式的DirectionalLight将动态阴影投射在一个经过烘焙了的静态物体上.
比如这里这样, 立方体和右边的Plane是静态物体, 球体和左边的Plane是动态物体. 唯一的DirectionalLight是Mixed的. DirectionalLight烘焙了一下光照贴图, 但是球体不是静态物体, Mixed的DirectionalLight现在虽然可以照亮这个球体但是却无法将他的阴影投射在右边的经过烘焙了的静态的Plane上面. 但却可以将球体的阴影投射在左边的动态的Plane上面.
而Forward却完美解决了这个问题.
因此, Deferred适用于全动态阴影的主机以及PC游戏. Forward适用于烘焙阴影与实时阴影相结合的手机游戏.
Deferred适用于全动态阴影的主机以及PC游戏. Forward适用于烘焙阴影与实时阴影相结合的手机游戏...
Deferred适用于全动态阴影的主机以及PC游戏. Forward适用于烘焙阴影与实时阴影相结合的手机游戏.....
Deferred适用于全动态阴影的主机以及PC游戏. Forward适用于烘焙阴影与实时阴影相结合的手机游戏......
Deferred适用于全动态阴影的主机以及PC游戏. Forward适用于烘焙阴影与实时阴影相结合的手机游戏.......
只要记住上面五句话就行了.(五句你妹啊)
GI章节结束. 复习一下.
`大部分GI功能仅能用于静态物体以及LightProbe上
`动态物体应该受LightProbe所影响.
`GI分为两种, 一种动态一种烘焙, 手游当然应该烘焙, 主机或PC可以选择用实时.
`GI要和Standard 以及Standard(Specular Setup)配合使用才有最佳效果.
`Deferred适用于全动态阴影的主机以及PC游戏. Forward适用于烘焙阴影与实时阴影相结合的手机游戏
下面说一下Unity5也是一个很大的更新. 那就是AudioMixer.
原理:
这个东西的工作原理真的很棒, 很难再想到还有什么比这个更棒的了.
如何使用: 场景中新建一个AudioSource, 然后再在Project视图里面新建一个AudioMixer, 打开这个AudioMixer的三角形按钮, 将里面的"Master"赋予到AudioSource的Output上. 这样一来AudioSource的音频信号会通过Master这个Group最后播放出来. 而你在这个过程中可以做很多很灵活的事情, 下面大概走一遍:
先说一下这四个都是啥.
Mixers就是你当前选中的Mixer, 可以将一个Mixer在这个视图里拖拽到另一个Mixer上, 先不要这么尝试, 不然你会发蒙, 等你看完这楼的时候你再这么尝试. 听我的.
SnapShots可以在脚本中实时切换, 用来切换参数.在不同的SnapShot之间有所区别的只有效果器的参数,
Views可以切换Groups的可见状态. 切换Group的可见状态只有在编辑器中更加方便而已, 在运行时并无实质性的作用.
Group就是用来播放音频并且做设置的地方. 在Group视图中可以将一个Group拖拽到另一个Group上, 这样称之为路由. 将一个Group的信号路由到另一个Group上. 你现在动手一下, 在这里点加号新建一个Group然后命名为A, 然后在Project视图中找到你新建的这个A, 将这个A拖拽到你场景中的AudioSource上, 然后播放你的AudioSource, 看一下.你的这个A是不是有响应了? 然后停止播放关卡, 新建一个Group命名为B, 然后在Group视图中, 将A拖拽到B上面, 然后再播放场景, 然后观察一下, 再想一下, 再继续往下看.
经过上面的Group之间的测试你大概已经懂了AudioSource的工作原理了. 你现在试着在B上面加入一个效果器, 就加入一个Low Pass Filter好了. 将这个Low Pass Filter的Cutoff设置为2000. 然后再在A上加入一个High Pass Filter并且将cutoff设置为1500. 再播放一下听一听, 恭喜你现在掌握初步的诀窍了.
为何这样设计?看一下这幅图我的意思是好好看一下他的结构以及每个Group的名称, 你就能发现, 比如我在FX这个Group上面加的效果器可以用于FX下面的所有Group上面, 而FX下面的Group又可以拥有他们自己独立的设置. 这就是路由的奇妙.
在AudioMixer窗口的标签上右键点击一下可以看到有一些选项.
Show bus connections---如果勾选上, 会显示Send和Receive的关系.
Use RMS metering for Display--- 先说一下关于RMS和peak:
peak = 实时的峰值
rms = 方均根, 一定时限内的平均值
rms 使用上比较接近耳朵的感受, peak 就实实在在的电子数值.
在播放时, 开启Edit in Play Mode之后, 任何做过的改变都会被保留. 并且此时无法通过脚本修改参数.(比如通过AudioMixer.SetFloat来进行参数修改, 或者通过AudioMixerSnapshot.TransitionTo()来转换SnapShot都会无效, 这也是必然的).
理解了路由以及AudioMixer的基本原理, 是时候来掌握效果器这个概念了.
效果器附加给Group, 效果器可以理解为音频的ImageEffect.
如何通过脚本来在游戏运行时操控效果器, 右键点击任何效果器的任何参数然后选择Expose xxx, 然后会在这个地方找到所有经过Expose的变量, 这里可以修改他们的别名, 将他们的别名复制下来, 通过AudioMixer.SetFloat(string)来进行修改.
下面大概说一下每种效果器的用途: 其实大家完全可以自己尝试每种效果器听起来的感觉.
比较特别的有三个, 一个是Send, 二是Receive, 三是Duck Volume,
Send会将这个Group的信号传递出去, 而Receive配合接收, 因此Receive和Send是一对多的关系. 而Duck Volume需要Send进来一些信号, 在信号音量超过一定程度的时候会降低这个Group本身的音量. 比如NPC正在说话,此时你想让背景音乐小点声, 这个Duck Volume就发挥作用了.
Low Pass 低通滤波器.大家都知道音频是有频率的, 重低音就是低频, 青藏高原那种就是高频. 低通就是仅仅让低频播放出来而过滤高频.
High Pass高通滤波器. 那么低通配合高通可以实现中通滤波器.
Echo回声效果器.
Flange镶边效果器,用于创建迷幻飘渺的声音,
Distortion失真, 直接让信号听上去从30mb的MP3变成1mb的渣音质.
Normalize 用了之后音质会变得非常恶心. 不知道这个效果器用意何在.
ParamEQ
也称Parametric Equalizer. 参数均衡器, 是Sonar里面的
这种Equalizer的弱化版, 一个效果器只允许调节一条曲线. 当然可以存在多个这样的效果器来实现Sonar里的Equalizer的效果.比如这样
就是降低高频并且提升低频的效果.
Pitch Shifter听上去很有意思. 这个更改Pitch的操作与更改Group总体的Pitch的操作的原理不同, 因为更改Group总体的Pitch直接等于修改播放速度了, 通过加快速度来提升音高或者通过降低速度来减低音高. 而Pitch Shifter可以在播放速度不变的情况下改变音高, 也不愧需要消耗这么多CPU资源了(选中Group在Inspector视图点击齿轮图标可以看到显示CPU消耗的选项). 一个男声变成女声, 或者一个女声变成男声. 很好玩.
Chorus虽说是合唱效果器, 但是当前版本中完全没有达到正常音序器的合唱效果器的水准. 怎么说呢, 希望加强吧.
Compressor降低信号中音量最大的部分.
SFX Reverb混响效果, 还不错.
Low Pass Simple低通滤波器简化版.
High Pass Simple高通滤波器简化版.
unity5.0新功能的更多相关文章
- unity5.0新功能-布料、动画系统
原作者:只待苍霞 这一章讲一下布料系统, 这次的布料系统有很大的改良.Unity4中, 需要对SkinnedMeshRenderer使用SkinnedCloth, 或者对Cloth Renderer使 ...
- VS2015预览版中的C#6.0 新功能(二)
VS2015预览版中的C#6.0 新功能(一) VS2015预览版中的C#6.0 新功能(三) 自动属性的增强 只读自动属性 以前自动属性必须同时提供setter和getter方法,因而只读属性只能通 ...
- VS2015预览版中的C#6.0 新功能(三)
VS2015预览版中的C#6.0 新功能(一) VS2015预览版中的C#6.0 新功能(二) Using static 使用using StaticClass,你可以访问StaticClass类里的 ...
- VS2015预览版中的C#6.0 新功能(一)
VS2015预览版中的C#6.0 新功能(二) VS2015预览版中的C#6.0 新功能(三) VS2015的预览版在11月12日发布了,下面让我们来看看C#都提供了哪些新的功能. 字符串添写(Str ...
- REDGATE SQLPROMPT 6.0新功能
原文:REDGATE SQLPROMPT 6.0新功能 REDGATE SQLPROMPT 6.0新功能 下载地址:http://files.cnblogs.com/lyhabc/SQLPrompt6 ...
- Unity User Group 北京站:《Unity5.6新功能介绍以及HoloLens开发》
时间一转眼从春天来到了初夏,Unity User Group(以下简称UUG)活动也迎来了第七期.我们面向Unity3D开发从业者以及未来想从事Unity3D开发的学生群体的UUG活动这次仍然在海淀 ...
- Eviews 9.0新功能——估计方法(ARDL、面板自回归、门限回归)
每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 9.2 估计功能 eviews9.0下载链接: ...
- Redis 4.0新功能介绍
Redis 的作者 antirez 在三天之前通过博客文章<The first release candidate of Redis 4.0 is out>发布了 Redis 4.0 的第 ...
- ASP.NET Core 2.0 新功能汇总
前言 ASP.NET Core 的变化和发展速度是飞快的,当你发现你还没有掌握 ASP.NET Core 1.0 的时候, 2.0 已经快要发布了,目前 2.0 处于 Preview 1 版本,意味着 ...
随机推荐
- loss function与cost function
实际上,代价函数(cost function)和损失函数(loss function 亦称为 error function)是同义的.它们都是事先定义一个假设函数(hypothesis),通过训练集由 ...
- 修改Windows Server 2008+IIS 7+ASP.NET默认连接限制,支持海量并发连接数
WIN7中IIS7默认配置的服务器同时最多只能处理5000个请求,如果由于某些情况(程序问题等)造成同时请求超过5000时,将会导致服务器错误.为此,修改服务器的设置,从而支持10万个同时请求. 具体 ...
- va_copy
#include <stdio.h> #include <stdarg.h> void func(char* format, va_list ptr); void print( ...
- dubbo-admin和dubbo-monitor-simple的布署
dubbo-admin 把dubbo-admin的war包解压到tomcat或者jetty的ROOT目录下,启动就可以访问了(自己配置tomcat的端口) wget http://code.aliba ...
- Button--防止button多次点击
================================= //代码2 public abstract class NoDoubleClickListener implements OnCli ...
- java安全沙箱(二)之.class文件检验器
java是一种类型安全的语言,它有四类称为安全沙箱机制的安全机制来保证语言的安全性,这四类安全沙箱分别是: 类加载体系 .class文件检验器 内置于Java虚拟机(及语言)的安全特性 安全管理器及J ...
- Hyper-v之利用差异磁盘快速创建多个虚拟机
在新建Hyper-v磁盘的时候 有3种选项 其中分别是 固定大小 动态扩展 和 差异(differencing,个人习惯叫 差分) 其中 固定大小是新建的时候 Hyper-v创建一个设置大小值的文件, ...
- boost asio tcp server 拆分
从官方给出的示例中对于 boost::asio::ip::tcp::acceptor 类的使用,是直接使用构造函数进行构造对象,这一种方法用来学习是一个不错的方式. 但是要用它来做项目却是不能够满足我 ...
- ZOJ 3481. Expand Tab
题目:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4278 题意: 给出一些文本片段,把文本中的 Tab 字符根据配置,替换成 ...
- 英语学习app分析
以下数据分析由队员张波收集整理队员链接 队友的博客 一.数据统计 为了让统计数据更加准确可信,我们选取了三款android平台的应用市场软件作为数据的来源. 英语学习app下载量统计表: 序号 应用名 ...