通过MAX制作,AE的合成,实现2D特效的完美配合,这其中会涉及到特效的一个较强的节奏感,并且熟练的运用到光效的效果,例如golw,shine等,让我们能自己独立制作2D场景,道具,技能的特效然后结合各自辅助,插件,来实现更加高端的2D特效的表现方法。三维游戏学习则是学习游戏引擎技术,主要涉及到粒子的运用,并且结合3DMAX,来实现模型的导入,动画的创建等,熟练掌握游戏3D引擎粒子特效的制作,并且结合unity的shader以及材质UV的变换,来实现一些高端的3D特效的表现手法。
在这一节中,我想要探讨一下究竟那些官方自营或者官方推荐的第三方插件能够给Gaia原生场景带来多大的画面效果提升。
新建一个项目,仅安装Gaia。直接使用Session Manager执行自带的“GS Example 4”,得到一个Gaia场景“River Island”。
简单烘焙下灯光,将摄影机移动到一个合适的位置,可以得到如下画面效果:
使用Gaia内置的功能添加Player、天空、水体、Post Processing等效果,并在GX面板中将Ambient Skies Samples的“Skies”设置成预设“Day”,执行一次“Bake Lighting”(这里为了尽快看到结果,可以禁用“Realtime Global Illumination”,并切换成“GPU Progressive”方式),将“Post Processing”设置成预设“Default Day”,得到的结果是这样的:
如果删除Post Processing,效果是这样的:
换一个角度,Gaia原生水体的表现是这样的(这里我关掉了Post Processing的Bloom和Lens Distortion):
下面我们安装Ambient Skies完整版。刚刚安装好的时候,在Gaia Manager中是看不到完整版的,需要先让Ambient Skies完成初始化(打开Ambient Skies的窗口直到能正常设置Ambient Skies为止)。
完成之后,Gaia Manager的GX栏中就是完整版的Ambient Skies了,Ambient Skies窗口也可以正常打开,但场景的光照发生了翻天覆地的变化。
在Ambient Skies窗口勾选上“Enable Skies”,将“Global Settings”中的“System Type”设置为“Ambient HDRI Skies”,然后在“Profile Settings”中选择任意“Skybox Profile”,就可以得到形态各异的天光照明效果了。
我们可以在“Skies”栏中调节关于阳光(Sun)、天空盒(Skybox)、环境光照(Ambient)、雾效(Fog)、阴影(Shadow)和水平线(Horizon)的相关参数,在“Post FX”栏中调整关于Post Processing的所有设置,在“Lighting”栏中进行灯光烘焙相关设置。基本上,Ambient Skies将所有与灯光和渲染相关的设置都集成到一起,非常非常的方便。
目前这个效果对我来说太“暗”了,所以我将Post FX中的Auto Exposure Settings中的Exposure Amount增加到1.5,效果是这样的:
另外,Post FX栏中还提供了很多预设好的Post Processing Profile供用户选择,非常的贴心。
下面是Sample版和完整版Ambient Skies的效果对比:
可以发现,完整版Ambient Skies从效果上来说比Sample版确实要好一些,但这种“好”并没有好到非买不可的程度。但从使用的方便性和可调整性上来说,完整版就好太多了。不仅提供了更多更多样化的预设Profile给用户选择,还将Unity有关于灯光和渲染的相关的设置都集中到了一个面板之中。这对于需要进行大量室外灯光设置的用户来说,是非常实用的。
Ambient Skies中并没有关于水的内容,我也没有找到完整版的Ambient Water插件,所以只能安装AQUAS 2020来试图获得更好的水体表现。
将场景中的Ambient Water Samples设置为“不激活”,使用AQUAS的“Setup Wizard”为场景添加AQUAS水体:
Unity的默认渲染管线是不支持体积光的,Ambient Skies也只能用雾效来模拟大气效果。想要真正的体积光效,只能选择使用HDRP或者比如Aura 2这样的第三方插件了。
安装好Aura 2之后,首先需要给相机和主光源上添加Aura相关组件,然后在Aura 2的面板中选择预设“Sunny Day”,就可以得到这样的效果了:
安装完CTS 2019之后,先关闭Aura 2的效果,并将Ambient Skies恢复成预设“Sky Five High”(也就是前面测试Ambient Skies完整版时使用的预设效果)。然后应用CTS 2019预装的“CTS_Profile_G6_Basic Warm”配置,得到如下效果:
简单地调整了一下(岩石贴图的重复度、法线强度、雪效果等等),恢复Aura 2的效果,重新应用“Sunny Day”预设,得到的画面效果如下:
下面是这一系列测试的渲染效果对比图:
通过这样的比较,应该不难发现,Gaia还是比较依赖其他各种第三方插件的。首先,CTS 2019几乎是“必须”的,否则根本没办法解决诸如贴图拉伸、雪地效果等问题;其次,Ambient Skies对Gaia场景表现的提升也很明显,而且Ambient Skies可以用于任何室外光照环境,很实用;第三,自带的Ambient Water Samples的效果只能说“一般”,如果场景有大量的水体,建议还是要弄一份AQUAS 2020的;最后,如果不使用HDRP的话,必须依赖Aura 2这样的第三方插件来获得体积光效果,而体积光效对于室外场景的表现有极大地帮助。
最后还想补充一点关于HDRP的问题。
Embient Sky对于HDRP支持得比较好,毕竟其实它也就是将灯光、渲染、后期、烘焙等相关内容整合到一个面板中然后再添加许多预设Profile嘛。
但Gaia本体就不太推荐使用HDRP了,它是支持HDRP的啦,但因为HDRP自己也是不断在更新,所以Gaia和最新版本的HDRP总有些不太契合的地方。另外,Gaia自带的Tree资源都是来自于SpeedTree(当然这也是大家的第一选择啦),但SpeedTree的材质并不支持HDRP,HDRP的自动转换工具目前也不能自动将SpeedTree材质升级为HDRP材质,所以用起来就比较麻烦了。
CTS 2019因为涉及到Shader的问题,对HDRP的支持是非常有限的,仅支持几个特定版本的HDRP,而且也都不是新版。这个问题估计只能等到HDRP比较成熟稳定之后才能解决吧,毕竟每个版本都追对于CTS的开发来讲也是挺浪费人力物力的。
优化的常规技巧n 剖析你的游戏。 不要花费时间来优化那些晦涩的代码或者缩减图形文件的大小,除非这是你游戏的瓶颈。第一次剖析你的游戏将会使你发现你游戏的瓶颈。Apple's Shark是一个很好的用来剖析基于OpenGL的程序的工具。
n 再次剖析你的游戏。 优化之后不要忘记再剖析一次你的游戏,这样可以检查你所做的优化是否达到了预期的效果。当然,这样做也可能会使你发现更多的瓶颈。
n 流程第一、性能第二。 花费时间来使你游戏的创建尽可能地流畅。尽可能快地修正游戏中的错误将会使你后期更容易优化你的游戏。
n 在Scene View中测试场景。 这样做将会使你清楚了解这个场景中的物体或者附加在物体上的脚本是否降低了游戏性能。如果Scene View反应迟钝,那么有可能是图形方面的原因,如果Scene View反应不迟钝,那么瓶颈可能出在脚本或者物理系统上。
n 禁用指定游戏物体。 在play模式下,尝试禁用并启用游戏物体来排查出游戏慢的原因。
n 如果可能的话,把相邻的物体(网格)合并为一个只有一个材质的物体(网格)。 比如,你的游戏中包含一个桌子,上面有一堆东西,你完全可以在3D程序中将它们合并在一起(这可能也需要你将这些物体的纹理合并为一个大的纹理集)。减少需要渲染的物体的数量可以极大地提高游戏性能。
n 不要有不必要的网格。 如果你的游戏场景中有一个人物,那么他应该是一个网格。如果你有一个船,那么它也应该只是一个网格。
n 每一个网格只用一种材质。
n 使用极少的面数的网格(比如500个多边形以下)。
n 最好把你人物的三角面数量控制在1500-2000个之间。 这个数量可以说是游戏质量和性能之间一个均衡值。如果你的模型有四边形,那么在导入模型的时候,引擎将会把每个四边形变为两个三角形。
光照
n 像素光。 像素光可以让你的游戏看起来效果很牛逼,但是不要使用过多的像素光。在你的游戏中可以使用质量管理器来调节像素光的数量来取得一个性能和质量的均衡点。
n 性能占用顺序:聚光灯>点光源>平行光。 一个好的点亮场景的方法就是先得到你想要的效果,然后看看哪些光更重要;在保持光效的前提下看看哪些光可以去掉。
n 点光源和聚光灯只影响它们范围内的网格。 如果一个网格处于点光源或者聚光灯的照射范围之外,并且光源的attenuate开关是打开的,那么这个网格将不会被光源所影响,这样就可以节省性能开销。这样做理论上来讲可以使用很多小的点光源而且依然能有一个好的性能,因为这些光源只影响一小部分物体。一个网格在有8个以上光源影响的时候,只响应前8个最亮的光源。
贴图
n 在外观不变的前提下,贴图大小越小越好。 如果你的显卡的显存不够大的话,你游戏中的贴图将会被转存到系统内存中,在显卡调用它们的时候再传到显卡中。对于比较新的电脑来说,内存和显卡之间有足够的带宽来达到一个很好的性能;如果你很无耻地用了巨多的大图片的话,在低显存的电脑上运行你的游戏的时候,你的游戏必然会挂掉。倒是没有必要在图形编辑软件中调整贴图的大小。你可以在unity导入贴图的时候进行调整。
n 不要使用低质量的图片。 在小播放界面的游戏中使用低质量的jpeg图片或者低色彩的png图片亦或是gif图片没什么问题。在发布游戏的时候,引擎会自动压缩这些图片,多重压缩和解压将会降低图片的质量,所以最好保持贴图文件的分辨率为原始分辨率。这样就会减少多重压缩和解压所导致的图片失真现象。
音频
n 使用.ogg格式的压缩音频文件。 所有其他的音频格式文件在发布时将会被转储为未压缩音频文件。
n 对于小音效使用未压缩音频文件。 Unity在运行过程中会解压所有的ogg文件。它会把经常播放的音效转储为WAV或者aiff格式的文件,这样就可以不用cpu总是解压这些文件了。比如快速的q声,脚步声和其他一些连续播放又很短小的音效。
物理
n 每一个刚体都需要大量运算,所以刚体越少越好。 当角速度和移动速度降低到某个临界值的时候,刚体将会进入休眠状态。当刚体进入休眠状态时,他们需要的运算量将会大量减少,但是会保留很少的一部分运算来随时应对外部的作用力或者物体的碰撞。
n 多重碰撞相比一个接一个地碰撞将会花费更多的运算。 比如一个球去碰一堆球所需要的计算量会远远大于去一个一个地碰这些球所需要的计算量。
Shaders
n 多重效果的shader就比看起来样式很单一的shader要更耗费资源。 同样在一个拥有贴图和光反射的物体上,使用VertexLit Diffuse shader无疑是最省资源的。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)