VIVE logoVR-i renderdamise jõudlus
Häälestamine ja optimeerimine

Sissejuhatus

Optimaalse VR-kogemuse saavutamine ressursipiiranguga riistvaral on sujuva ja mugava kasutuskogemuse pakkumise võti. Kui sisu renderdamise kaadrisagedus langeb või on ebastabiilne alla seadme värskendussageduse, põhjustab see kaadri värisemist ja katkemist, liikumisiiveldust jne, mis lõppkokkuvõttes mõjutavad negatiivselt kasutuskogemust. Seetõttu on sisu jõudluse optimeerimine nauditava kogemuse tagamiseks väga oluline.
Enne jõudluse häälestamise alustamist on oluline mõista, kus on jõudluse kitsaskohad, et vältida ebaefektiivset häälestamist. See dokument on loodud selleks, et aidata arendajatel tuvastada jõudluse kitsaskohti ja pakkuda lahendusi renderdamise jõudlusprobleemide lahendamiseks.
Dokument on jagatud järgmistesse osadesse:

  • 2. peatükk: Kitsaskohtade tuvastamine – see osa aitab arendajatel tuvastada kitsaskohti.
  • 3. ja 4. peatükk: VIVE Wave'i ja VIVE OpenXR-i sätted – need jaotised kirjeldavad spetsiifilisi sätteid, mis võivad mõjutada VIVE Wave'i ja OpenXR-i rakenduste protsessori/graafikaprotsessori jõudlust. Arendajad saavad katsetada nende funktsioonide lubamist või keelamist vastavalt esinevatele jõudlusprobleemidele, et teha kindlaks, kas on võimalik tulemusi saavutada.
  • 5. peatükk: Üldine optimeerimine – Selles jaotises jagatakse mõningaid levinumaid optimeerimispraktikaid ja -kogemusi.

Tuvastage kitsaskoht

Kui HMD liigub ja VR/MR-rakendusel esineb kaadrivärinat või musti servi jne, on selle põhjuseks tavaliselt halb renderdusjõudlus. Tavaliselt saab renderdusjõudluse probleeme jagada kahte tüüpi: protsessoriga seotud või graafikakaardiga seotud. Ebaefektiivse renderdamise vältimiseks on alguses väga oluline mõista, millised renderdusjõudluse probleemid teie rakenduses esinevad.
Selles peatükis pakume lihtsaid samme, mis aitavad teil kiiresti tuvastada jõudlusprobleemide asukohad.

2.1 Kontrollige sisu renderdamise kaadrisagedust (FPS)
Esiteks kontrollime sisu kaadrisagedust (FPS), mis on kaadrite arv sekundis, mida sisu renderdab. See peaks olema kuvari kaadrisageduse tasemel ja stabiilsena. Vastasel juhul võib see põhjustada kaadrivärinaid.
Kui teie rakenduse SDK kasutab VIVE WAVE SDK 6.0.0 või uuemat versiooni, saate FPS-i kontrollimiseks kasutada järgmist adb-käsku. DK 6.0.0
$adb Logcat -s VRMetric
Näete järgmisi logiandmeid.
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” Esimene number tähistab sisu kaadrisagedust (FPS), teine ​​number aga ekraani kaadrisagedust.
Kui teie Wave SDK versioon on alla 6.0.0, on soovitatav uuendada uusimale versioonile, et parandada renderdamise jõudlust ja muud optimeerimist.
Kui teie rakenduse SDK on loodud VIVE OpenXR-iga, saate FPS-i kontrollimiseks kasutada järgmist adb-käsku.
$adb Logcat -s RENDER_ATW
Näete järgmisi logiandmeid
RENDER_ATW: [FPS] uus tekstuur: 90.00
RENDER_ATW: [FPS] R kohal: 90.00 vahelejätmine: 0 317, -0.0155 0.805527, 0.006788)
RENDER_ATW: [FPS] L kohal:90.00 vahelejätmine:0 (0.592301, -0.015502, 0.805539, 0.006773)

„Uus tekstuur“ järel olev number tähistab hetkel sisu kaadrisagedust (FPS). „R present“ ja „L present“ järel olev number tähistab ekraani kaadrisagedust.
Mõnikord võib sisu kaadrisageduse ja ekraani kaadrisageduse vahel olla väike erinevus.
NäiteksampNäiteks ülaltoodud juhul võib 89.8 kaadrit sekundis lugeda 90 kaadri sekundis.
Kui rakenduse sisu kaadrisagedus on pidevalt madalam kui ekraani kaadrisagedus või jääb ebastabiilseks, viitab see renderdamise jõudluse probleemile. Seega on järgmine samm tuvastada, kas kitsaskoht tuleneb protsessorist või graafikaprotsessorist.
2.2 Kontrollige protsessori ja graafikakaardi kasutust
Kui teie rakenduse SDK kasutab VIVE WAVE SDK 6.0.0 või uuemat versiooni, saate FPS-i kontrollimiseks kasutada järgmist adb-käsku.
$adb logcat -s VRMetric
Näete järgmisi logiandmeid.
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
Nagu ülaltoodud logitulemustest näha, on protsessori kasutus 27% ja graafikakaardi kasutus 72%. Kui teie Wave SDK versioon on alla 6.0.0, on renderdamise jõudluse parandamiseks ja muu optimeerimise parandamiseks soovitatav uuendada uusimale versioonile.
VIVE OpenXR rakenduse puhul saate protsessori ja graafikakaardi kasutuse kontrollimiseks kasutada järgmist käsku.
# Linuxil/Ubuntul
$ adb logcat | grep CPU_USAGE
# PowerShellis
$ adb logcat | Valige string - muster CPU_USAGE
Näete järgmist logi
Protsessori keskmine CPU0 CPU1 CPU2 CPU3 CPU4 CPU5 CPU6 CPU7 GPU CPU_USAGE [LOAD] 25.67% 32.22% 25.29% 30.77% 29.35% 21.35% 22.09% 18.39% 24.14% 73%
Kui märkate, et kaadrisagedus ei suuda kuvamissagedust säilitada ja graafikakaardi kasutus on samuti väga kõrge, tavaliselt üle 85%, võite proovida Eyebuffer Resolutioni (jaotis 3.1.2, jaotis 4.1.2) reguleerida, et näha, kas see parandab kaadrisagedust. Kui see reguleerimine viib parema tulemuseni
jõudluse osas võime järeldada, et probleem on seotud graafikaprotsessoriga ja keskenduda oma optimeerimispüüdlustele vastavalt.
Teisest küljest, kui Eyebuffer Resolutioni reguleerimine ei too kaasa märgatavat jõudluse paranemist, on pudelikael tõenäoliselt protsessoriga seotud ja peaksime keskenduma protsessori jõudluse optimeerimisele.
Samuti on võimalik, et rakendus on samaaegselt nii protsessori kui ka graafikaprotsessoriga seotud. Sellistel juhtudel tuleks optimeerimispüüdlusi rakendada nii protsessori kui ka graafikaprotsessori puhul, et saavutada tasakaalustatud jõudluse paranemine.
2.3 GPU-ga seotud
Kui VR-rakendus on GPU-ga piiratud, tähendab see, et GPU on peamine pudelikael ja see ei suuda rakenduse renderdamisnõuetega sammu pidada. GPU-ga seotud probleemide leevendamiseks kaaluge järgmisi soovitusi:
Esiteks kasutage profileerimistööriistu nagu RenderDoc või Game Engine Profiler (Unity Profiler, Unreal Insights), et analüüsida, kus GPU kõige rohkem aega veedab. Tuvastage kõige kulukamad toimingud ja keskenduge nende optimeerimisele.
Native Developeri puhul saate RenderDoci abil tuvastada, milline joonistamiskäsk põhjustab liigset GPU koormust.
Unity arendajatena saate renderdamise jõudlusprobleemide analüüsimiseks järgida Unity seda dokumenti või kasutada RenderDoci ning rakenduse optimeerimiseks juhiseid Unity graafika optimeerimise dokumentatsioonist.
Unreal Developeri puhul saate renderdamise jõudlusprobleemide analüüsimiseks kasutada GPU Visualizerit või RenderDoci ning rakenduse optimeerimiseks järgida Unreal Performance Guidelines'i.
Teiseks võite proovida ka teatud Wave'i funktsioone või sätteid kohandada, et vähendada GPU koormust.

  1. Määrake ekraani värskendussagedus aeglasemaks (punkt 3.1.1, punkt 4.1.1)
  2.  Eyebufferi eraldusvõime reguleerimine (punkt 3.1.2, punkt 4.1.2), 14.1.1)
  3.  Proovige Foveationi lubada (punkt 3.1.4, punkt 4.1.4).

Kui teie rakendus on ka MR-rakendus, saate muuta ka läbilaskevõime sätteid.

  1. Vähendage läbilaskva pildi kvaliteeti (punkt 3.2.1).
  2. Reguleeri läbilaskva kaadrisageduse aeglasemaks (punkt 3.2.2).

GPU jõudluse muude sätete kohta leiate lisateavet peatükist 2.6.

2.4 Protsessori poolt piiratud
Kui VR-rakendus on protsessori poolt koormatud, tähendab see, et protsessor on peamine pudelikael. Kaaluge järgmisi soovitusi:
Esiteks kasutage profileerimistööriistu nagu Systrace või Game Engine Profiler (Unity Profiler, Unreal Insights), et analüüsida ja tuvastada, millised teie koodi osad tarbivad kõige rohkem protsessori ressursse. Keskenduge nende valdkondade optimeerimisele ja refaktoreerige arvutuslikult intensiivseid algoritme, et vähendada protsessori koormust.

  • Natiivsete arendajatena saate Systrace'i kasutada professionaalseks kasutamiseks.fileteie projekti jaoks.
  • Unity arendaja jaoks saate kasutada CPU Usage Pro'dfiler moodul protsessori jõudlusprobleemide leidmiseks.
  • Unreal Developeri puhul saate protsessori jõudlusprobleemide leidmiseks kasutada Unreali Insightsi.

Teiseks võite proovida ka teatud Wave'i funktsioone või sätteid kohandada, et vähendada GPU koormust.

  1. Määrake ekraani värskendussagedus aeglasemaks (punkt 3.1.1, punkt 4.1.1)
  2.  Kasutage mitmekordsetView Renderdamine (punkt 3.1.4, punkt 4.1.4)

Kui teie rakendus on ka MR-rakendus, saate muuta ka läbilaskevõime sätteid.

  1. Reguleeri läbilaske kaadrisagedust aeglasemaks (punkt 3.2.2).

Protsessori jõudluse muude sätete kohta leiate lisateavet peatükist 2.6.

2.5 Kokkuvõte
Lõpuks oleme ülaltoodud jõudluskontrolli töövoo joonisel 2-5-1 korraldanud. Alustage sisu kaadrisageduse kontrollimisest. Kui see on madalam kui ekraani kaadrisagedus või jääb ebastabiilseks, analüüsige GPU/CPU kasutust, et teha kindlaks, kas see on GPU- või CPU-põhine. Lõpuks kasutage professionaalset...filer võimalike jõudlusprobleemide tuvastamiseks või Wave'i funktsioonide või sätete kohandamiseks protsessori jõudluse optimeerimiseks.

VIVE VR-i renderdusjõudlus – joonis 1

2.6 Kiirjuhend Millised sätted võivad parandada protsessori/graafikaprotsessori koormust

Loetlege allpool SDK sätted, mis on seotud protsessori/graafikaprotsessori laadimisega. Rakenduse kitsaskoha põhjal saate kontrollida asjakohaseid optimeerimisseadeid.

Protsessoriga seotud:

  • VIVE Wave SDK seaded
    o VR-sisu
    ▪ 3.1.1 Ekraani värskendussagedus
    ▪ 3.1.4 MitmekordneView Renderdamine
    ▪ 3.1.6 Adaptiivne kvaliteet
    ▪ 3.1.7 Adaptiivne liikumise komposiit
    o MR-sisu
    ▪ 3.2.2 Läbilaskva kaadrisageduse reguleerimine
  • VIVE OpenXR SDK seaded
    o VR-sisu
    ▪ 4.1.1 Ekraani värskendussagedus
    ▪ 4.1.4 MitmekordneView Renderdamine
  • Üldine optimeerimine
    o 5.5 protsessori tipp

GPU-ga seotud:

  • VIVE Wave SDK seaded
    o VR-sisu
    ▪ 3.1.1 Ekraani värskendussagedus
    ▪ 3.1.2 Eyebufferi resolutsioon
    ▪ 3.1.3 MitmekordneView Renderdamine
    ▪ 3.1.4 Foveatsioon
    ▪ 3.1.5 Kaadri teravuse suurendamine (FSE)
    ▪ 3.1.6 Adaptiivne kvaliteet
    ▪ 3.1.7 Adaptiivne liikumise komposiit
    ▪ 3.1.8 Renderdusmask [Ei toeta ebareaalset] o MR-sisu
    ▪ 3.2.1 Läbilaskvuse kvaliteedi reguleerimine
    ▪ 3.2.2 Läbilaskva kaadrisageduse reguleerimine
  • VIVE OpenXR SDK seaded
    o VR-sisu
    ▪ 4.1.1 Ekraani värskendussagedus
    ▪ 4.1.2 Eyebufferi resolutsioon
    ▪ 4.1.3 MitmekordneView Renderdamine
    ▪ 4.1.4 Foveation [Ei toetata ebareaalset režiimi] ▪ 4.1.5 Renderdusmask [Ei toetata ebareaalset režiimi]
  • Üldine optimeerimine
    o 5.1 Lülitage suure jõudlusega režiim välja
    o 5.2 Mitmedampmolva
    o 5.3 GMEM-i laadimine/salvestamine
    o 5.4 Kompositsioonikiht (mitmekihiline)

VIVE Wave'i seadistus

VIVE Wave on avatud platvorm ja tööriistakomplekt, mis võimaldab teil hõlpsalt VR-sisu arendada ja pakub kolmandate osapoolte partneritele suure jõudlusega seadmete optimeerimist. VIVE Wave toetab Unity ja Unreal mängumootoreid.
Optimeerime ja lahendame pidevalt mitmesuguseid vigu, seega soovitame SDK-d ajakohasena hoida.
Praegu toetab VIVE Wave ainult OpenGL ES-i. Siin on loetletud funktsioonid, mis on järjestatud vastavalt GPU jõudlusele avaldatavale mõjule. Jagame selle kahte ossa: VR-sisu ja MR-sisu.
3.1 VR-sisu
3.1.1 Ekraani värskendussagedus

Kõrgemad värskendussagedused pakuvad sujuvamat visuaali, kuid suurendavad süsteemikoormust. Seevastu madalamad värskendussagedused vähendavad süsteemikoormust, kuid põhjustavad vähem sujuvat visuaali. Kui rakendusel on protsessori/graafikaprotsessoriga seotud probleem, võite proovida seda vähendada.asinProbleemi leevendamiseks muutke ekraani värskendussagedust.

  • Natiivsete arendajate kohta vaadake WVR_SetFrameRate'i.
  • Unity arendajate jaoks vaadake seda juhendit.
  • Unreali arendajate jaoks vaadake seda juhendit.

3.1.2 Eyebufferi resolutsioon
Eyebufferi resolutsioon on tekstuuri suurus, mille sisu rakendus renderdatakse. Renderdatud tekstuur esitatakse käituskeskkonnale postitamisprotsessi tegemiseks ja kuvamiseks HMD-ekraanil.
Kuigi suurem silmapuhvri suurus võib kaasa tuua selgema ja detailsema visuaali, koormab see ka GPU-d märkimisväärselt. Seetõttu on oluline leida õige tasakaal visuaalse kvaliteedi ja jõudluse vahel.
Kui rakendusel on GPU-ga seotud probleem, võite proovida vähendadaasinKorrutage silmapuhvri suurus skaleerimisteguriga. Siiski soovitame mitte vähendada skaleerimistegurit alla 0.7, kuna see võib põhjustada vastuvõetamatut visuaalset kvaliteeti.

  • Natiivsete arendajate jaoks vaadake WVR_ObtainTextureQueue. Suuruse muutmisel peaksite laiuse ja kõrguse korrutama suhtega.
  • Unity arendajate jaoks vaadake WaveXRSettings'i.
    Teise võimalusena saate muudatusi teha koodi kaudu, nagu belwoe.
    XRSettings.eyeTextureResolutionScale = ResolutionScaleValue; // C#
  • Unreali arendajate puhul vaadake SetPixelDensity't.

3.1.3 Multi-View Renderdamine
Traditsioonilises renderdamises joonistame vasaku ja parema silma eraldi, mis nõuab sama stseeni jaoks kahte joonistamiskäsku.View Renderdamine lahendab selle probleemi, tehes ainult ühe joonistuskõne.
See funktsioon vähendab protsessori koormustasing joonistuskõnede arvu. GPU-l on ka mõningaid eeliseid, tipuvarjundaja töökoormus väheneb samuti, kuna see ei pea teise silma jaoks täiendavat varjundajat käivitama, kuid fragmendivarjundaja töökoormus jääb samaks, kuna see peab ikkagi mõlema silma iga pikslit hindama. Soovitame selle funktsiooni lubada.

  • Natiivsete arendajate jaoks võite vaadata wvr_native_hellovr faili.ample.
  • Unity arendajate puhul vaadake renderdamisrežiimi, üks läbimine on mitmekordneview funktsiooni.
  • Unreali arendajate jaoks vaadake seda juhendit.

3.1.4 Foveatsioon
Foveeeritud renderdamine on loodud peamiselt GPU koormuse vähendamiseks. See vähendab kaadri detaile ekraani äärealadel ja säilitab kõrge eraldusvõimega detailid pildi keskel. viewKui rakendusel on GPU-ga seotud probleem, võite proovida Foveation-renderdamise sisselülitamist.

VIVE VR-i renderdusjõudlus – joonis 2

Foveatsiooni kasutamisel on midagi, mida tuleb tähele panna:

➢ Kasutajad ei pane tavaliselt vaikimisi foveatsioonirežiimi rakendades tähele perifeersete piirkondade detailide vähenemist. Kuid kui foveatsiooni perifeerne kvaliteet on seatud liiga madalale, võib see kasutajale märgatavaks muutuda.
➢ Foveatsiooni mõju võib olla märgatavam teatud materjalide või tekstuuride puhul, mis võib kasutaja tähelepanu köita. Arendajad peaksid sellest teadlikud olema ja seda vastavalt hindama.
➢ Foveeeritud renderdamise funktsiooni lubamine toob kaasa fikseeritud GPU jõudluskulu, mis võib varieeruda 1–6%, olenevalt silmapuhvri suurusest. Lihtsa varjutaja kasutamisel stseenis võib ressursside säästmisest saadav jõudluse kasv olla väiksem kui fikseeritud GPU jõudluskulu, mille tulemuseks on jõudluse langus.

  • Natiivsete arendajate jaoks vaadake seda juhendit.
  • Unity arendajad peaksid tutvuma selle juhendiga. Tähelepanuväärne on see, et järeltöötluse või HDR-i lubamisel ei saa foveatsiooni täielikult ära kasutada. See tuleneb asjaolust, et Unity renderdab objekte omaenda loodud renderdustekstuurile, mitte aga käituskeskkonna loodud oleviku renderdustekstuurile, mis toetab foveatsiooni.
  • Unreali arendajate puhul vaadake seda juhendit. Märkimisväärne on see, et foveatsiooni ei saa Multi-View Renderdamine, kuna Unreal ei saa objekte otse renderdada käituskeskkonna loodud renderdustekstuurile, mis toetab foveatsiooni.

3.1.5 Kaadri teravuse suurendamine (FSE)
Teravustamisfiltri abil teravdav FSE pakub teravdatud renderdustulemust, mis muudab sisu selgemaks ja on üsna kasulik stseenis oleva teksti selguse parandamiseks. Kui rakendusel on GPU-ga seotud probleeme, võite kaaluda FSE keelamist, kui see pole hädavajalik.

VIVE VR-i renderdusjõudlus – joonis 3

  • Natiivsete arendajate jaoks vaadake seda juhendit.
  • Unity arendajate jaoks vaadake seda juhendit.
  • Unreali arendajate jaoks vaadake seda juhendit.

3.1.6 Adaptiivne kvaliteet
Aku säästmiseks ja seadme renderdusjõudluse säilitamiseks reguleerib see funktsioon automaatselt protsessori/graafikaprotsessori kella jõudlustaset vastavalt nende kasutusele. Lisaks saab jõudluse parandamiseks rakendada muid strateegiaid, näiteks Foveationi automaatne lubamine/keelamine või sisu ise reguleerimine kõrge/madala koormuse sündmuste korral.

  • Natiivsete arendajate jaoks vaadake seda juhendit.
  • Unity arendajad peaksid tutvuma selle juhendiga. Meie Unity pluginas saab silmapuhvri suurust automaatselt praeguse jõudluse põhjal reguleerida; teksti suurus filtreerib resolutsiooni loendist välja liiga väikesed skaalaväärtused. Soovitame teksti, mille suurus on vähemalt 20 dmm või suurem.
  • Unreali arendajate jaoks vaadake seda juhendit.

3.1.7 Adaptiivne liikumise komposiit
See on eksperimentaalne funktsioon, mis sisaldab UMC-d ja PMC-d. UMC vähendab kaadrisagedust poole võrra ja ekstrapoleerib uue kaadri reaalajas, et säilitada visuaalne sujuvus. Siiski kaasneb sellega teatav latentsus, artefaktid ja GPU laadimine.
PMC kasutab peamiselt sügavuspuhvrit (Depth Buffer), et võimaldada ATW-l arvestada HMD teisendusega ja laiendada seda 6-astmelise kompensatsioonini. See funktsioon võib vähendada teisenduse latentsust 1–2 kaadri võrra, kuid suurendada GPU koormust.

  • Natiivsete arendajate jaoks vaadake seda juhendit.
  • Unity arendajate jaoks vaadake seda juhendit.
  • Unreali arendajate jaoks vaadake seda juhendit.

3.1.8 Renderdusmask [Ei toetata Unrealit]
Servadel olevad pikslid muutuvad pärast moonutamist peaaegu nähtamatuks, renderdusmask muudab nende nähtamatute pikslite sügavuspuhvri väärtusi. Kui lubate sügavustestimise, siis varajase z tõttu neid nähtamatuid piksleid ei renderdata, vähendades seeläbi GPU koormust. See funktsioon on kasulik, kui nendes nähtamatutes piirkondades on palju renderdusobjekte; vastasel juhul, kui nendes piirkondades renderdusobjekte pole, on soovitatav see keelata, kuna see tarbib vähe GPU koormust.

  • Natiivsete arendajate jaoks vaadake seda juhendit. Enne RenderMaski kutsumist peate sügavuspuhvri siduma, vastasel juhul on see ebaefektiivne.
  • Unity arendajate jaoks vaadake seda juhendit.
  • Unreali arendajate jaoks ei toetata hetkel Render Maski funktsiooni.

3.2 MR-sisu
3.2.1 Läbilaskvuse kvaliteedi reguleerimine
Läbilaskva pildi kvaliteedi jaoks on kolm taset:
➢ WVR_PassthroughImageQuality_DefaultMode – sobib MR-sisu jaoks ilma konkreetse nõudmiseta.
➢ WVR_PassthroughImageQuality_PerformanceMode – sobib MR-sisu jaoks, mis vajab virtuaalse stseeni renderdamiseks rohkem GPU-ressurssi.
➢ WVR_PassthroughImageQuality_QualityMode – sobib MR-sisu jaoks, mis võimaldab kasutajatel ümbritsevat keskkonda selgelt näha, kuid virtuaalse sisu stseeni jõudluse tagamiseks on vaja täpsemat häälestamist.
GPU kasutuse vähendamiseks saate läbilaskvuse kvaliteedi (Passthrough) väärtuseks PerformanceMode määrata.

  • Native'i, Uunity või Unreali arendajate puhul vaadake seda juhendit.

3.2.2 Läbilaskva kaadrisageduse reguleerimine
Nagu ekraani värskendussagedus, pakub kõrgem läbilaske kaadrisagedus sujuvamat visuaali, kuid suurendab süsteemi koormust. Seevastu madalam värskendussagedus vähendab süsteemi koormust, kuid tulemuseks on vähem sujuvat visuaali. Läbilaske kaadrisagedusel on kaks režiimi: võimendatud ja tavaline.

  • Natiivsete arendajate jaoks saab läbilaskekvaliteeti reguleerida WVR_SetPassthroughImageRate abil.
  • Unity arendaja jaoks saab muuta koodi kaudu, ntampfaili seaded on järgmised // C#
    Interop.WVR_SetPassthroughImageQuality(WVR_PassthroughImageQuality.PerformanceMode);
  • Unreali arendajate puhul vaadake meetodi seadistamise kohta joonisel 3-2-2 olevat blueprint-sõlme.

VIVE VR-i renderdusjõudlus – joonis 4

VIVE OpenXR-i seaded

OpenXR on avatud standard, mis pakub ühist API-de komplekti XR-rakenduste arendamiseks, mis töötavad laias valikus VR-seadmetes ja mille on välja töötanud Khronos Group. VIVE Focus 3 ja VIVE XR Elite toetavad samuti OpenXR-i. VIVE OpenXR SDK pakub igakülgset tuge HTC VR-seadmetele, võimaldades arendajatel luua HTC VR-seadmetes kõikehõlmavaid seadmeid ja sisu Unity ja Unreal mootoriga. Me optimeerime ja lahendame pidevalt mitmesuguseid vigu, seega on soovitatav, et arendajad värskendaksid oma seadme FOTA-versiooni, et see ajakohasena püsiks. Praegu toetab VIVE OpenXR SDK OpenGL ES-i ja Vulkanit.

4.1 VR-sisu
4.1.1 Ekraani värskendussagedus
Siinne kontseptsioon sarnaneb 3.1.1 ekraani värskendussagedusega.

  • Natiivsete arendajate puhul vaadake XrEventDataDisplayRefreshRateChangedFB-d.
  • Unity arendajate jaoks vaadake seda juhendit.
  • Unreali arendajate jaoks vaadake seda juhendit.

4.1.2 Eyebufferi resolutsioon
Siinne kontseptsioon sarnaneb paragrahviga 3.1.2 Eyebuffer Resolution. Soovitame mitte vähendada skaleerimistegurit alla 0.7, kuna see võib põhjustada vastuvõetamatut visuaalset kvaliteeti.

  • Natiivsete arendajate jaoks vaadake xrCreateSwapchaini. Suuruse muutmisel peaksite laiuse ja kõrguse korrutama suhtega.
  • Unity arendajate jaoks vaadake järgmist näidetample // C#
    XRSettings.eyeTextureResolutionScale = 0.7f; //soovitatav 1.0f~0.7f
  • Unreali sätete kohta vaadake seda juhendit.

4.1.3 Multi-View Renderdamine
Siinne kontseptsioon on sarnane punktiga 3.1.3 MitmekordneView Renderdamine. See funktsioon vähendab protsessori koormust ja ka graafikakaardil on mõned eelised. Soovitame selle funktsiooni lubada.

  • Natiivarendajatele pakub KhronosGroup OpenXR Multi-View exampee, vaadake seda juhendit.
  • Unity arendajate puhul vaadake renderdamisrežiimi, üks läbimine on mitmekordneview funktsiooni.
  • Unreali arendajate jaoks, nagu ka VIVE Wave'i sätete puhul, vaadake seda juhendit.

4.1.4 Foveation [Ei toeta Unreali]
Siinne kontseptsioon sarnaneb punktiga 3.1.4 Foveation. Foveated renderdamine on loodud peamiselt GPU koormuse vähendamiseks, kuid selle lubamine toob kaasa fikseeritud GPU jõudluskulu ja kui foveation on seatud liiga madalale ning kasutatakse teatud materjale või tekstuure, võib see muutuda väga...
kasutajale märgatav. Seetõttu on soovitatav funktsioon lubada või keelata vastavalt oma konkreetsetele vajadustele ja jõudluskaalutlustele. Praegu toetatakse Foveated funktsionaalsust ainult OpenGL ES-is VIVE OpenXR SDK-l.

  • Natiivarendajatele on see funktsioon saadaval, kuid praegu pole seda olemas.amples on ette nähtud.
  • Unity arendajate jaoks vaadake seda juhendit.
  • Unreali arendaja jaoks see funktsioon hetkel ei toetata.

4.1.5 Renderdusmask [Ei toetata Unrealit]
Siinne kontseptsioon sarnaneb versiooniga 3.1.8 Render Mask.

  • Natiivsete arendajate puhul kasutage võrgusilma saamiseks XrVisibilityMaskKHR-i. Enne stseeni renderdamist kasutage seda võrgusilma sügavuspuhvri väärtuste täitmiseks.
  • Unity arendajate jaoks on renderdusmaski funktsioon OpenGL ES puhul vaikimisi lubatud ja selle saab keelata järgmise koodiga; Vulkan seda funktsiooni hetkel ei toeta. //C# UnityEngine.XR.XRSettings.occlusionMaskScale = 0.0f;
  • Unreali arendajate jaoks ei toetata hetkel Render Maski funktsiooni.

4.2 MR-sisu
OpenXR ei toeta hetkel läbilaskvuse kvaliteedi ja kaadrisageduse seadistamist. Jätkame läbilaskvuse funktsiooni optimeerimist ja parandamist, seega on soovitatav, et arendajad värskendaksid seadme FOTA versiooni, et see ajakohasena püsiks.

Üldine optimeerimine

5.1 Lülitage suure jõudlusega režiim välja
„Kõrge jõudlusrežiimi” väljalülitamine võib vähendada seadme ekraani suurust ja seeläbi graafikaprotsessori kasutust. Selle puuduseks on ekraani eraldusvõime vähenemine. Saate kvaliteedi ja jõudluse tasakaalu abil otsustada, kas see lubada.
VIVE Focus 3 seadistuskoht on näidatud joonisel 5-1-1:

VIVE VR-i renderdusjõudlus – joonis 5

VIVE XR Elite'i seadistuste asukoht on näidatud joonisel 5-1-2:

VIVE VR-i renderdusjõudlus – joonis 6

5.2 Multisampling Anti-Aliasing
Multidampling on anti-aliasing-tehnikat, mida kasutatakse sakiliste servade silumiseks, kiirendatakse tavaliselt riistvara abil, mis põhjustab graafikakaardi jõudluse kulusid. Soovitame MSAA-d mitte seada kõrgemaks kui 2x, sest suurem väärtus tarbib rohkem graafikakaarti.

  • Natiivsetele arendajatele, MSAA OpenGL ES ex-idample võib sellele viidata; MSAA Vulkan exampler saab sellele viidata.
    Adreno GPU pakub laiendust, mis optimeerib MSAA-d.
  • Unity arendajate puhul vaadake seda gildi.
  • Unreali arendajate puhul vaadake seda gildi. Unreal pakub ka järeltöötlust anti-ali jaoks.asing, vaadake seda gildi.

5.3 GMEM-i laadimine/salvestamine
Adreno GPU arhitektuuris on funktsioon, mis võimaldab renderdamissihtmärgi sidumisel renderdamissihtmärgi väärtused graafikamällu laadida (GMEM-laadimine), kui see ei kustu või muutub kehtetuks. Seda nimetatakse GMEM-laadimiseks. Kui eelnevaid väärtusi pole vaja, saab renderdamissihtmärgi tühjendamise või kehtetuks muutmise abil enne renderdamist seda olukorda vältida ja GPU jõudlust parandada.
GMEM-i laadimist saab vältida järgmiste meetodite abil. OpenGL ES-is saab pärast FBO sidumist värvi-, sügavus- ja šabloonipuhvri tühjendamiseks kutsuda glCleari ja glClearDepthi või määratud renderdamissihtmärgi kehtetuks tunnistamiseks kutsuda glInvalidateFramebufferit. Vulkanis pole täiendavaid juhiseid vaja; VkAttachmentDescription.loadOp-is saab enne kasutamist selgesõnaliselt määrata, kas manus kustutada.
Samamoodi nimetatakse plaatide renderduse tulemuse graafikamälust põhimällu salvestamist GMEM-salvestuseks; see toiming on GPU jaoks samuti kulukas. Selle vältimiseks soovitame siduda ainult vajalikud renderduse sihtmärgid, et vältida ebavajalikke salvestustoiminguid.

5.4 Kompositsioonikiht (mitmekihiline)
Mitmekihilise režiimi abil kuvatud tekstuuridel on parem visuaalne kvaliteet. See funktsioon suurendab aga oluliselt graafikakaardi jõudlust kihtide arvu ja tekstuuride suurusega. Soovitame mitte kasutada üle kolme kihi.

  • Natiivsete arendajate jaoks
    o VIVE Wave SDK kasutab iga kihi andmete edastamiseks WVR_SubmitFrameLayersi.
    o VIVE OpenXR SDK paigutab kihi andmed XrFrameEndInfo faili ja esitab need xrEndFrame'i kaudu.
  • Unity arendaja jaoks
    o VIVE Wave SDK seadete kohta vaadake seda juhendit,
    VIVE OpenXR sätete kohta vaadake seda juhendit.
  • Unreal arendaja jaoks,
    VIVE Wave SDK sätete kohta vaadake seda juhendit.
    VIVE OpenXR sätete kohta vaadake seda juhendit.

5.5 protsessori piik
Kui protsessori koormus on suurem ja mõned taustal töötavad kõrge prioriteediga lõimed võivad algse täitmise katkestada. Me ei saa garanteerida, et sisurakenduse tööd ei katkesta teised lõimed.
Selliste probleemide ilmnemisel võite proovida suurendadaasinMuutke lõime prioriteeti, et näha, kas see lahendab probleemi. Aga kui muudate lõime konfiguratsiooni seadmete optimeerimiseks, peate kontrollima, kas sellel on negatiivset mõju.

  • Unity arendajate puhul vaadake Androidi lõimede konfigureerimise funktsiooni. Kui kasutate VIVE Wave SDK-d, on meil WaveXRSettings'is funktsioon, mis võimaldab teil prioriteeti reguleerida, nagu on näidatud joonisel 5-5-2. Väiksem väärtus tähistab kõrgemat prioriteeti.

VIVE VR-i renderdusjõudlus – joonis 7

  • Unrealil pole meetodit mängulõime, lõime renderdamise ja RHI lõime prioriteedi muutmiseks väliste sätete kaudu, kui te ei muuda mootori koodi.

Autoriõigus © 2024 HTC Corporation. Kõik õigused kaitstud.VIVE logo

Dokumendid / Ressursid

VIVE VR-i renderdusjõudlus [pdfKasutusjuhend
VR-i renderdamise jõudlus, renderdamise jõudlus, jõudlus

Viited

Jäta kommentaar

Teie e-posti aadressi ei avaldata. Kohustuslikud väljad on märgitud *