logo VIVEVR Rendering Performance
Tunning sareng Optimizations

Bubuka

Ngahontal pangalaman VR anu optimal dina hardware anu terbatas sumber daya mangrupikeun konci pikeun nganteurkeun pangalaman pangguna anu lancar sareng nyaman. Lamun laju pigura eusi rendering turun atawa teu stabil handap laju refresh alat, éta bakal ngakibatkeun pigura judder jeung stutting, panyakit gerak, jsb. tungtungna négatip mangaruhan pangalaman pamaké. Ku alatan éta, optimizing kinerja eusi pohara penting pikeun mastikeun hiji pangalaman nikmat.
Sateuacan ngamimitian tuning kinerja, hal anu penting pikeun ngarti dimana bottlenecks kinerja pikeun nyingkahan tunning teu episien. Dokumén ieu dirarancang pikeun ngabantosan pamekar ngaidentipikasi bottlenecks kinerja sareng nawiskeun solusi pikeun ngabéréskeun masalah kinerja rendering.
Dokumén dikelompokeun kana bagian-bagian ieu:

  • Bab 2: Identipikasi Bottleneck - Bagian ieu ngabantosan pamekar pikeun ngaidentipikasi dimana aya bottlenecks.
  • Bab 3 sareng 4: Setélan VIVE Wave sareng VIVE OpenXR - Bagian ieu ngagariskeun setélan khusus anu tiasa mangaruhan kinerja CPU/GPU pikeun aplikasi VIVE Wave sareng OpenXR. Pamekar tiasa ékspérimén sareng ngaktipkeun atanapi nganonaktipkeun fitur-fitur ieu dumasar kana bottlenecks kinerja anu dipanggihan pikeun nangtukeun naha aya perbaikan.
  • Bab 5: Optimasi Umum - Bagian ieu ngabagi sababaraha prakték sareng pangalaman optimasi umum.

Identipikasi Bottleneck

Nalika HMD pindah, upami aplikasi VR / MR ngagaduhan pigura jitter atanapi ujung hideung, sareng sajabana, éta biasana disababkeun ku masalah kinerja rendering anu goréng. Ilaharna, masalah kinerja rendering bisa categorized kana 2 jenis: CPU-kabeungkeut atawa GPU-kabeungkeut. Ngartos naon jinis kabeungkeut pikeun aplikasi anjeun penting pisan dina mimiti pikeun ngahindarkeun tunning anu teu cekap.
Dina bab ieu, kami nyadiakeun léngkah basajan nu ngidinan Anjeun pikeun gancang ngaidentipikasi dimana masalah kinerja.

2.1 Pariksa eusi Rendering FPS
Kahiji, urang mimitian ku mariksa eusi FPS anu jumlah pigura nu con eusi renders per detik. Eta kudu dijaga nepi ka framerate tampilan tur tetep stabil. Upami teu kitu, éta bisa ngabalukarkeun jitters pigura.
Upami SDK aplikasi anjeun nganggo VIVE WAVE SDK 6.0.0 atanapi engké, anjeun tiasa nganggo paréntah adb di handap ieu pikeun pariksa FPS. DK 6.0.0
$adb Logcat -s VRMetric
Anjeun bakal ningali data log di handap ieu.
VRMetric:FPS=89.8/89.8,CPU-27/1,GPU=72/3,GpuBd=0,LrCnt=1,2Stag=1,Pstat=2,AQ=1,FOVED=0/0, FSE=1,TWS-2,PT=0(0), RndrBK=0,GLTA=2D,EB=1720×1720
"FPS = 89.8 / 89.8" Jumlah kahiji ngagambarkeun FPS eusi, sedengkeun angka kadua ngagambarkeun framerate tampilan.
Upami versi Wave SDK anjeun sahandapeun 6.0.0, disarankeun pikeun ningkatkeun ka versi panganyarna pikeun ningkatkeun kinerja rendering sareng optimasi anu sanés.
Upami aplikasi anjeun SDK diwangun ku VIVE OpenXR. Anjeun tiasa nganggo paréntah adb di handap ieu pikeun mariksa FPS.
$adb Logcat -s RENDER_ATW
Anjeun bakal ningali data log di handap ieu
RENDER_ATW: [FPS] tékstur anyar: 90.00
RENDER_ATW: [FPS] Urang Sunda ayeuna: 90.00 skip: 0 317, -0.0155 0.805527, 0.006788)
RENDER_ATW: [FPS] L hadir: 90.00 skip: 0 (0.592301, -0.015502, 0.805539, 0.006773)

Jumlah handap "tekstur anyar" ngagambarkeun FPS ayeuna eusi. Jumlah handap "R hadir" jeung "L hadir" ngagambarkeun framerate tampilan.
Sakapeung, eusi FPS sareng framerate tampilan tiasa rada béda.
Pikeun example, dina kasus di luhur, 89.8 FPS bisa dianggap salaku 90 FPS.
Upami eusi FPS aplikasi konsistén langkung handap tina pigura tampilan atanapi tetep teu stabil, éta nunjukkeun masalah kinerja rendering. Ku alatan éta, lengkah saterusna nyaéta pikeun ngaidentipikasi naha bottleneck asalna tina CPU atanapi GPU.
2.2 Pariksa CPU jeung pamakéan GPU
Upami SDK aplikasi anjeun nganggo VIVE WAVE SDK 6.0.0 atanapi engké, anjeun tiasa nganggo paréntah adb di handap ieu pikeun pariksa FPS.
$adb logcat -s VRMetric
Anjeun bakal ningali data log di handap ieu.
VRMetric:FPS=89.8/89.8,CPU=27/1,GPU=72/3,GpuBd=0,LrCnt=1,2Stag=1,Pstat=2,AQ=1,FOVED=0 /0, FSE=1,TWS=2,PT=0(0),RndrBK=0,GLTA=2D,EB=1720×1720
Sakumaha anjeun tiasa tingali dina hasil log luhur, pamakéan CPU 27% sarta pamakéan GPU 72% Mun versi Wave SDK anjeun handap 6.0.0, eta disarankeun pikeun ningkatkeun ka versi panganyarna pikeun ngaronjatkeun kinerja Rendering jeung optimasi séjén.
Pikeun aplikasi VIVE OpenXR, anjeun tiasa nganggo paréntah di handap ieu pikeun pariksa pamakean CPU sareng GPU.
# dina linux / ubuntu
$ adb logcat | grep CPU_USAGE
# dina powershell
$ adb logcat | Pilih-String -Pola CPU_USAGE
Anjeun bakal ningali log di handap ieu
CPU Rata-rata. CPU0 CPU1 CPU2 CPU3 CPU4 CPU5 CPU6 CPU7 GPU CPU_USAGE [BEBAN] 25.67% 32.22% 25.29% 30.77% 29.35% 21.35% 22.09% 18.39% 24.14% 73 %
Lamun niténan yén FPS teu bisa ngajaga laju pigura tampilan sarta pamakéan GPU oge kacida luhurna, ilaharna ngaleuwihan 85%, anjeun tiasa nyobian nyaluyukeun resolusi Eyebuffer (bagian 3.1.2, bagian 4.1.2) pikeun nempo lamun eta ngaronjatkeun FPS. Lamun adjustment ieu ngakibatkeun hadé
kinerja, urang bisa disimpulkeun yen masalah ieu GPU-kabeungkeut tur museurkeun usaha optimasi urang sasuai.
Di sisi anu sanésna, upami nyaluyukeun Resolusi Eyebuffer henteu nyababkeun paningkatan kinerja anu nyata, bottleneck kamungkinan CPU-kabeungkeut, sareng urang kedah difokuskeun ngaoptimalkeun kinerja CPU.
Éta ogé mungkin yén aplikasi éta duanana CPU-kabeungkeut na GPU-kabeungkeut sakaligus. Dina kasus sapertos kitu, usaha optimasi kedah diterapkeun ka CPU sareng GPU pikeun ngahontal perbaikan kinerja anu saimbang.
2.3 GPU-kabeungkeut
Nalika aplikasi VR kabeungkeut GPU, éta hartosna GPU mangrupikeun bottleneck primér, sareng éta henteu tiasa ngiringan tungtutan rendering aplikasi. Pikeun ngirangan masalah kabeungkeut GPU, pertimbangkeun saran ieu:
Mimiti, paké alat profil sapertos RenderDoc atanapi Game Engine profiler (Unity Profiler, Unreal Insights) pikeun nganalisis dimana GPU nyéépkeun waktosna. Identipikasi operasi anu paling mahal sareng fokus kana ngaoptimalkeunana.
Pikeun Pamekar Asalna, anjeun tiasa nganggo RenderDoc pikeun ngaidentipikasi telepon mana anu nyababkeun beban GPU kaleuleuwihan.
Pikeun Unity Developer, anjeun tiasa nuturkeun Unity dokumen ieu atanapi nganggo RenderDoc pikeun nganalisis masalah kinerja rendering, sareng turutan dokuméntasi optimasi grafik Unity pikeun panduan pikeun ngaoptimalkeun aplikasi anjeun.
Pikeun Unreal Developer, anjeun tiasa nganggo GPU Visualizer atanapi nganggo RenderDoc pikeun nganalisis masalah kinerja rendering, sareng turutan Pedoman Kinerja Unreal pikeun panduan pikeun ngaoptimalkeun aplikasi anjeun.
Kadua, anjeun ogé tiasa nyobian nyaluyukeun fitur atanapi setélan Wave tinangtu pikeun ngirangan beban GPU.

  1. Atur Laju Refresh Tampilan langkung laun (bagian 3.1.1, bagian 4.1.1)
  2.  Saluyukeun Resolusi Eyebuffer (bagian 3.1.2, bagian 4.1.2), 14.1.1)
  3.  Coba ngaktipkeun Foveation (bagian 3.1.4, bagian 4.1.4).

Upami aplikasi anjeun ogé mangrupikeun aplikasi MR, anjeun ogé tiasa nyaluyukeun setélan Passthrough.

  1. Saluyukeun Kualitas Gambar Passthrough handap. (bagian 3.2.1)
  2. Saluyukeun Passthrough Framerate leuwih laun. (bagian 3.2.2).

Kanggo langkung seueur setélan ngeunaan kinerja GPU, anjeun tiasa ningali Bab 2.6.

2.4 CPU-kabeungkeut
Nalika aplikasi VR kabeungkeut CPU, éta hartosna CPU mangrupikeun hambatan utama, pertimbangkeun saran ieu:
Mimiti, nganggo alat profil sapertos Systrace atanapi Game Engine profiler (Unity Profiler, Unreal Insights) pikeun nganalisis sareng ngaidentipikasi bagian mana tina kode anjeun anu nganggo sumber daya CPU paling seueur. Fokus kana ngaoptimalkeun daérah-daérah ieu sareng refactor algoritma komputasi intensif pikeun ngirangan beban CPU.

  • Pikeun Pamekar Asli, anjeun tiasa nganggo Systrace pikeun profiler proyék Anjeun.
  • Pikeun Unity Developer, anjeun tiasa nganggo CPU Usage Profilemodul r pikeun manggihan masalah kinerja CPU.
  • Pikeun Unreal Developer, anjeun tiasa nganggo Unreal's Insights pikeun milarian masalah kinerja CPU.

Kadua, anjeun ogé tiasa nyobian nyaluyukeun fitur atanapi setélan Wave tinangtu pikeun ngirangan beban GPU.

  1. Atur Laju Refresh Tampilan langkung laun (bagian 3.1.1, bagian 4.1.1)
  2.  Ngagunakeun Multi-View Rendering (bagian 3.1.4, bagian 4.1.4)

Upami aplikasi anjeun ogé mangrupikeun aplikasi MR, anjeun ogé tiasa nyaluyukeun setélan Passthrough.

  1. Saluyukeun Passthrough Framerate laun (bagian 3.2.2).

Pikeun langkung seueur setélan ngeunaan kinerja CPU, anjeun tiasa ningali Bab 2.6.

2.5 Ihtisar
Tungtungna, kami parantos ngatur alur kerja pamariksaan kinerja di luhur kana Gambar 2-5-1. Mimitian ku mariksa FPS eusi. Upami éta langkung handap tina pigura tampilan atanapi tetep teu stabil, teras analisa pamakean GPU/CPU pikeun nangtukeun naha éta GPU-bound atanapi CPUbound. Anu pamungkas, ngagunakeun profiler pikeun ngaidentipikasi masalah kinerja poténsi atawa ngaluyukeun fitur Wave atawa setelan pikeun ngaoptimalkeun kinerja CPU.

Kinerja Rendering VIVE VR - Gbr 1

2.6 Rujukan Gancang Mana Setélan Bisa Ngaronjatkeun CPU / GPU loading

Daptar setélan SDK anu aya hubunganana sareng beban CPU / GPU sapertos di handap ieu. Anjeun tiasa dumasar kana bottleneck aplikasi pikeun pariksa setélan optimasi anu relevan.

Patali jeung CPU:

  • Setélan VIVE Wave SDK
    o Eusi VR
    ▪ 3.1.1 Pintonan Laju Anyarkeun
    ▪ 3.1.4 Multi-View Rendering
    ▪ 3.1.6 Kualitas Adaptif
    ▪ 3.1.7 Adaptive Motion Compositor
    o Eusi MR
    ▪ 3.2.2 Saluyukeun Passthrough Frame Rate
  • Setélan VIVE OpenXR SDK
    o Eusi VR
    ▪ 4.1.1 Pintonan Laju Anyarkeun
    ▪ 4.1.4 Multi-View Rendering
  • Optimasi umum
    o 5.5 CPU Spike

Patali jeung GPU:

  • Setélan VIVE Wave SDK
    o Eusi VR
    ▪ 3.1.1 Pintonan Laju Anyarkeun
    ▪ 3.1.2 Resolusi Eyebuffer
    ▪ 3.1.3 Multi-View Rendering
    ▪ 3.1.4 Foveation
    ▪ 3.1.5 Paningkatan Rautan Pigura (FSE)
    ▪ 3.1.6 Kualitas Adaptif
    ▪ 3.1.7 Adaptive Motion Compositor
    ▪ 3.1.8 Render Mask [Teu Ngadukung Teu Nyata] o Eusi MR
    ▪ 3.2.1 Saluyukeun Kualitas Passthrough
    ▪ 3.2.2 Saluyukeun Passthrough Frame Rate
  • Setélan VIVE OpenXR SDK
    o Eusi VR
    ▪ 4.1.1 Pintonan Laju Anyarkeun
    ▪ 4.1.2 Resolusi Eyebuffer
    ▪ 4.1.3 Multi-View Rendering
    ▪ 4.1.4 Foveation [Teu Ngadukung Teu Nyata] ▪ 4.1.5 Render Topeng [Teu Ngadukung Teu Nyata]
  • Optimasi umum
    o 5.1 Pareuman High Performance Mode
    o 5.2 Multisampling
    o 5.3 GMEM beban / Toko
    o 5.4 Lapisan Komposisi (Multi Lapisan)

Setélan Gelombang VIVE

VIVE Wave mangrupikeun platform sareng toolset kabuka anu ngamungkinkeun anjeun gampang ngembangkeun eusi VR sareng nyayogikeun optimasi alat anu berprestasi tinggi pikeun mitra pihak katilu. VIVE Wave ngadukung Unity sareng mesin kaulinan Unreal.
Kami terus-terusan ngaoptimalkeun sareng ngabéréskeun sagala rupa bug, ku kituna kami nyarankeun tetep SDK diropéa.
Ayeuna, VIVE Wave ngan ukur ngadukung OpenGL ES. Di dieu daptar fitur maréntahkeun ku pangaruh kana kinerja GPU. Urang bakal ngabagi ieu kana dua bagian: eusi VR sareng eusi MR.
3.1 Eusi VR
3.1.1 Témbongkeun Laju Anyarkeun

Laju refresh anu langkung luhur nawiskeun visual anu langkung lancar, tapi biayana ningkat beban sistem. Sabalikna, laju refresh handap ngurangan beban sistem, tapi hasilna visuals kirang lemes. Upami App ngagaduhan masalah kabeungkeut CPU / GPU, anjeun tiasa nyobian ngirangan tingkat refresh tampilan pikeun ngirangan masalah.

  • Pikeun pamekar asli, tingal WVR_SetFrameRate.
  • Pikeun pamekar Unity, tingal pituduh ieu.
  • Pikeun pamekar Unreal, tingal pituduh ieu.

3.1.2 Resolusi Eyebuffer
Resoultion Eyebuffer nyaéta ukuran tékstur anu eusi App bakal renderd, tékstur rendered bakal dikintunkeun ka runtime pikeun ngalakukeun prosés posting na hadir dina tampilan HMD.
Nalika ukuran panyangga panon anu langkung ageung tiasa nyababkeun visual anu langkung jelas sareng langkung rinci, tapi éta ogé nyababkeun beban anu signifikan dina GPU. Ku alatan éta, manggihan kasaimbangan katuhu antara kualitas visual jeung kinerja penting.
Upami App ngagaduhan masalah GPU, anjeun tiasa nyobian ngirangan ukuran eyebuffer ku cara ngalikeun faktor skala. Sanajan kitu, kami nyarankeun teu ngurangan faktor skala handap 0.7, sabab ieu bisa ngakibatkeun kualitas visual unacceptable.

  • Pikeun pamekar asli, tingal WVR_ObtainTextureQueue. Nalika nyaluyukeun ukuranana, anjeun kedah ngalikeun lebar sareng jangkungna ku rasio.
  • Pikeun pamekar Unity, tingal WaveXRSettings.
    Alternatipna, Anjeun bisa nyieun parobahan via kode salaku belwoe.
    XRSettings.eyeTextureResolutionScale = ResolutionScaleValue; // C#
  • Pikeun pamekar Unreal, tingal SetPixelDensity.

3.1.3 Multi-View Rendering
Dina rendering tradisional, urang ngagambar panon kénca jeung katuhu kapisah, nu merlukeun dua panggero draw pikeun adegan anu sarua. multi-View Rendering alamat masalah ieu ku ngajalankeun ngan hiji panggero draw.
Fitur ieu ngirangan beban CPU ku ngirangan jumlah telepon draw. GPU ogé ngagaduhan sababaraha kauntungan, beban kerja vertex shader ogé dikirangan sabab henteu kedah ngajalankeun shader tambahan pikeun panon anu sanés, tapi beban kerja fragmen shader tetep teu robih sabab masih kedah meunteun unggal piksel pikeun duanana panon. Kami nyarankeun pikeun ngaktipkeun fitur ieu.

  • Pikeun pamekar pribumi, anjeun tiasa ningali wvr_native_hellovr sample.
  • Pikeun pamekar Unity, tingal Mode Render, pass tunggal multi-view fitur.
  • Pikeun pamekar Unreal, tingal pituduh ieu.

3.1.4 Foveation
Foveated Rendering utamana dirancang pikeun ngurangan beban GPU. Ieu ngurangan jéntré pigura dina periferal of tampilan sarta ngajaga jéntré resolusi luhur di puseur widang view. Upami App ngagaduhan masalah GPU, anjeun tiasa nyobian ngaktifkeun rendering Foveation.

Kinerja Rendering VIVE VR - Gbr 2

Aya hal anu kedah diperhatoskeun nalika nganggo foveation:

➢ Pamaké biasana henteu perhatikeun detil anu ngirangan di daérah periferal anu nerapkeun modeu foveation standar. Tapi lamun kualitas periferal foveation diatur teuing low, éta bisa jadi noticeable ka pamaké.
➢ Balukar foveation tiasa langkung katingali ku bahan tékstur anu tangtu, anu tiasa narik perhatian pangguna. Pamekar kedah sadar ieu sareng ngévaluasi éta sasuai.
➢ Aktipkeun fitur rendering foveated merlukeun biaya kinerja GPU tetep, nu bisa rupa-rupa antara 1% nepi ka 6% gumantung kana ukuran panyangga panon. Lamun make shader basajan dina adegan, gain kinerja ti nyimpen sumberdaya bisa jadi leuwih handap biaya kinerja GPU tetep, hasilna turun kinerja.

  • Pikeun pamekar asli, tingal pituduh ieu.
  • Pikeun pamekar Unity, tingal pituduh ieu. Utamana, nalika anjeun ngaktipkeun pos-processing atanapi HDR, foveation teu tiasa dimangpaatkeun sapinuhna. Kusabab Unity bakal ngajadikeun obyék kana tékstur rendering sorangan, tinimbang tékstur rendering runtime-generate present anu ngadukung foveation.
  • Pikeun pamekar Unreal, tingal pituduh ieu. Utamana, foveation teu tiasa dianggo sapinuhna dina Multi-View Rendering, sabab Unreal teu tiasa langsung ngajantenkeun objék kana tékstur rendering runtime anu ngadukung foveation.

3.1.5 Paningkatan Rautan Pigura (FSE)
FSE nyadiakeun hasil ngasah rendering ngaliwatan ngawanohkeun sharpen filter, éta bisa nyieun eusi leuwih jelas tur jadi rada mantuan pikeun ngaronjatkeun kajelasan téks dina adegan. Upami App ngagaduhan masalah GPU, anjeun tiasa mertimbangkeun nganonaktipkeun FSE upami henteu penting.

Kinerja Rendering VIVE VR - Gbr 3

  • Pikeun pamekar asli, tingal pituduh ieu.
  • Pikeun pamekar Unity, tingal pituduh ieu.
  • Pikeun pamekar Unreal, tingal pituduh ieu.

3.1.6 Kualitas adaptif
Pikeun ngahemat batré sareng ngajaga kinerja rendering alat, fitur ieu otomatis nyaluyukeun tingkat kinerja jam CPU/GPU dumasar kana panggunaanana. Salaku tambahan, strategi sanésna tiasa dilaksanakeun pikeun ningkatkeun kinerja, sapertos otomatis ngaktifkeun / nganonaktipkeun Foveation atanapi kontén tiasa nyaluyukeun diri upami nampi acara beban tinggi / rendah.

  • Pikeun pamekar asli, tingal pituduh ieu.
  • Pikeun pamekar Unity, tingal pituduh ieu. Dina plugin Unity urang, ukuran panyangga panon bisa otomatis disaluyukeun dumasar kana kinerja ayeuna; Ukuran téks bakal nyaring nilai skala anu leutik teuing dina daptar Resolusi. Kami nyarankeun téks ukuran sahenteuna 20 dmm atanapi langkung ageung.
  • Pikeun pamekar Unreal, tingal pituduh ieu.

3.1.7 Adaptive Motion Compositor
Fitur ieu mangrupikeun fitur ékspérimén anu kalebet UMC sareng PMC. UMC bakal ngurangan Frame Rate ku satengah na extrapolate pigura anyar sacara real waktu pikeun ngajaga smoothness visual. Sanajan kitu, eta hadir kalawan sababaraha latency, artefak jeung GPU loading.
PMC utamana ngagunakeun Depth panyangga pikeun ngidinan ATW akun pikeun tarjamahan HMD, ngalegaan ka santunan 6-dof. Fitur ieu tiasa ngirangan latency tarjamahan ku 1~2 pigura, tapi ningkatkeun beban GPU.

  • Pikeun pamekar asli, tingal pituduh ieu.
  • Pikeun pamekar Unity, tingal pituduh ieu.
  • Pikeun pamekar Unreal, tingal pituduh ieu.

3.1.8 Topeng Render [Teu Ngadukung Teu Nyata]
Piksel di tepi janten ampir teu katingali saatos distorsi, masker render ngarobih nilai panyangga jero tina piksel anu teu katingali ieu. Upami anjeun ngaktifkeun uji jero, kusabab awal-z, piksel anu teu katingali ieu moal ditingalikeun, ku kituna ngirangan beban GPU. fitur ieu mangpaat lamun aya beurat-loading objék Rendering di wewengkon halimunan ieu; sabalikna, lamun euweuh objék Rendering di wewengkon ieu, dianjurkeun pikeun nganonaktipkeun sabab bakal meakeun hiji pamakéan GPU leutik.

  • Pikeun pamekar asli, tingal pituduh ieu. Anjeun kedah ngabeungkeut panyangga jero sateuacan nelepon RenderMask; disebutkeun, eta bakal jadi teu epektip.
  • Pikeun pamekar Unity, tingal pituduh ieu.
  • Pikeun pamekar Unreal, ayeuna henteu ngadukung fitur Render Mask.

3.2 Eusi MR
3.2.1 Saluyukeun Kualitas Passthrough
Aya 3 tingkat pikeun kualitas gambar passthrough:
➢ WVR_PassthroughImageQuality_DefaultMode – cocog pikeun eusi MR tanpa paménta husus.
➢ WVR_PassthroughImageQuality_PerformanceMode - cocog pikeun eusi MR anu peryogi langkung seueur sumber GPU pikeun rendering pamandangan virtual.
➢ WVR_PassthroughImageQuality_QualityMode - cocog pikeun eusi MR anu ngamungkinkeun pamaké ningali lingkungan sabudeureun kalawan jelas, tapi adegan maya eusi kudu boga tuning leuwih hade kinerja.
Anjeun tiasa nyaluyukeun kualitas Passthrough ka PerformanceMode pikeun ngurangan pamakean GPU.

  • Pikeun pamekar Native, Uunity atanapi Unreal, tingal pituduh ieu.

3.2.2 Saluyukeun Passthrough Frame Rate
Sapertos tingkat refresh Display, framerate Passthrough anu langkung luhur nawiskeun visual anu langkung lancar, tapi biayana ningkat beban sistem. Sabalikna, laju refresh handap ngurangan beban sistem, tapi hasilna visuals kirang lemes. Aya 2 modeu passthrough framerate: Boost sareng Normal.

  • Pikeun pamekar asli, tiasa nyaluyukeun kualitas passthrough nganggo WVR_SetPassthroughImageRate.
  • Pikeun pamekar Unity, bisa ngarobah via kode, exampSetélan nyaéta kieu // C#
    Interop.WVR_SetPassthroughImageQuality(WVR_PassthroughImageQuality.PerformanceMode);
  • Pikeun pamekar Unreal, metoda setelan tingali titik blueprint dina Gambar 3-2-2.

Kinerja Rendering VIVE VR - Gbr 4

Setélan VIVE OpenXR

OpenXR mangrupikeun standar terbuka anu nyayogikeun sakumpulan API umum pikeun ngembangkeun aplikasi XR anu ngajalankeun sajumlah alat VR, dikembangkeun ku Khronos Group. VIVE Focus 3 sareng VIVE XR Elite ogé ngadukung OpenXR, VIVE OpenXR SDK nyayogikeun dukungan komprehensif pikeun alat HTC VR, ngamungkinkeun para pamekar ngawangun Allin-One sareng eusi sareng Unity sareng mesin Unreal dina alat HTC VR. Kami terus-terusan ngaoptimalkeun sareng ngabéréskeun sagala rupa bug, ku kituna disarankeun yén pamekar ngapdet versi FOTA alatna pikeun tetep diropéa. Ayeuna, VIVE OpenXR SDK ngadukung OpenGL ES sareng Vulkan.

4.1 Eusi VR
4.1.1 Témbongkeun Laju Anyarkeun
Konsep di dieu téh sarupa jeung 3.1.1 Tampilan Refresh Rate.

  • Pikeun pamekar asli, tingal XrEventDataDisplayRefreshRateChangedFB.
  • Pikeun pamekar Unity, tingal pituduh ieu.
  • Pikeun pamekar Unreal, tingal pituduh ieu.

4.1.2 Resolusi Eyebuffer
Konsep di dieu téh sarupa jeung 3.1.2 Resolusi Eyebuffer. kami nyarankeun teu ngurangan faktor skala handap 0.7, sabab ieu bisa ngakibatkeun kualitas visual unacceptable.

  • Pikeun pamekar asli, tingal xrCreateSwapchain. Nalika nyaluyukeun ukuranana, anjeun kedah ngalikeun lebar sareng jangkungna ku rasio. ,
  • Pikeun pamekar Unity, tingal ex di handap ieuampjeung // C#
    XRSettings.eyeTextureResolutionScale = 0.7f; //disarankeun 1.0f~0.7f
  • Pikeun setelan Unreal, tingal pituduh ieu.

4.1.3 Multi-View Rendering
Konsep di dieu téh sarupa jeung 3.1.3 Multi-View Rendering. fitur ieu ngurangan beban dina CPU, GPU ogé boga sababaraha kauntungan. Kami nyarankeun pikeun ngaktipkeun fitur ieu.

  • Pikeun pamekar asli, KhronosGroup nyayogikeun OpenXR Multi-View example, tingal pituduh ieu.
  • Pikeun pamekar Unity, tingal Mode Render, pass tunggal multi-view fitur.
  • Pikeun pamekar Unreal, sakumaha sareng setelan VIVE Wave, tingal pituduh ieu.

4.1.4 Foveation [Teu Ngadukung Teu Nyata]
Konsep di dieu téh sarupa jeung 3.1.4 Foveation. Foveated rendering utamana dirancang pikeun ngurangan beban GPU tapi sangkan eta bakal ngahasilkeun ongkos kinerja GPU tetep sarta lamun foveation disetel teuing low sarta bahan atawa tékstur tangtu dipaké, éta bisa jadi pisan.
noticeable ka pamaké. Ku alatan éta, éta sasaena pikeun ngaktipkeun atawa nganonaktipkeun fitur dumasar kana sarat husus Anjeun tur tinimbangan kinerja Ayeuna, fungsionalitas Foveated ngan dirojong di OpenGL ES on VIVE OpenXR SDK.

  • Pikeun pamekar Asalna, fitur ieu sadia, tapi ayeuna, euweuh examples disadiakeun.
  • Pikeun pamekar Unity, tingal pituduh ieu.
  • Pikeun pamekar Unreal, teu ngarojong fitur ieu di momen.

4.1.5 Topeng Render [Teu Ngadukung Teu Nyata]
Konsep di dieu téh sarupa jeung 3.1.8 Render Topeng.

  • Pikeun pamekar asli, paké XrVisibilityMaskKHR pikeun kéngingkeun Mesh. Saméméh rendering adegan, paké Mesh ieu pikeun ngeusian nilai panyangga jero saméméh rendering adegan.
  • Pikeun pamekar Unity, fitur Render Mask diaktipkeun sacara standar pikeun OpenGL ES, sareng tiasa ditumpurkeun ku kodeu ieu; Vulkan ayeuna henteu ngadukung fitur ieu. //C# UnityEngine.XR.XRSettings.occlusionMaskScale = 0.0f;
  • Pikeun pamekar Unreal, ayeuna henteu ngadukung fitur Render Mask.

4.2 Eusi MR
OpenXR ayeuna henteu ngadukung netepkeun Kualitas Passthrough sareng Frame Rate. Kami bakal terus ngaoptimalkeun sareng ngalereskeun fitur Passthrough, janten disarankeun yén pamekar ngapdet versi FOTA alat supados tetep diropéa.

Optimasi umum

5.1 Pareuman High Performance Mode
Pareuman "mode kinerja tinggi" bisa ngurangan ukuran tampilan alat, kukituna ngurangan pamakean GPU. Kakurangan nyaéta panurunan dina résolusi layar. Anjeun tiasa nyaimbangkeun kualitas sareng kinerja pikeun mutuskeun pikeun ngaktifkeunana.
Lokasi setelan pikeun VIVE Focus 3 dipidangkeun Gambar 5-1-1:

Kinerja Rendering VIVE VR - Gbr 5

Lokasi setelan pikeun VIVE XR Elite dipidangkeun Gambar 5-1-2:

Kinerja Rendering VIVE VR - Gbr 6

5.2 Multisampling Anti Aliasing
Multisampling mangrupikeun téknik anti-aliasing anu dianggo pikeun ngahaluskeun ujung anu bergerigi, biasana digancangan ku hardware, anu nyababkeun biaya kinerja GPU. Kami ngarékoméndasikeun teu nyetel MSAA leuwih luhur ti 2x sabab leuwih nilai hight bakal meakeun pamakéan gpu leuwih.

  • Pikeun pamekar asli, MSAA OpenGL ES exsample tiasa ngarujuk kana ieu; MSAA Vulkan exampler bisa ngarujuk kana ieu.
    Adreno GPU nyayogikeun ekstensi anu ngaoptimalkeun MSAA.
  • Pikeun pamekar Unity, tingal guild ieu.
  • Pikeun pamekar Unreal, tingal guild ieu. Unreal ogé parantos nyayogikeun anti-aliasing post processing, tingal guild ieu.

5.3 GMEM beban / Toko
Dina arsitéktur GPU Adreno, aya fitur dimana, nalika ngabeungkeut Target Render, upami Target Render henteu écés atanapi teu valid, unggal waktos rendering kajantenan, nilai-nilai dina Render Target dimuat kana Mémori Grafik, anu disebut GMEM Load. Lamun nilai saméméhna teu diperlukeun, jelas atanapi invalidate Render Target befaure Rendering, bisa nyingkahan kaayaan ieu pikeun ngaronjatkeun kinerja GPU.
Anjeun tiasa ngahindarkeun beban GMEM nganggo metodeu ieu. Dina OpenGL ES, saatos ngabeungkeut FBO, anjeun tiasa nyauran glClear sareng glClearDepth pikeun mupus panyangga Warna, Jerona, sareng Sténcil, atanapi nelepon glInvalidateFramebuffer pikeun ngabatalkeun Target Render anu ditangtukeun. Dina Vulkan, parentah tambahan henteu diperlukeun; Anjeun sacara eksplisit tiasa nyetél naha mupus kantétan sateuacan dianggo dina VkAttachmentDescription.loadOp.
Nya kitu, nyimpen hasil Tile Render deui ka Mémori Utama ti Mémori Grafika disebut GMEM Store; operasi ieu ogé mahal pikeun GPU. Pikeun ngahindarkeun ieu, kami nyarankeun ngariung ngan ukur Target Render anu diperyogikeun pikeun nyegah operasi Toko anu teu perlu.

5.4 Lapisan Komposisi (Multi Lapisan)
Tékstur anu ditampilkeun nganggo Multi-Layer gaduh kualitas visual anu langkung saé. Tapi, fitur ieu sacara signifikan ningkatkeun kinerja GPU kalayan jumlah lapisan sareng ukuran tékstur. Kami ngarékoméndasikeun henteu langkung ti tilu lapisan.

  • Pikeun pamekar pribumi,
    o VIVE Wave SDK ngagunakeun WVR_SubmitFrameLayers pikeun ngalirkeun data pikeun tiap lapisan.
    o VIVE OpenXR SDK nempatkeun data lapisan kana XrFrameEndInfo sareng ngirimkeunana via xrEndFrame.
  • Pikeun pamekar Unity,
    o Setélan VIVE Wave SDK, tingal pituduh ieu,
    o Setélan VIVE OpenXR, tingal pituduh ieu.
  • Pikeun pamekar Unreal,
    o Setélan VIVE Wave SDK, tingal pituduh ieu.
    o Setélan VIVE OpenXR, tingal pituduh ieu.

5.5 CPU Spike
Nalika beban CPU langkung beurat, sababaraha latar tukang ngolah benang anu ngagaduhan prioritas anu luhur, éta tiasa ngaganggu palaksanaan asli. Urang teu bisa ngajamin yén Aplikasi Kandungan moal interrupted ku thread séjén.
Upami timbul masalah sapertos kitu, anjeun tiasa nyobian ningkatkeun prioritas utas pikeun ningali naha éta ngabéréskeun masalah. Tapi upami anjeun ngarobih konfigurasi benang pikeun ngaoptimalkeun alat, anjeun kedah mariksa naha ieu ngagaduhan dampak negatif.

  • Pikeun Unity Developer, tingal fitur konfigurasi thread Android. Upami Anjeun keur make VIVE Wave SDK, urang boga fitur di WaveXRSettings nu ngidinan Anjeun pikeun ngaluyukeun prioritas, ditémbongkeun saperti dina Gambar 5-5-2. Nilai nu leuwih leutik ngagambarkeun prioritas nu leuwih luhur.

Kinerja Rendering VIVE VR - Gbr 7

  • Teu nyata euweuh métode pikeun ngarobah thread kaulinan, rendering thread na RHI thread prioritas ngaliwatan setélan éksternal iwal mun ngaropéa kodeu mesin.

Hak Cipta © 2024 HTC Corporation. Sadaya hak disimpenlogo VIVE

Dokumén / Sumberdaya

VIVE VR Rendering Performance [pdf] Pituduh pamaké
Performance Rendering VR, Performance Rendering, Performance

Rujukan

Ninggalkeun komentar

alamat surélék anjeun moal diterbitkeun. Widang diperlukeun ditandaan *