VR renderēšanas veiktspēja
Tuning un optimizācijas
Ievads
Optimālas VR pieredzes sasniegšana ar ierobežotu resursu aparatūru ir ļoti svarīga, lai nodrošinātu vienmērīgu un ērtu lietotāja pieredzi. Ja satura renderēšanas kadru nomaiņas ātrums samazinās vai kļūst nestabils zem ierīces atsvaidzes intensitātes, tas izraisīs kadru trīci un stingrību, kustības slimības utt. beidzot negatīvi ietekmēt lietotāja pieredzi. Tāpēc satura veiktspējas optimizēšana ir ļoti svarīga, lai nodrošinātu patīkamu pieredzi.
Pirms veiktspējas regulēšanas ir svarīgi saprast, kur ir veiktspējas vājās vietas, lai izvairītos no neefektīvas noregulēšanas. Šis dokuments ir izstrādāts, lai palīdzētu izstrādātājiem noteikt veiktspējas vājās vietas un piedāvātu risinājumus renderēšanas veiktspējas problēmu risināšanai.
Dokuments ir sakārtots šādās sadaļās:
- 2. nodaļa: Identificējiet sašaurinājumu — šī sadaļa palīdz izstrādātājiem noteikt, kur atrodas vājās vietas.
- 3. un 4. nodaļa: VIVE Wave un VIVE OpenXR iestatījumi — šajās sadaļās ir izklāstīti konkrēti iestatījumi, kas var ietekmēt CPU/GPU veiktspēju VIVE Wave un OpenXR lietotnēm. Izstrādātāji var eksperimentēt ar šo funkciju iespējošanu vai atspējošanu, pamatojoties uz konstatētajām veiktspējas vājajām vietām, lai noteiktu, vai ir kādi uzlabojumi.
- 5. nodaļa: Izplatīta optimizācija — šajā sadaļā ir aprakstītas dažas izplatītas optimizācijas prakses un pieredze.
Identificējiet sašaurinājumu
Kad HMD pārvietojas, ja VR/MR lietotnei ir kadra trīce vai melna mala utt., to parasti izraisa slikta renderēšanas veiktspēja. Parasti renderēšanas veiktspējas problēmas var iedalīt 2 veidos: ar CPU vai GPU. Saprotiet, kādi saišu veidi jūsu lietotnei ir ļoti svarīgi sākumā, lai izvairītos no neefektīvas noregulēšanas.
Šajā nodaļā mēs piedāvājam vienkāršas darbības, kas ļauj ātri noteikt veiktspējas problēmas.
2.1. Pārbaudiet satura renderēšanas FPS
Vispirms mēs pārbaudām satura FPS, kas ir satura atveidoto kadru skaits sekundē. Tas ir jāsaglabā līdz displeja kadru ātrumam un jāsaglabā stabils. Pretējā gadījumā tas var izraisīt rāmja trīci.
Ja jūsu lietojumprogrammas SDK izmanto VIVE WAVE SDK 6.0.0 vai jaunāku versiju, varat izmantot šo adb komandu, lai pārbaudītu FPS. DK 6.0.0
$adb Logcat -s VRMetric
Jūs redzēsit šādus žurnāla datus.
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” Pirmais cipars apzīmē satura FPS, bet otrais cipars apzīmē displeja kadru nomaiņas ātrumu.
Ja jūsu Wave SDK versija ir jaunāka par 6.0.0, ieteicams veikt jaunināšanu uz jaunāko versiju, lai uzlabotu renderēšanas veiktspēju un citu optimizāciju.
Ja jūsu lietojumprogrammas SDK ir izveidots, izmantojot VIVE OpenXR. Lai pārbaudītu FPS, varat izmantot šo adb komandu.
$adb Logcat -s RENDER_ATW
Jūs redzēsit šādus žurnāla datus
RENDER_ATW: [FPS] jauna tekstūra: 90.00
RENDER_ATW: [FPS] R pašreizējais: 90.00 izlaist: 0 317, -0.0155 0.805527, 0.006788)
RENDER_ATW: [FPS] L pašreizējais: 90.00 izlaišana: 0 (0.592301, -0.015502, 0.805539, 0.006773)
Skaitlis aiz “jaunas tekstūras” apzīmē pašreizējo satura FPS. Skaitlis aiz “R pašreiz” un “L pašreiz” norāda displeja kadru nomaiņas ātrumu.
Dažreiz satura FPS un displeja kadru nomaiņas ātrumā var būt neliela neatbilstība.
Piemēram,ampIepriekš minētajā gadījumā 89.8 FPS var uzskatīt par 90 FPS.
Ja lietotnes satura FPS pastāvīgi ir zemāks par displeja kadru nomaiņas ātrumu vai joprojām ir nestabils, tas norāda uz renderēšanas veiktspējas problēmu. Tāpēc nākamais solis ir noteikt, vai sašaurinājums nāk no CPU vai GPU.
2.2 Pārbaudiet CPU un GPU lietojumu
Ja jūsu lietojumprogrammas SDK izmanto VIVE WAVE SDK 6.0.0 vai jaunāku versiju, varat izmantot šo adb komandu, lai pārbaudītu FPS.
$adb logcat -s VRMetric
Jūs redzēsit šādus žurnāla datus.
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
Kā redzat iepriekš sniegtajā žurnāla rezultātos, CPU lietojums ir 27% un GPU lietojums ir 72% Ja jūsu Wave SDK versija ir jaunāka par 6.0.0, ieteicams veikt jaunināšanu uz jaunāko versiju, lai uzlabotu renderēšanas veiktspēju un citu optimizāciju.
Programmai VIVE OpenXR varat izmantot šo komandu, lai pārbaudītu CPU un GPU lietojumu.
# uz Linux/ubuntu
$ adb logcat | grep CPU_USAGE
# uz Powershell
$ adb logcat | Select-String - Pattern CPU_USAGE
Jūs redzēsit šādu žurnālu
CPU vid. Procesors
Ja novērojat, ka FPS nevar uzturēt displeja kadru nomaiņas ātrumu un arī GPU lietojums ir ļoti augsts, parasti pārsniedz 85%, varat mēģināt pielāgot acu bufera izšķirtspēju (3.1.2. sadaļa, 4.1.2. sadaļa), lai redzētu, vai tas uzlabo FPS. Ja šī korekcija noved pie labākas
veiktspēju, mēs varam secināt, ka problēma ir saistīta ar GPU, un attiecīgi koncentrējam savus optimizācijas centienus.
No otras puses, ja Eyebuffer izšķirtspējas pielāgošana nenodrošina ievērojamu veiktspējas uzlabošanos, iespējams, ka sastrēgums ir saistīts ar CPU, un mums vajadzētu koncentrēties uz CPU veiktspējas optimizēšanu.
Iespējams, ka lietojumprogramma vienlaikus ir saistīta gan ar CPU, gan ar GPU. Šādos gadījumos optimizācijas pasākumi ir jāpiemēro gan CPU, gan GPU, lai panāktu līdzsvarotus veiktspējas uzlabojumus.
2.3 GPU saistīts
Ja VR lietotne ir saistīta ar GPU, tas nozīmē, ka GPU ir galvenais šķērslis un tā nespēj izpildīt lietojumprogrammas renderēšanas prasības. Lai mazinātu ar GPU saistītās problēmas, ņemiet vērā tālāk norādītos ieteikumus.
Pirmkārt, izmantojiet profilēšanas rīkus, piemēram, RenderDoc vai Game Engine profiler (Unity Profiler, Unreal Insights), lai analizētu, kur GPU pavada lielāko daļu sava laika. Nosakiet visdārgākās darbības un koncentrējieties uz to optimizēšanu.
Vietējam izstrādātājam varat izmantot RenderDoc, lai noteiktu, kurš izsaukums rada pārmērīgu GPU slodzi.
Unity Developer varat sekot Unity šim dokumentam vai izmantot RenderDoc, lai analizētu renderēšanas veiktspējas problēmu, un sekot Unity grafikas optimizācijas dokumentācijai, lai iegūtu norādījumus par savas lietojumprogrammas optimizēšanu.
Unreal Developer varat izmantot GPU vizualizatoru vai RenderDoc, lai analizētu renderēšanas veiktspējas problēmu, un sekojiet Unreal veiktspējas vadlīnijām, lai iegūtu norādījumus par lietojumprogrammas optimizēšanu.
Otrkārt, varat arī mēģināt pielāgot noteiktas Wave funkcijas vai iestatījumus, lai samazinātu GPU slodzi.
- Iestatīt lēnāku displeja atsvaidzes intensitāti (3.1.1. sadaļa, 4.1.1. sadaļa)
- Pielāgojiet acu bufera izšķirtspēju (3.1.2. sadaļa, 4.1.2. sadaļa), 14.1.1.
- Mēģiniet iespējot Foveation (3.1.4. sadaļa, 4.1.4. sadaļa).
Ja jūsu lietotne ir arī MR lietotne, varat pielāgot arī Passthrough iestatījumus.
- Noregulējiet zemāku caurlaides attēla kvalitāti. (3.2.1. sadaļa)
- Pielāgojiet caurlaides kadru lēnāk. (3.2.2. sadaļa).
Lai uzzinātu vairāk par citiem GPU veiktspējas iestatījumiem, skatiet 2.6. nodaļu.
2.4 Saistīts ar CPU
Ja VR lietotne ir saistīta ar centrālo procesoru, tas nozīmē, ka galvenais šķērslis ir centrālais procesors. Apsveriet tālāk norādītos ieteikumus.
Pirmkārt, izmantojiet profilēšanas rīkus, piemēram, Systrace vai Game Engine profiler (Unity Profiler, Unreal Insights), lai analizētu un noteiktu, kuras jūsu koda daļas patērē visvairāk CPU resursu. Koncentrējieties uz šo apgabalu optimizēšanu un skaitļošanas ietilpīgos algoritmus, lai samazinātu CPU slodzi.
- Native Developer varat izmantot Systrace to profiler jūsu projekts.
- Unity Developer varat izmantot CPU Usage Profiler moduli, lai atrastu CPU veiktspējas problēmu.
- Unreal Developer varat izmantot Unreal's Insights, lai atrastu CPU veiktspējas problēmu.
Otrkārt, varat arī mēģināt pielāgot noteiktas Wave funkcijas vai iestatījumus, lai samazinātu GPU slodzi.
- Iestatīt lēnāku displeja atsvaidzes intensitāti (3.1.1. sadaļa, 4.1.1. sadaļa)
- Izmantojiet vairākusView Renderēšana (3.1.4. sadaļa, 4.1.4. sadaļa)
Ja jūsu lietotne ir arī MR lietotne, varat pielāgot arī Passthrough iestatījumus.
- Pielāgojiet caurlaides kadru lēnāk (3.2.2. sadaļa).
Lai uzzinātu vairāk par citiem CPU veiktspējas iestatījumiem, skatiet 2.6. nodaļu.
2.5. Kopsavilkums
Visbeidzot, mēs esam organizējuši iepriekš minēto veiktspējas pārbaudes darbplūsmu attēlā 2-5-1. Sāciet, pārbaudot satura FPS. Ja tas ir mazāks par displeja kadru nomaiņas ātrumu vai joprojām ir nestabils, analizējiet GPU/CPU lietojumu, lai noteiktu, vai tas ir saistīts ar GPU vai CPU. Visbeidzot, izmantojiet profesionālifiler, lai identificētu iespējamās veiktspējas problēmas vai pielāgotu Wave funkcijas vai iestatījumus, lai optimizētu CPU veiktspēju.

2.6. Ātrā uzziņa, kuri iestatījumi var uzlabot CPU/GPU ielādi
Tālāk norādiet SDK iestatījumus, kas saistīti ar CPU/GPU ielādi. Varat pārbaudīt atbilstošos optimizācijas iestatījumus, pamatojoties uz lietotnes vājo vietu.
Saistīts ar CPU:
- VIVE Wave SDK iestatījums
o VR saturs
▪ 3.1.1. Displeja atsvaidzes intensitāte
▪ 3.1.4. vairākiView Renderēšana
▪ 3.1.6. Adaptīvā kvalitāte
▪ 3.1.7. Adaptive Motion Compositor
o MR saturs
▪ 3.2.2. Pielāgojiet caurlaides kadru ātrumu - VIVE OpenXR SDK iestatījums
o VR saturs
▪ 4.1.1. Displeja atsvaidzes intensitāte
▪ 4.1.4. vairākiView Renderēšana - Kopējā optimizācija
o 5.5 CPU smaile
Saistīts ar GPU:
- VIVE Wave SDK iestatījums
o VR saturs
▪ 3.1.1. Displeja atsvaidzes intensitāte
▪ 3.1.2. Acu bufera izšķirtspēja
▪ 3.1.3. vairākiView Renderēšana
▪ 3.1.4. Foveation
▪ 3.1.5. kadra asuma uzlabošana (FSE)
▪ 3.1.6. Adaptīvā kvalitāte
▪ 3.1.7. Adaptive Motion Compositor
▪ 3.1.8 Render Mask [Neatbalsta nereālu] o MR saturs
▪ 3.2.1. Pielāgojiet caurlaides kvalitāti
▪ 3.2.2. Pielāgojiet caurlaides kadru ātrumu - VIVE OpenXR SDK iestatījums
o VR saturs
▪ 4.1.1. Displeja atsvaidzes intensitāte
▪ 4.1.2. Acu bufera izšķirtspēja
▪ 4.1.3. vairākiView Renderēšana
▪ 4.1.4. Foveation [Neatbalsta Unreal] ▪ 4.1.5. Render Mask [Neatbalsta Unreal] - Kopējā optimizācija
o 5.1 Izslēdziet augstas veiktspējas režīmu
o 5.2 Multisampjūras līdaka
o 5.3 GMEM ielāde/uzglabāšana
o 5.4. Sastāva slānis (daudzslāņu)
VIVE Wave iestatījums
VIVE Wave ir atvērta platforma un rīku kopa, kas ļauj viegli izstrādāt VR saturu un nodrošina augstas veiktspējas ierīču optimizāciju trešo pušu partneriem. VIVE Wave atbalsta Unity un Unreal spēļu dzinējus.
Mēs nepārtraukti optimizējam un atrisinām dažādas kļūdas, tāpēc iesakām atjaunināt SDK.
Pašlaik VIVE Wave atbalsta tikai OpenGL ES. Šeit ir uzskaitītas funkcijas, kas sakārtotas pēc ietekmes uz GPU veiktspēju. Mēs to sadalīsim divās daļās: VR saturs un MR saturs.
3.1 VR saturs
3.1.1. Displeja atsvaidzes intensitāte
Augstāki atsvaidzes intensitātes rādītāji piedāvā vienmērīgāku vizuālo attēlojumu, taču tas palielina sistēmas slodzi. Savukārt zemāki atsvaidzes intensitātes rādītāji samazina sistēmas slodzi, bet rada mazāk vienmērīgu vizuālo attēlojumu. Ja lietotnei ir ar centrālo procesoru/grafisko procesoru saistītas problēmas, varat mēģināt samazināt.asing displeja atsvaidzes intensitāti, lai mazinātu šo problēmu.
- Vietējiem izstrādātājiem skatiet WVR_SetFrameRate.
- Unity izstrādātājam skatiet šo rokasgrāmatu.
- Unreal izstrādātājam skatiet šo rokasgrāmatu.
3.1.2. Acu bufera izšķirtspēja
Eyebuffer izšķirtspēja ir tekstūras lielums, ko saturs, kas jāatveido lietotnē, renderētā tekstūra tiks iesniegta izpildlaikā, lai veiktu publicēšanas procesu, un parādīts HMD displejā.
Lai gan lielāks acu bufera izmērs var radīt skaidrākus un detalizētākus vizuālos attēlus, taču tas arī uzliek ievērojamu slodzi GPU. Tāpēc ir svarīgi atrast pareizo līdzsvaru starp vizuālo kvalitāti un veiktspēju.
Ja lietotnei ir problēmas ar GPU, varat mēģināt samazinātasinPareiziniet acu bufera izmēru ar mēroga koeficientu. Tomēr mēs neiesakām samazināt mēroga koeficientu zem 0.7, jo tas var izraisīt nepieņemamu vizuālo kvalitāti.
- Vietējiem izstrādātājiem skatiet WVR_ObtainTextureQueue. Pielāgojot izmēru, jums vajadzētu reizināt platumu un augstumu ar attiecību.
- Unity izstrādātājam skatiet WaveXRSettings.
Varat arī veikt izmaiņas, izmantojot kodu kā belwoe.
XRSettings.eyeTextureResolutionScale = ResolutionScaleValue; // C# - Unreal izstrādātājam skatiet sadaļu SetPixelDensity.
3.1.3. vairākiView Renderēšana
Tradicionālajā renderēšanā mēs kreiso un labo aci zīmējam atsevišķi, tāpēc vienai ainai ir nepieciešami divi zīmēšanas izsaukumi. VairākiView Renderēšana novērš šo problēmu, veicot tikai vienu izsaukumu.
Šī funkcija samazina procesora slodzi, pazeminotasing zīmēšanas izsaukumu skaits. Arī GPU ir dažas priekšrocības, virsotņu ēnotāja darba slodze ir samazināta, jo tam nav nepieciešams palaist papildu ēnotāju otrai acij, bet fragmentu ēnotāja darba slodze paliek nemainīga, jo tam joprojām ir jānovērtē katrs pikselis abām acīm. Iesakām iespējot šo funkciju.
- Vietējam izstrādātājam varat skatīt vietni wvr_native_hellovr sample.
- Unity izstrādātājam skatiet sadaļu Renderēšanas režīms, viena pāreja ir vairākuview funkciju.
- Unreal izstrādātājam skatiet šo rokasgrāmatu.
3.1.4. Foveation
Foveated renderēšana galvenokārt ir paredzēta, lai samazinātu GPU slodzi. Tas samazina kadra detaļu displeja perifērijā un saglabā augstas izšķirtspējas detaļas lauka centrā view. Ja lietotnei ir ar GPU saistīta problēma, varat mēģināt iespējot Foveation renderēšanu.

Lietojot foveāciju, ir jāņem vērā:
➢ Lietotāji parasti nepamana samazināto detaļu perifērijas reģionos, izmantojot noklusējuma fokusēšanas režīmu. Bet, ja foveācijas perifērā kvalitāte ir iestatīta pārāk zema, tā var kļūt pamanāma lietotājam.
➢ Foveācijas efekti var būt pamanāmāki ar noteiktiem faktūru materiāliem, kas varētu piesaistīt lietotāja uzmanību. Izstrādātājiem tas ir jāapzinās un attiecīgi jānovērtē.
➢ Foveated renderēšanas funkcijas iespējošana rada fiksētas GPU veiktspējas izmaksas, kas var mainīties no 1% līdz 6% atkarībā no acs bufera lieluma. Ja ainā izmantojat vienkāršu ēnotāju, veiktspējas ieguvums no resursu taupīšanas var būt mazāks par fiksētajām GPU veiktspējas izmaksām, kā rezultātā samazinās veiktspēja.
- Vietējiem izstrādātājiem skatiet šo rokasgrāmatu.
- Unity izstrādātājam skatiet šo rokasgrāmatu. Jo īpaši, ja iespējojat pēcapstrādi vai HDR, foveāciju nevar pilnībā izmantot. Tā kā Unity atveidos objektus savā ģenerētajā renderēšanas tekstūrā, nevis izpildlaikā ģenerētās pašreizējās renderēšanas tekstūrā, kas atbalsta pārvietošanos.
- Unreal izstrādātājam skatiet šo rokasgrāmatu. Proti, foveāciju nevar pilnībā izmantot multi-View Renderēšana, jo Unreal nevar tieši renderēt objektus izpildlaikā ģenerētajā renderēšanas tekstūrā, kas atbalsta foveation.
3.1.5. kadra asuma uzlabošana (FSE)
FSE nodrošina asāku renderēšanas rezultātu, ieviešot asināšanas filtru, tas var padarīt saturu skaidrāku un būt ļoti noderīgi, lai uzlabotu teksta skaidrību ainā. Ja lietotnei ir ar GPU saistīta problēma, varat apsvērt FSE atspējošanu, ja tas nav būtiski.

- Vietējiem izstrādātājiem skatiet šo rokasgrāmatu.
- Unity izstrādātājam skatiet šo rokasgrāmatu.
- Unreal izstrādātājam skatiet šo rokasgrāmatu.
3.1.6. Adaptīvā kvalitāte
Lai taupītu akumulatoru un uzturētu ierīces renderēšanas veiktspēju, šī funkcija automātiski pielāgo CPU/GPU pulksteņa veiktspējas līmeņus, pamatojoties uz to lietojumu. Turklāt, lai uzlabotu veiktspēju, var ieviest citas stratēģijas, piemēram, automātiski iespējot/atspējot Foveation vai saturs var pielāgoties, ja tiek saņemti augstas/zemas slodzes notikumi.
- Vietējiem izstrādātājiem skatiet šo rokasgrāmatu.
- Unity izstrādātājam skatiet šo rokasgrāmatu. Mūsu spraudnī Unity acu bufera izmēru var automātiski pielāgot, pamatojoties uz pašreizējo veiktspēju; Teksta lielums izfiltrēs pārāk mazas mēroga vērtības sarakstā Rezolūcija. Mēs iesakām tekstu, kura izmērs ir vismaz 20 dmm vai lielāks.
- Unreal izstrādātājam skatiet šo rokasgrāmatu.
3.1.7. Adaptive Motion Compositor
Šī funkcija ir eksperimentāla funkcija, kas ietver UMC un PMC. UMC samazinās kadru ātrumu uz pusi un ekstrapolēs jaunu kadru reāllaikā, lai saglabātu vizuālo gludumu. Tomēr tam ir zināms latentums, artefakti un GPU ielāde.
PMC galvenokārt izmanto dziļuma buferi, lai ļautu ATW ņemt vērā HMD tulkošanu, līdz 6 dof kompensācijai. Šī funkcija var samazināt tulkošanas latentumu par 1–2 kadriem, bet palielināt GPU slodzi.
- Vietējiem izstrādātājiem skatiet šo rokasgrāmatu.
- Unity izstrādātājam skatiet šo rokasgrāmatu.
- Unreal izstrādātājam skatiet šo rokasgrāmatu.
3.1.8 Renderēšanas maska [Neatbalsta Unreal]
Pikseļi malās pēc kropļošanas kļūst gandrīz neredzami, renderēšanas maska maina šo neredzamo pikseļu dziļuma bufera vērtības. Ja iespējosit dziļuma testēšanu, agrīnā z dēļ šie neredzamie pikseļi netiks renderēti, tādējādi samazinot GPU slodzi. Šī funkcija ir noderīga, ja šajās neredzamajās zonās ir smagi noslogoti renderēšanas objekti; pretējā gadījumā, ja šajos apgabalos nav renderēšanas objektu, ieteicams to atspējot, jo tas patērēs nelielu GPU.
- Vietējiem izstrādātājiem skatiet šo rokasgrāmatu. Pirms izsaukt RenderMask, jums ir jāsaista dziļuma buferis; pretējā gadījumā tas būs neefektīvs.
- Unity izstrādātājam skatiet šo rokasgrāmatu.
- Unreal izstrādātājam pašlaik netiek atbalstīta Render Mask funkcija.
3.2 MR saturs
3.2.1. Pielāgojiet caurlaides kvalitāti
Ir 3 caurlaides attēla kvalitātes līmeņi:
➢ WVR_PassthroughImageQuality_DefaultMode – piemērots MR saturam bez īpaša pieprasījuma.
➢ WVR_PassthroughImageQuality_PerformanceMode – piemērots MR saturam, kuram nepieciešams vairāk GPU resursa virtuālās ainas renderēšanai.
➢ WVR_PassthroughImageQuality_QualityMode — piemērots MR saturam, kas ļauj lietotājiem skaidri redzēt apkārtējo vidi, bet satura virtuālajai ainai ir jābūt precīzākai veiktspējai.
Varat pielāgot Passthrough kvalitāti uz PerformanceMode, lai samazinātu GPU izmantošanu.
- Native, Uunity vai Unreal izstrādātājiem skatiet šo rokasgrāmatu.
3.2.2. Pielāgojiet caurlaides kadru ātrumu
Tāpat kā displeja atsvaidzes intensitāte, arī augstāks caurlaides kadru nomaiņas ātrums nodrošina vienmērīgākus vizuālos attēlus, taču tas maksā palielinātu sistēmas slodzi. Un otrādi, zemāki atsvaidzes intensitātes rādītāji samazina sistēmas slodzi, bet rada mazāk vienmērīgus vizuālos attēlus. Ir 2 caurlaides kadru ātruma režīmi: pastiprinājums un parastais.
- Vietējais izstrādātājs var pielāgot caurlaides kvalitāti, izmantojot WVR_SetPassthroughImageRate.
- Unity izstrādātājam var mainīt, izmantojot kodu, piemample iestatījumi ir šādi // C#
Interop.WVR_SetPassthroughImageQuality(WVR_PassthroughImageQuality.PerformanceMode); - Attiecībā uz Unreal izstrādātāju iestatīšanas metodi skatiet 3-2-2 attēlā redzamā projekta mezglā.

VIVE OpenXR iestatījums
OpenXR ir atvērts standarts, kas nodrošina kopīgu API kopu XR lietojumprogrammu izstrādei, kas darbojas dažādās VR ierīcēs, ko izstrādājusi Khronos Group. VIVE Focus 3 un VIVE XR Elite atbalsta arī OpenXR, VIVE OpenXR SDK nodrošina visaptverošu atbalstu HTC VR ierīcēm, ļaujot izstrādātājiem izveidot Allin-One un saturu ar Unity un Unreal dzinēju HTC VR ierīcēs. Mēs nepārtraukti optimizējam un novēršam dažādas kļūdas, tāpēc izstrādātājiem ir ieteicams atjaunināt savas ierīces FOTA versiju, lai tā būtu atjaunināta. Pašlaik VIVE OpenXR SDK atbalsta OpenGL ES un Vulkan.
4.1 VR saturs
4.1.1. Displeja atsvaidzes intensitāte
Koncepcija šeit ir līdzīga 3.1.1 displeja atsvaidzes intensitātei.
- Vietējiem izstrādātājiem skatiet XrEventDataDisplayRefreshRateChangedFB.
- Unity izstrādātājam skatiet šo rokasgrāmatu.
- Unreal izstrādātājam skatiet šo rokasgrāmatu.
4.1.2. Acu bufera izšķirtspēja
Koncepcija šeit ir līdzīga 3.1.2 Eyebuffer Resolution. Mēs iesakām nesamazināt mēroga koeficientu zem 0.7, jo tas var radīt nepieņemamu vizuālo kvalitāti.
- Vietējiem izstrādātājiem skatiet sadaļu xrCreateSwapchain. Pielāgojot izmēru, jums vajadzētu reizināt platumu un augstumu ar attiecību. ,
- Attiecībā uz Unity izstrādātāju skatiet šo piemample // C#
XRSettings.eyeTextureResolutionScale = 0.7f; //ieteicams 1.0f~0.7f - Informāciju par Unreal iestatījumiem skatiet šajā rokasgrāmatā.
4.1.3. vairākiView Renderēšana
Koncepcija šeit ir līdzīga 3.1.3 Multi-View Renderēšana. Šī funkcija samazina CPU slodzi, GPU ir arī dažas priekšrocības. Mēs iesakām iespējot šo funkciju.
- Vietējam izstrādātājam KhronosGroup nodrošina OpenXR Multi-View example, skatiet šo rokasgrāmatu.
- Unity izstrādātājam skatiet sadaļu Renderēšanas režīms, viena pāreja ir vairākuview funkciju.
- Attiecībā uz Unreal izstrādātāju, tāpat kā ar VIVE Wave iestatījumiem, skatiet šo rokasgrāmatu.
4.1.4. Foveation [Neatbalsta Unreal]
Koncepcija šeit ir līdzīga 3.1.4. Foveation. Foveācijas renderēšana galvenokārt ir paredzēta, lai samazinātu GPU slodzi, taču tās iespējošana radīs fiksētas GPU veiktspējas izmaksas, un, ja fokusēšana ir iestatīta pārāk zema un tiek izmantoti noteikti materiāli vai faktūras, tā var kļūt ļoti sarežģīta.
pamanāms lietotājam. Tāpēc ir ieteicams iespējot vai atspējot šo līdzekli, pamatojoties uz jūsu īpašajām prasībām un veiktspējas apsvērumiem. Pašlaik Foveated funkcionalitāte tiek atbalstīta tikai OpenGL ES platformā VIVE OpenXR SDK.
- Vietējam izstrādātājam šī funkcija ir pieejama, taču pašlaik tā nav pieejamaamples tiek nodrošinātas.
- Unity izstrādātājam skatiet šo rokasgrāmatu.
- Unreal izstrādātājam pašlaik neatbalsta šo funkciju.
4.1.5 Renderēšanas maska [Neatbalsta Unreal]
Koncepcija šeit ir līdzīga 3.1.8 Render Mask.
- Vietējam izstrādātājam izmantojiet XrVisibilityMaskKHR, lai iegūtu tīklu. Pirms ainas renderēšanas izmantojiet šo tīklu, lai aizpildītu dziļuma bufera vērtības pirms ainas renderēšanas.
- Unity izstrādātājam funkcija Render Mask ir iespējota pēc noklusējuma OpenGL ES, un to var atspējot, izmantojot šādu kodu; Vulkan pašlaik neatbalsta šo funkciju. //C# UnityEngine.XR.XRSettings.occlusionMaskScale = 0.0f;
- Unreal izstrādātājam pašlaik netiek atbalstīta Render Mask funkcija.
4.2 MR saturs
OpenXR pašlaik neatbalsta caurlaides kvalitātes un kadru ātruma iestatīšanu. Mēs turpināsim optimizēt un labot Passthrough funkciju, tāpēc izstrādātājiem ieteicams atjaunināt ierīces FOTA versiju, lai tā būtu atjaunināta.
Kopējā optimizācija
5.1. Izslēdziet augstas veiktspējas režīmu
Izslēdzot “Augstas veiktspējas režīmu”, var samazināt ierīces displeja izmēru, tādējādi samazinot GPU lietojumu. Trūkums ir ekrāna izšķirtspējas samazināšanās. Varat līdzsvarot kvalitāti un veiktspēju, lai izlemtu, vai to iespējot.
VIVE Focus 3 iestatīšanas vieta ir parādīta attēlā 5-1-1:

VIVE XR Elite iestatīšanas vieta ir parādīta attēlā 5-1-2:

5.2 Multisampling Anti-Aliasing
Multisampling ir anti-aliasing metode, ko izmanto robainu malu izlīdzināšanai, parasti tiek paātrināta ar aparatūras palīdzību, kas rada GPU veiktspējas izmaksas. Mēs iesakām neiestatīt MSAA augstāku par 2x, jo lielāka vērtība patērēs vairāk GPU slodzes.
- Vietējam izstrādātājam MSAA OpenGL ES exsample var atsaukties uz to; MSAA Vulkan exampler var atsaukties uz to.
Adreno GPU nodrošina paplašinājumu, kas optimizē MSAA. - Unity izstrādātājam skatiet šo ģildi.
- Unreal izstrādātājiem skatiet šo ģildi. Unreal nodrošina arī anti-ali pēcapstrādi.asing, skatiet šo ģildi.
5.3 GMEM ielāde/uzglabāšana
Adreno GPU arhitektūrā ir funkcija, kurā, saistot renderēšanas mērķi, ja renderēšanas mērķis netiek notīrīts vai nederīgs, ikreiz, kad notiek renderēšana, renderēšanas mērķa vērtības tiek ielādētas grafikas atmiņā, ko sauc par GMEM ielādi. Ja iepriekšējās vērtības nav vajadzīgas, notīriet vai padariet nederīgu Render Target pirms renderēšanas, var izvairīties no šīs situācijas, lai uzlabotu GPU veiktspēju.
Jūs varat izvairīties no GMEM slodzes, izmantojot šādas metodes. Programmā OpenGL ES pēc FBO saistīšanas varat izsaukt glClear un glClearDepth, lai notīrītu krāsu, dziļuma un trafareta buferi, vai izsaukt glInvalidateFramebuffer, lai norādīto renderēšanas mērķi padarītu nederīgu. Vulkānā papildu norādījumi nav nepieciešami; varat skaidri iestatīt, vai pirms lietošanas pielikumu notīrīt vietnē VkAttachmentDescription.loadOp.
Līdzīgi, flīžu renderēšanas rezultātu saglabāšanu atpakaļ galvenajā atmiņā no grafikas atmiņas sauc par GMEM veikalu; šī darbība ir dārga arī GPU. Lai no tā izvairītos, iesakām saistīt tikai nepieciešamos Render Targets, lai novērstu nevajadzīgas veikala darbības.
5.4. Sastāva slānis (daudzslāņu)
Tekstūrām, kas tiek rādītas, izmantojot daudzslāņu, ir labāka vizuālā kvalitāte. Tomēr šī funkcija ievērojami palielina GPU veiktspēju ar slāņu skaitu un tekstūru izmēru. Mēs iesakām ne vairāk kā trīs slāņus.
- Vietējam izstrādātājam
o VIVE Wave SDK izmanto WVR_SubmitFrameLayers, lai nodotu datus katram slānim.
o VIVE OpenXR SDK ievieto slāņa datus XrFrameEndInfo un iesniedz, izmantojot xrEndFrame. - Unity izstrādātājam,
o VIVE Wave SDK iestatījumi, skatiet šo rokasgrāmatu,
o VIVE OpenXR iestatījumus skatiet šajā rokasgrāmatā. - Unreal izstrādātājam,
o VIVE Wave SDK iestatījumus skatiet šajā rokasgrāmatā.
o VIVE OpenXR iestatījumus skatiet šajā rokasgrāmatā.
5.5 CPU smaile
Ja CPU ielāde ir lielāka, daži fona apstrādā pavedienus ar augstu prioritāti, tas var pārtraukt vietējo izpildi. Mēs nevaram garantēt, ka satura lietojumprogrammu nepārtrauks kāds cits pavediens.
Ja rodas šādas problēmas, varat mēģināt palielinātasinPārbaudiet pavediena prioritāti, lai redzētu, vai tas atrisina problēmu. Taču, ja maināt pavediena konfigurāciju, lai optimizētu ierīces, jāpārbauda, vai tam ir kāda negatīva ietekme.
- Attiecībā uz Unity Developer skatiet Android pavedienu konfigurācijas funkciju. Ja izmantojat VIVE Wave SDK, mums ir funkcija WaveXRSettings, kas ļauj pielāgot prioritāti, kā parādīts 5-5-2 attēlā. Mazākā vērtība nozīmē augstāku prioritāti.

- Nereāli nav metodes, kā mainīt spēles pavedienu, renderēšanas pavedienu un RHI pavedienu prioritāti, izmantojot ārējos iestatījumus, ja vien nemodificējat dzinēja kodu.
Autortiesības © 2024 HTC Corporation. Visas tiesības paturētas
Dokumenti / Resursi
![]() |
VIVE VR renderēšanas veiktspēja [pdfLietotāja rokasgrāmata VR renderēšanas veiktspēja, renderēšanas veiktspēja, veiktspēja |
