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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容