VR开发教程:Unity开发VR眼镜中文入门教程七

优化Unity中的VR

简介

为确保用户有极棒,无恶心的虚拟现实体验,而达到推荐帧率,优化是很关键的一个部分.因为现在VR硬件刚刚起步,所以要尽可能多的在硬件设备上进行测试.

VR相对于非VR项目的主要不同点就是它要为每只眼睛渲染一次图像,当你了解这一点,创建项目时围绕它进行相关优化将节省大量的开发时间.

手机上的配置远比不上桌面级电脑硬件,所以在移动设备上的VR做优化是至关重要的.

当然不要忘记要尽可能的优化程序代码,查看有关代码优化更详细的指导:”docs.unity3d.com/Manual/MobileOptimizationPracticalScriptingOptimizations.html”.

OCULUS 资源

在Oculus网站上有大量的资源文档,非常值得你去看:

https://developer.oculus.com/documentation/

http://static.oculus.com/sdk-downloads/documents/Oculus_Best_Practices_Guide.pdf

https://developer.oculus.com/blog/squeezing-performance-out-of-your-unity-gear-vr-game/

https://developer.oculus.com/blog/squeezing-performance-out-of-your-unity-gear-vr-game-continued/

UNITY 编辑器优化工具

在Unity中有一些很有用的工具和技术,有助于您优化VR游戏内容.

Profiler

Profiler可以帮你了解每一帧渲染的时间,并且将其拆分为CPU,渲染,内存,音频,物理和网格.通过使用Profiler检查性能消耗从而针对性的优化.更多关于Profiler的使用请参阅这些链接:

http://docs.unity3d.com/Manual/Profiler.html

https://unity3d.com/learn/tutorials/modules/beginner/live-training-archive/profiler-overview

https://unity3d.com/learn/tutorials/modules/intermediate/editor/intro-to-profiler

Frame 调试器

Frame调试器步进式的查看每帧Draw Call,看每帧是如何构造出眼前的场景的,确定哪些可以优化,哪些是不需要的东西,这将大大有助于减少Draw Call.

更多Frame 调试器的信息请参阅下列链接:

http://docs.unity3d.com/Manual/FrameDebugger.html

https://unity3d.com/learn/tutorials/modules/intermediate/graphics/frame-debugger

VR优化原理

虽然优化是个巨大的门类,每个平台,每个需求都会有不同的优化方法.

现有的优化技术可以很好的用于VR项目开发优化

Geometry

移除VR中任何看不到的三角形,比如如果用户看不到后背,纳闷我们完全可以把角色模型后背的三角面和贴图删除优化掉.另外根据目标平台,试着添加一些细节纹理,比如视差贴图等,虽然这会影响到性能,但是也许它非常适合在特定的目标平台.

Overdraw

Overdraw视图让你可以了解什么对象被绘制在了另一个对象上面,这种无谓的渲染会浪费GPU渲染时间,通过场景视图中(docs.unity3d.com/Manual/ViewModes.html)开启Overdraw模式查看场景中的覆盖情况.

普通视图模式:

Overdraw 模式:

Level of Detail

Level Of Detail (LOD) 可以让你根据模型物体与相机的距离动态的切换物体三角形面数,只要你的模型距离相机有一定距离,LOD会显示一个低面数的模型来减少对硬件的负载,提升渲染性能.

用Simplygon(https://www.assetstore.unity3d.com/en/#!/content/10144) 插件可以自动化处理模型的LOD.

Draw Call batching

尽可能的将Batch Draw Call,使用

Static Batching 和 Dynamic Batching会大大提高性能.详见Unity手册

Draw Call Batching(docs.unity3d.com/Manual/DrawCallBatching.html).

Lightmapping

减少动态光照使用,增加烘焙照明,避免实时光影,详见

avoid realtime shadows(https://twitter.com/ID_AA_Carmack/status/592385473894461441)和  Lighting and Rendering(unity3d.com/es/learn/tutorials/modules/beginner/graphics/lighting-and-rendering) .

Light Probes

Light probes (docs.unity3d.com/Manual/LightProbes.html) 可以让烘焙光照的场景中动态对象的动态光照实现出来,这个运算很快,但是经常会有很大视觉效果提升.

Reflection Probes

Reflection probes (docs.unity3d.com/Manual/class-ReflectionProbe.html) 会根据场景位置将环境贴图存储于Cubemaps中,来增加环境反射贴图的真实性,但是实时反射在VR中会很慢.

Occlusion Culling

Occlusion Culling (docs.unity3d.com/Manual/OcclusionCulling.html)能禁止对看不到的场景渲染,例如一扇门关闭时,我们不想让门那边的另外房间渲染,就可以使用它.使用它可以显著提升性能.

没有进行遮挡裁切的示例:

使用了遮挡裁切的示例:

Anti-Aliasing

Anti-Aliasing 抗锯齿在VR中是很有用的,因为它有助于平滑图像,减少锯齿状边缘.如果你是用了 Forward Rendering, 你可以在画质设置中起启用MSAA(docs.unity3d.com/Manual/class-QualitySettings.html),你也应该在Gear VR中启用它来提升效果.

在Deferred Rendering时,你可以用图像脚本(docs.unity3d.com/420/Documentation/Components/script-AntialiasingAsPostEffect.html)或看论坛上启用SMAA的例子:”https://github.com/Chman/SMAA-Unity”.

Textures

一般情况下,可以用  Texture Atlasing (https://en.wikipedia.org/wiki/Texture_atlas)把场景中的贴图整合起来以尽可能的减少材质球数量.

我们也可以用MeshBaker (https://www.assetstore.unity3d.com/en/#!/content/5017)简化加快这一优化过程.Meshbaker可以用来烘焙纹理,网格,材质来优化游戏性能.

详见下面链接:

用MeshBaker的视频教程(https://www.youtube.com/watch?v=9vZ8SfXOlpI)

Oculus渲染文档

https://developer.oculus.com/doc ... s/bp_app_rendering/)

Shaders

尽量使用Basic着色器,在Gear VR中,推荐使用”Mobile > Unlit (Supports Lightmap) shader”.

Fullscreen Effects

Fullscreen effects(docs.unity3d.com/Manual/comp-ImageEffects.html)是非常消耗资源的,在GearVR上要尽可能避免使用.

Quality Settings

Quality Settings(docs.unity3d.com/Manual/class-QualitySettings.html)决定项目中画质的各个方面,改变这些属性可以提高游戏性能,但是会牺牲视觉效果.

RenderScale

VRSettings.renderScale(docs.unity3d.com/ScriptReference/VR.VRSettings-renderScale.html)渲染比将改变图像锐度,可以用来提高画质或者降低画质提升帧率.

Asynchronous Loading

如果把游戏拆分成若干个单独的场景,在加载时,为了避免画面冻结导致恶心不适感,建议使用异步加载来载入下一个场景数据:SceneManager.LoadSceneAsync(docs.unity3d.com/ScriptReference/SceneManagement.SceneManager.LoadSceneAsync.html)

转载自http://blog.1vr.cn

联系方式:0755-81699111

课程网址: http://www.vrkuo.com/course/vr.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容