VR開發(fā)教程:Unity開發(fā)VR眼鏡中文入門教程七

優(yōu)化Unity中的VR

簡介

為確保用戶有極棒,無惡心的虛擬現(xiàn)實(shí)體驗(yàn),而達(dá)到推薦幀率,優(yōu)化是很關(guān)鍵的一個(gè)部分.因?yàn)楝F(xiàn)在VR硬件剛剛起步,所以要盡可能多的在硬件設(shè)備上進(jìn)行測(cè)試.

VR相對(duì)于非VR項(xiàng)目的主要不同點(diǎn)就是它要為每只眼睛渲染一次圖像,當(dāng)你了解這一點(diǎn),創(chuàng)建項(xiàng)目時(shí)圍繞它進(jìn)行相關(guān)優(yōu)化將節(jié)省大量的開發(fā)時(shí)間.

手機(jī)上的配置遠(yuǎn)比不上桌面級(jí)電腦硬件,所以在移動(dòng)設(shè)備上的VR做優(yōu)化是至關(guān)重要的.

當(dāng)然不要忘記要盡可能的優(yōu)化程序代碼,查看有關(guān)代碼優(yōu)化更詳細(xì)的指導(dǎo):”docs.unity3d.com/Manual/MobileOptimizationPracticalScriptingOptimizations.html”.

OCULUS 資源

在Oculus網(wǎng)站上有大量的資源文檔,非常值得你去看:

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 編輯器優(yōu)化工具

在Unity中有一些很有用的工具和技術(shù),有助于您優(yōu)化VR游戲內(nèi)容.

Profiler

Profiler可以幫你了解每一幀渲染的時(shí)間,并且將其拆分為CPU,渲染,內(nèi)存,音頻,物理和網(wǎng)格.通過使用Profiler檢查性能消耗從而針對(duì)性的優(yōu)化.更多關(guān)于Profiler的使用請(qǐng)參閱這些鏈接:

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 調(diào)試器

Frame調(diào)試器步進(jìn)式的查看每幀Draw Call,看每幀是如何構(gòu)造出眼前的場(chǎng)景的,確定哪些可以優(yōu)化,哪些是不需要的東西,這將大大有助于減少Draw Call.

更多Frame 調(diào)試器的信息請(qǐng)參閱下列鏈接:

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

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

VR優(yōu)化原理

雖然優(yōu)化是個(gè)巨大的門類,每個(gè)平臺(tái),每個(gè)需求都會(huì)有不同的優(yōu)化方法.

現(xiàn)有的優(yōu)化技術(shù)可以很好的用于VR項(xiàng)目開發(fā)優(yōu)化

Geometry

移除VR中任何看不到的三角形,比如如果用戶看不到后背,納悶我們完全可以把角色模型后背的三角面和貼圖刪除優(yōu)化掉.另外根據(jù)目標(biāo)平臺(tái),試著添加一些細(xì)節(jié)紋理,比如視差貼圖等,雖然這會(huì)影響到性能,但是也許它非常適合在特定的目標(biāo)平臺(tái).

Overdraw

Overdraw視圖讓你可以了解什么對(duì)象被繪制在了另一個(gè)對(duì)象上面,這種無謂的渲染會(huì)浪費(fèi)GPU渲染時(shí)間,通過場(chǎng)景視圖中(docs.unity3d.com/Manual/ViewModes.html)開啟Overdraw模式查看場(chǎng)景中的覆蓋情況.

普通視圖模式:

Overdraw 模式:

Level of Detail

Level Of Detail (LOD) 可以讓你根據(jù)模型物體與相機(jī)的距離動(dòng)態(tài)的切換物體三角形面數(shù),只要你的模型距離相機(jī)有一定距離,LOD會(huì)顯示一個(gè)低面數(shù)的模型來減少對(duì)硬件的負(fù)載,提升渲染性能.

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

Draw Call batching

盡可能的將Batch Draw Call,使用

Static Batching 和 Dynamic Batching會(huì)大大提高性能.詳見Unity手冊(cè)

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

Lightmapping

減少動(dòng)態(tài)光照使用,增加烘焙照明,避免實(shí)時(shí)光影,詳見

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) 可以讓烘焙光照的場(chǎng)景中動(dòng)態(tài)對(duì)象的動(dòng)態(tài)光照實(shí)現(xiàn)出來,這個(gè)運(yùn)算很快,但是經(jīng)常會(huì)有很大視覺效果提升.

Reflection Probes

Reflection probes (docs.unity3d.com/Manual/class-ReflectionProbe.html) 會(huì)根據(jù)場(chǎng)景位置將環(huán)境貼圖存儲(chǔ)于Cubemaps中,來增加環(huán)境反射貼圖的真實(shí)性,但是實(shí)時(shí)反射在VR中會(huì)很慢.

Occlusion Culling

Occlusion Culling (docs.unity3d.com/Manual/OcclusionCulling.html)能禁止對(duì)看不到的場(chǎng)景渲染,例如一扇門關(guān)閉時(shí),我們不想讓門那邊的另外房間渲染,就可以使用它.使用它可以顯著提升性能.

沒有進(jìn)行遮擋裁切的示例:

使用了遮擋裁切的示例:

Anti-Aliasing

Anti-Aliasing 抗鋸齒在VR中是很有用的,因?yàn)樗兄谄交瑘D像,減少鋸齒狀邊緣.如果你是用了 Forward Rendering, 你可以在畫質(zhì)設(shè)置中起啟用MSAA(docs.unity3d.com/Manual/class-QualitySettings.html),你也應(yīng)該在Gear VR中啟用它來提升效果.

在Deferred Rendering時(shí),你可以用圖像腳本(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)把場(chǎng)景中的貼圖整合起來以盡可能的減少材質(zhì)球數(shù)量.

我們也可以用MeshBaker (https://www.assetstore.unity3d.com/en/#!/content/5017)簡化加快這一優(yōu)化過程.Meshbaker可以用來烘焙紋理,網(wǎng)格,材質(zhì)來優(yōu)化游戲性能.

詳見下面鏈接:

用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)決定項(xiàng)目中畫質(zhì)的各個(gè)方面,改變這些屬性可以提高游戲性能,但是會(huì)犧牲視覺效果.

RenderScale

VRSettings.renderScale(docs.unity3d.com/ScriptReference/VR.VRSettings-renderScale.html)渲染比將改變圖像銳度,可以用來提高畫質(zhì)或者降低畫質(zhì)提升幀率.

Asynchronous Loading

如果把游戲拆分成若干個(gè)單獨(dú)的場(chǎng)景,在加載時(shí),為了避免畫面凍結(jié)導(dǎo)致惡心不適感,建議使用異步加載來載入下一個(gè)場(chǎng)景數(shù)據(jù):SceneManager.LoadSceneAsync(docs.unity3d.com/ScriptReference/SceneManagement.SceneManager.LoadSceneAsync.html)

轉(zhuǎn)載自http://blog.1vr.cn

聯(lián)系方式:0755-81699111

課程網(wǎng)址: http://www.vrkuo.com/course/vr.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容