Používateľská príručka VIVE VR Rendering Performance

VIVE VR Rendering Performance - Featured Image

Logo VIVEVýkon vykresľovania VR
Ladenie a optimalizácie

Úvod

Dosiahnutie optimálneho zážitku z VR na hardvéri s obmedzenými zdrojmi je kľúčom k poskytovaniu plynulého a pohodlného používateľského zážitku. Ak snímková frekvencia vykresľovania obsahu klesne alebo je nestabilná pod obnovovacou frekvenciou zariadenia, povedie to k chveniu a trhaniu snímok, nevoľnostiam z pohybu atď. nakoniec negatívne ovplyvniť používateľskú skúsenosť. Preto je optimalizácia výkonu obsahu veľmi dôležitá na zabezpečenie príjemného zážitku.
Pred začatím ladenia výkonu je dôležité pochopiť, kde sú prekážky výkonu, aby ste sa vyhli neefektívnemu ladeniu. Tento dokument je navrhnutý tak, aby pomohol vývojárom identifikovať slabé miesta výkonu a ponúknuť riešenia na vyriešenie problémov s výkonom vykresľovania.
Dokument je usporiadaný do nasledujúcich sekcií:

  • Kapitola 2: Identifikujte úzke miesto – Táto časť pomáha vývojárom identifikovať, kde sa nachádzajú úzke miesta.
  • Kapitola 3 a 4: Nastavenia VIVE Wave a VIVE OpenXR – Tieto časti uvádzajú špecifické nastavenia, ktoré môžu ovplyvniť výkon CPU/GPU pre aplikácie VIVE Wave a OpenXR. Vývojári môžu experimentovať s povolením alebo zakázaním týchto funkcií na základe úzkych miest výkonu, aby zistili, či došlo k nejakému zlepšeniu.
  • Kapitola 5: Bežná optimalizácia – Táto časť zdieľa niektoré bežné optimalizačné postupy a skúsenosti.

Identifikujte úzke miesto

Keď sa HMD pohybuje, ak má aplikácia VR/MR chvenie snímok alebo čierny okraj atď., zvyčajne je to spôsobené zlým výkonom vykresľovania. Problémy s výkonom vykresľovania možno zvyčajne kategorizovať do 2 typov: viazané na CPU alebo viazané na GPU. Pochopte, ktoré typy viazania pre vašu aplikáciu sú na začiatku veľmi dôležité, aby ste sa vyhli neefektívnemu ladeniu.
V tejto kapitole uvádzame jednoduché kroky, ktoré vám umožnia rýchlo zistiť, kde sú problémy s výkonom.

2.1 Skontrolujte FPS vykresľovania obsahu
Najprv začneme skontrolovaním FPS obsahu, čo je počet snímok, ktoré obsah vykreslí za sekundu. Mala by byť udržiavaná na snímkovej frekvencii displeja a stabilná. V opačnom prípade to môže spôsobiť chvenie snímky.
Ak vaša aplikačná súprava SDK používa VIVE WAVE SDK 6.0.0 alebo novšiu, na kontrolu FPS môžete použiť nasledujúci príkaz adb. DK 6.0.0
$adb Logcat -s VRMetric
Uvidíte nasledujúce údaje denníka.
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” Prvé číslo predstavuje FPS obsahu, zatiaľ čo druhé číslo predstavuje snímkovú rýchlosť zobrazenia.
Ak je vaša verzia Wave SDK nižšia ako 6.0.0, odporúča sa inovovať na najnovšiu verziu, aby sa zlepšil výkon vykresľovania a iná optimalizácia.
Ak je vaša aplikácia SDK postavená s VIVE OpenXR. Na kontrolu FPS môžete použiť nasledujúci príkaz adb.
$adb Logcat -s RENDER_ATW
Uvidíte nasledujúce údaje denníka
RENDER_ATW: [FPS] nová textúra: 90.00
RENDER_ATW: [FPS] R prítomný:90.00 preskočenie:0 317, -0.0155 0.805527, 0.006788)
RENDER_ATW: [FPS] L prítomný:90.00 preskočenie:0 (0.592301, -0.015502, 0.805539, 0.006773)

Číslo za „novou textúrou“ predstavuje aktuálne FPS obsahu. Číslo za „R prítomné“ a „L prítomné“ predstavuje snímkovú rýchlosť zobrazenia.
Niekedy môže dôjsť k miernemu rozdielu medzi FPS obsahu a snímkovou frekvenciou zobrazenia.
Napríkladample, vo vyššie uvedenom prípade možno 89.8 FPS považovať za 90 FPS.
Ak je FPS obsahu aplikácie trvalo nižšia ako snímková frekvencia zobrazenia alebo zostáva nestabilná, znamená to problém s výkonom vykresľovania. Ďalším krokom je preto zistiť, či prekážka pochádza z CPU alebo GPU.
2.2 Skontrolujte využitie CPU a GPU
Ak vaša aplikačná súprava SDK používa VIVE WAVE SDK 6.0.0 alebo novšiu, na kontrolu FPS môžete použiť nasledujúci príkaz adb.
$adb logcat -s VRMetric
Uvidíte nasledujúce údaje denníka.
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
Ako môžete vidieť vo vyššie uvedenom výsledku protokolu, využitie CPU je 27 % a využitie GPU je 72 % Ak je vaša verzia Wave SDK nižšia ako 6.0.0, odporúča sa inovovať na najnovšiu verziu, aby sa zlepšil výkon vykresľovania a iná optimalizácia.
Pre aplikáciu VIVE OpenXR môžete použiť nasledujúci príkaz na kontrolu využitia CPU a GPU.
# na linux/ubuntu
$ adb logcat | grep CPU_USAGE
# na powershell
$ adb logcat | Select-String -Pattern CPU_USAGE
Uvidíte nasledujúci protokol
CPU priem. CPU0 CPU1 CPU2 CPU3 CPU4 CPU5 CPU6 CPU7 GPU VYUŽITIE CPU [LOAD] 25.67 % 32.22 % 25.29 % 30.77 % 29.35 % 21.35 % 22.09 % 18.39 % 24.14 % 73 %
Ak zistíte, že FPS nedokáže udržať snímkovú frekvenciu displeja a využitie GPU je tiež veľmi vysoké, zvyčajne presahuje 85 %, môžete skúsiť upraviť rozlíšenie Eyebuffer Resolution (časť 3.1.2, časť 4.1.2), aby ste zistili, či to zlepšuje FPS. Ak táto úprava vedie k lepšiemu
výkonu, môžeme dospieť k záveru, že problém je viazaný na GPU a podľa toho zamerať naše optimalizačné úsilie.
Na druhej strane, ak úprava rozlíšenia Eyebuffer Resolution nevedie k výraznému zlepšeniu výkonu, prekážka je pravdepodobne viazaná na CPU a mali by sme sa zamerať na optimalizáciu výkonu CPU.
Je tiež možné, že aplikácia je súčasne viazaná na CPU aj GPU. V takýchto prípadoch by sa malo na CPU aj GPU použiť optimalizačné úsilie, aby sa dosiahlo vyvážené zlepšenie výkonu.
2.3 viazaný na GPU
Keď je aplikácia VR viazaná na GPU, znamená to, že GPU je primárnou prekážkou a nedokáže držať krok s nárokmi aplikácie na vykresľovanie. Ak chcete zmierniť problémy s GPU, zvážte nasledujúce odporúčania:
Najprv použite nástroje na profilovanie ako RenderDoc alebo Game Engine profiler (Unity Profiler, Unreal Insights) na analýzu toho, kde GPU trávi väčšinu svojho času. Identifikujte najnákladnejšie operácie a zamerajte sa na ich optimalizáciu.
V prípade Native Developer môžete použiť RenderDoc na identifikáciu toho, ktoré volanie kreslenia spôsobuje nadmerné zaťaženie GPU.
V prípade Unity Developer môžete postupovať podľa tohto dokumentu Unity alebo pomocou RenderDoc analyzovať problém s výkonom vykresľovania a postupovať podľa dokumentácie k optimalizácii grafiky Unity, kde nájdete pokyny na optimalizáciu vašej aplikácie.
Pre Unreal Developer môžete použiť GPU Visualizer alebo RenderDoc na analýzu problému s výkonom vykresľovania a postupujte podľa pokynov pre Unreal Performance Guidelines na optimalizáciu vašej aplikácie.
Po druhé, môžete tiež skúsiť upraviť určité funkcie alebo nastavenia Wave, aby ste znížili zaťaženie GPU.

  1. Nastaviť pomalšiu obnovovaciu frekvenciu displeja (časť 3.1.1, časť 4.1.1)
  2.  Úprava rozlíšenia očného nárazníka (časť 3.1.2, časť 4.1.2), 14.1.1)
  3.  Skúste povoliť Foveation (časť 3.1.4, časť 4.1.4).

Ak je vaša aplikácia aj aplikáciou MR, môžete upraviť aj nastavenia Passthrough.

  1. Upravte nižšiu kvalitu prechodového obrazu. (časť 3.2.1)
  2. Upravte rýchlosť prechodu pomalšie. (časť 3.2.2).

Ďalšie nastavenia týkajúce sa výkonu GPU nájdete v kapitole 2.6.

2.4 viazané na CPU
Keď je aplikácia VR viazaná na CPU, znamená to, že CPU je primárnym prekážkou, zvážte nasledujúce odporúčania:
Najprv použite nástroje na profilovanie ako Systrace alebo Game Engine profiler (Unity Profiler, Unreal Insights) na analýzu a identifikáciu, ktoré časti vášho kódu spotrebúvajú najviac zdrojov CPU. Zamerajte sa na optimalizáciu týchto oblastí a refaktorujte výpočtovo náročné algoritmy, aby ste znížili zaťaženie procesora.

  • Pre Native Developer môžete použiť Systrace na proffiler váš projekt.
  • Pre Unity Developer môžete použiť CPU Usage Profiler, aby ste našli problém s výkonom CPU.
  • Pre Unreal Developer môžete použiť Unreal's Insights na nájdenie problému s výkonom CPU.

Po druhé, môžete tiež skúsiť upraviť určité funkcie alebo nastavenia Wave, aby ste znížili zaťaženie GPU.

  1. Nastaviť pomalšiu obnovovaciu frekvenciu displeja (časť 3.1.1, časť 4.1.1)
  2.  Použiť viac-View Vykresľovanie (časť 3.1.4, časť 4.1.4)

Ak je vaša aplikácia aj aplikáciou MR, môžete upraviť aj nastavenia Passthrough.

  1. Nastavte pomalšiu rýchlosť prechodu (časť 3.2.2).

Ďalšie nastavenia výkonu CPU nájdete v kapitole 2.6.

2.5 Zhrnutie
Nakoniec sme vyššie uvedený pracovný postup kontroly výkonu usporiadali do obrázku 2-5-1. Začnite kontrolou FPS obsahu. Ak je nižšia ako snímková frekvencia displeja alebo zostáva nestabilná, analyzujte využitie GPU/CPU a zistite, či je viazané na GPU alebo CPU. Nakoniec použite profesionálafiler na identifikáciu potenciálnych problémov s výkonom alebo úpravu funkcií alebo nastavení Wave na optimalizáciu výkonu procesora.

Výkon vykresľovania VIVE VR - Obr

2.6 Rýchly prehľad Ktoré nastavenia môžu zlepšiť zaťaženie CPU/GPU

Uveďte nastavenia súpravy SDK, ktoré súvisia so zaťažením CPU/GPU, ako je uvedené nižšie. Pri kontrole príslušných nastavení optimalizácie môžete vychádzať z úzkych miest aplikácie.

Súvisiace s CPU:

  • Nastavenie VIVE Wave SDK
    o Obsah VR
    ▪ 3.1.1 Obnovovacia frekvencia displeja
    ▪ 3.1.4 ViacnásobnéView Vykresľovanie
    ▪ 3.1.6 Adaptívna kvalita
    ▪ 3.1.7 Adaptive Motion Compositor
    o Obsah MR
    ▪ 3.2.2 Upravte rýchlosť prenosu snímok
  • Nastavenie VIVE OpenXR SDK
    o Obsah VR
    ▪ 4.1.1 Obnovovacia frekvencia displeja
    ▪ 4.1.4 ViacnásobnéView Vykresľovanie
  • Spoločná optimalizácia
    o 5.5 CPU špička

Súvisiace s GPU:

  • Nastavenie VIVE Wave SDK
    o Obsah VR
    ▪ 3.1.1 Obnovovacia frekvencia displeja
    ▪ 3.1.2 Rozlíšenie Eyebuffer
    ▪ 3.1.3 ViacnásobnéView Vykresľovanie
    ▪ 3.1.4 Foveation
    ▪ 3.1.5 Frame Sharpness Enhancement (FSE)
    ▪ 3.1.6 Adaptívna kvalita
    ▪ 3.1.7 Adaptive Motion Compositor
    ▪ 3.1.8 Render Mask [Not Support Unreal]
    o Obsah MR
    ▪ 3.2.1 Úprava kvality prechodu
    ▪ 3.2.2 Upravte rýchlosť prenosu snímok
  • Nastavenie VIVE OpenXR SDK
    o Obsah VR
    ▪ 4.1.1 Obnovovacia frekvencia displeja
    ▪ 4.1.2 Rozlíšenie Eyebuffer
    ▪ 4.1.3 ViacnásobnéView Vykresľovanie
    ▪ 4.1.4 Foveation [Not Support Unreal]
    ▪ 4.1.5 Render Mask [Not Support Unreal]
  • Spoločná optimalizácia
    o 5.1 Vypnite režim vysokého výkonu
    o 5.2 Multisampling
    o 5.3 Načítanie/uloženie GMEM
    o 5.4 Kompozičná vrstva (viacvrstvová)

Nastavenie vlny VIVE

VIVE Wave je otvorená platforma a sada nástrojov, ktorá vám umožňuje jednoducho vyvíjať obsah VR a poskytuje vysokovýkonnú optimalizáciu zariadení pre partnerov tretích strán. VIVE Wave podporuje herné motory Unity a Unreal.
Neustále optimalizujeme a riešime rôzne chyby, preto odporúčame aktualizovať SDK.
VIVE Wave v súčasnosti podporuje iba OpenGL ES. Tu je zoznam funkcií zoradených podľa vplyvu na výkon GPU. Rozdelíme to na dve časti: obsah VR a obsah MR.
3.1 Obsah VR
3.1.1 Obnovovacia frekvencia displeja

Vyššie obnovovacie frekvencie ponúkajú plynulejší obraz, ale prinášajú so sebou zvýšené zaťaženie systému. Naopak, nižšie obnovovacie frekvencie znižujú zaťaženie systému, ale vedú k menej plynulému obrazu. Ak má aplikácia problém s viazanosťou na CPU/GPU, môžete skúsiť znížiťasinZnížte obnovovaciu frekvenciu displeja, aby ste problém zmiernili.

  • Informácie o natívnom vývojárovi nájdete v časti WVR_SetFrameRate.
  • Pre vývojárov Unity si pozrite túto príručku.
  • Pre vývojárov Unreal si pozrite túto príručku.

3.1.2 Rozlíšenie očného nárazníka
Rozlíšenie Eyebuffer je veľkosť textúry obsahu aplikácie, ktorá sa má vykresliť, vykreslená textúra sa odošle do behu, aby vykonal proces odosielania a zobrazila sa na displeji HMD.
Väčšia veľkosť vyrovnávacej pamäte môže síce viesť k jasnejšiemu a detailnejšiemu obrazu, no zároveň výrazne zaťažuje GPU. Preto je nevyhnutné nájsť správnu rovnováhu medzi vizuálnou kvalitou a výkonom.
Ak má aplikácia problém s viazanosťou na GPU, môžete skúsiť decreasinVeľkosť očného vyrovnávača vynásobte faktorom mierky. Odporúčame však neznižovať faktor mierky pod 0.7, pretože to môže viesť k neprijateľnej vizuálnej kvalite.

  • Informácie o natívnom vývojárovi nájdete vo WVR_ObtainTextureQueue. Pri nastavovaní veľkosti by ste mali šírku a výšku vynásobiť pomerom.
  • Vývojár Unity nájdete v časti WaveXRSettings.
    Prípadne môžete vykonať zmeny pomocou kódu ako nižšie.
    XRSettings.eyeTextureResolutionScale = ResolutionScaleValue; // C#
  • Pre vývojárov Unreal si pozrite SetPixelDensity.

3.1.3 ViacnásobnéView Vykresľovanie
Pri tradičnom vykresľovaní kreslíme ľavé a pravé oko oddelene, čo si vyžaduje dve výzvy na kreslenie pre rovnakú scénu. viac-View Rendering rieši tento problém vykonaním iba jedného žrebovania.
Táto funkcia znižuje zaťaženie CPU oasinpočet volaní kreslenia. GPU má tiež určité výhody, pracovné zaťaženie vertex shaderu sa tiež znižuje, pretože nemusí spúšťať ďalší shader pre druhé oko, ale pracovné zaťaženie fragment shaderu zostáva nezmenené, pretože stále musí vyhodnotiť každý pixel pre obe oči. Odporúčame túto funkciu povoliť.

  • V prípade natívneho vývojára si môžete pozrieť wvr_native_hellovr sample.
  • Pre vývojárov Unity si pozrite režim vykresľovania, jeden prechod je viacnásobnýview vlastnosť.
  • Pre vývojárov Unreal si pozrite túto príručku.

3.1.4 Foveácia
Foveated rendering je primárne určený na zníženie zaťaženia GPU. Znižuje detaily rámu v okrajovej časti displeja a zachováva detaily vo vysokom rozlíšení v strede poľa view. Ak má aplikácia problém s GPU, môžete skúsiť povoliť vykresľovanie Foveation.

Výkon vykresľovania VIVE VR - Obr

Pri používaní foveation je potrebné si všimnúť niečo:

➢ Používatelia si zvyčajne nevšimnú znížené detaily v okrajových oblastiach pri použití predvoleného režimu foveation. Ak je však periférna kvalita foveácie nastavená príliš nízko, môže to byť pre používateľa viditeľné.
➢ Efekty foveácie môžu byť výraznejšie pri určitých materiáloch s textúrou, ktoré by mohli upútať pozornosť užívateľa. Vývojári by si to mali uvedomiť a podľa toho to vyhodnotiť.
➢ Povolenie funkcie foveated rendering má za následok fixné náklady na výkon GPU, ktoré sa môžu pohybovať od 1 % do 6 % v závislosti od veľkosti vyrovnávacej pamäte oka. Pri použití jednoduchého shadera v scéne môže byť zvýšenie výkonu z úspory zdrojov nižšie ako fixné náklady na výkon GPU, čo môže viesť k poklesu výkonu.

  • Informácie o natívnom vývojárovi nájdete v tejto príručke.
  • Pre vývojárov Unity si pozrite túto príručku. Predovšetkým, keď povolíte následné spracovanie alebo HDR, foveation sa nedá plne využiť. Pretože Unity bude vykresľovať objekty na svoju vlastnú vygenerovanú textúru renderu, a nie na vykreslenú textúru súčasného generovania, ktorá podporuje foveáciu.
  • Pre vývojárov Unreal si pozrite túto príručku. Je pozoruhodné, že foveation nemožno plne využiť na Multi-View Vykresľovanie, pretože Unreal nedokáže priamo vykresľovať objekty na vykresľovaciu textúru vygenerovanú runtime, ktorá podporuje foveáciu.

3.1.5 Zlepšenie ostrosti rámu (FSE)
FSE poskytuje výsledok vykresľovania doostrenia prostredníctvom zavedenia filtra na zaostrenie, môže sprehľadniť obsah a celkom pomôcť zlepšiť jasnosť textu v scéne. Ak má aplikácia problém s GPU, môžete zvážiť vypnutie FSE, ak to nie je nevyhnutné.

Výkon vykresľovania VIVE VR - Obr

  • Informácie o natívnom vývojárovi nájdete v tejto príručke.
  • Pre vývojárov Unity si pozrite túto príručku.
  • Pre vývojárov Unreal si pozrite túto príručku.

3.1.6 Adaptívna kvalita
Aby sa šetrila batéria a zachoval sa výkon vykresľovania zariadenia, táto funkcia automaticky upravuje úrovne výkonu hodín CPU/GPU na základe ich využitia. Okrem toho je možné implementovať ďalšie stratégie na zvýšenie výkonu, ako je automatické zapnutie/vypnutie Foveation alebo obsah sa môže sám prispôsobiť, ak prijíma udalosti s vysokou/nízkou záťažou.

  • Informácie o natívnom vývojárovi nájdete v tejto príručke.
  • Pre vývojárov Unity si pozrite túto príručku. V našom doplnku Unity je možné veľkosť vyrovnávacej pamäte automaticky upraviť na základe aktuálneho výkonu; Veľkosť textu odfiltruje hodnoty mierky, ktoré sú v zozname Rozlíšenie príliš malé. Odporúčame text s veľkosťou aspoň 20 dmm alebo viac.
  • Pre vývojárov Unreal si pozrite túto príručku.

3.1.7 Adaptive Motion Compositor
Táto funkcia je experimentálna funkcia, ktorá zahŕňa UMC a PMC. UMC zníži snímkovú frekvenciu na polovicu a extrapoluje novú snímku v reálnom čase, aby sa zachovala vizuálna plynulosť. Prichádza však s určitou latenciou, artefaktmi a načítaním GPU.
PMC primárne používa Depth Buffer, aby umožnil ATW zohľadňovať preklad HMD, rozšíriť až na 6-dof kompenzáciu. Táto funkcia môže znížiť latenciu prekladu o 1 až 2 snímky, ale zvýšiť zaťaženie GPU.

  • Informácie o natívnom vývojárovi nájdete v tejto príručke.
  • Pre vývojárov Unity si pozrite túto príručku.
  • Pre vývojárov Unreal si pozrite túto príručku.

3.1.8 Vykresľovacia maska ​​[nepodporované neskutočné]
Pixely na okrajoch sa po skreslení stanú takmer neviditeľnými, maska ​​vykresľovania upravuje hodnoty hĺbkovej vyrovnávacej pamäte týchto neviditeľných pixelov. Ak povolíte hĺbkové testovanie, kvôli skorému-z sa tieto neviditeľné pixely nevykreslia, čím sa zníži zaťaženie GPU. Táto funkcia je užitočná, ak sa v týchto neviditeľných oblastiach nachádzajú objekty vykresľovania s vysokou záťažou; v opačnom prípade, ak sa v týchto oblastiach nenachádzajú žiadne objekty vykresľovania, odporúčame to zakázať, pretože spotrebuje malé množstvo GPU.

  • Informácie o natívnom vývojárovi nájdete v tejto príručke. Pred volaním RenderMask musíte naviazať vyrovnávaciu pamäť hĺbky; inak bude neúčinná.
  • Pre vývojárov Unity si pozrite túto príručku.
  • Pre vývojárov Unreal momentálne nepodporuje funkciu Render Mask.

3.2 Obsah MR
3.2.1 Upravte kvalitu prechodu
Existujú 3 úrovne kvality prechodového obrazu:
➢ WVR_PassthroughImageQuality_DefaultMode – vhodné pre obsah MR bez špecifických požiadaviek.
➢ WVR_PassthroughImageQuality_PerformanceMode – vhodné pre obsah MR, ktorý potrebuje viac prostriedkov GPU na vykresľovanie virtuálnej scény.
➢ WVR_PassthroughImageQuality_QualityMode – vhodný pre obsah MR, ktorý umožňuje používateľom jasne vidieť okolité prostredie, ale virtuálna scéna obsahu musí mať pre výkon jemnejšie doladenie.
Kvalitu Passthrough môžete upraviť na PerformanceMode, aby ste znížili využitie GPU.

  • Pre vývojárov Native, Uunity alebo Unreal si pozrite túto príručku.

3.2.2 Upravte prenosovú snímkovú frekvenciu
Rovnako ako obnovovacia frekvencia displeja, vyššia snímková frekvencia Passthrough ponúka plynulejší obraz, ale za cenu zvýšeného zaťaženia systému. Naopak, nižšia obnovovacia frekvencia znižuje zaťaženie systému, ale výsledkom je menej plynulý obraz. K dispozícii sú 2 režimy prenosovej snímkovej rýchlosti: Boost a Normal.

  • Pre natívneho vývojára môže upraviť kvalitu prechodu pomocou WVR_SetPassthroughImageRate.
  • Pre vývojára Unity sa môže zmeniť pomocou kódu, naprampnastavenia súboru sú nasledovné // C#
    Interop.WVR_SetPassthroughImageQuality(WVR_PassthroughImageQuality.PerformanceMode);
  • V prípade vývojára Unreal si spôsob nastavenia pozrite v návrhu uzla na obrázku 3-2-2.

Výkon vykresľovania VIVE VR - Obr

Nastavenie VIVE OpenXR

OpenXR je otvorený štandard, ktorý poskytuje spoločnú sadu rozhraní API na vývoj XR aplikácií, ktoré bežia na širokom spektre zariadení VR, vyvinutých spoločnosťou Khronos Group. VIVE Focus 3 a VIVE XR Elite tiež podporujú OpenXR, VIVE OpenXR SDK poskytuje komplexnú podporu pre HTC VR zariadenia, čo umožňuje vývojárom zostavovať Allin-One a obsah s Unity a Unreal engine na HTC VR zariadeniach. Neustále optimalizujeme a riešime rôzne chyby, preto sa odporúča, aby vývojári aktualizovali verziu FOTA svojho zariadenia, aby bola stále aktuálna. VIVE OpenXR SDK v súčasnosti podporuje OpenGL ES a Vulkan.

4.1 Obsah VR
4.1.1 Obnovovacia frekvencia displeja
Koncept je tu podobný 3.1.1 Obnovovacia frekvencia displeja.

  • Informácie o natívnom vývojárovi nájdete v XrEventDataDisplayRefreshRateChangedFB.
  • Pre vývojárov Unity si pozrite túto príručku.
  • Pre vývojárov Unreal si pozrite túto príručku.

4.1.2 Rozlíšenie očného nárazníka
Koncept je tu podobný ako 3.1.2 Eyebuffer Resolution. odporúčame neznižovať mierkový faktor pod 0.7, pretože to môže mať za následok neprijateľnú vizuálnu kvalitu.

  • Informácie o natívnom vývojárovi nájdete v xrCreateSwapchain. Pri nastavovaní veľkosti by ste mali šírku a výšku vynásobiť pomerom. ,
  • Pre vývojárov Unity si pozrite nasledujúci príkladample // C#
    XRSettings.eyeTextureResolutionScale = 0.7f; //odporúčané 1.0f~0.7f
  • Informácie o nastaveniach Unreal nájdete v tejto príručke.

4.1.3 ViacnásobnéView Vykresľovanie
Koncept je tu podobný ako 3.1.3 Multi-View Vykresľovanie. Táto funkcia znižuje zaťaženie CPU, GPU má tiež určité výhody. Odporúčame povoliť túto funkciu.

  • Pre natívnych vývojárov KhronosGroup poskytuje OpenXR Multi-View example, pozrite si túto príručku.
  • Pre vývojárov Unity si pozrite režim vykresľovania, jeden prechod je viacnásobnýview vlastnosť.
  • Pre vývojárov Unreal, rovnako ako nastavenia VIVE Wave, si pozrite túto príručku.

4.1.4 Foveation [Not Support Unreal]
Koncept je tu podobný ako v 3.1.4 Foveation. Foveated vykresľovanie je primárne navrhnuté tak, aby znížilo zaťaženie GPU, ale jeho umožnenie si vyžiada fixné náklady na výkon GPU a ak je foveation nastavené príliš nízko a použijú sa určité materiály alebo textúry, môže byť veľmi
viditeľná pre používateľa. Preto je vhodné povoliť alebo zakázať túto funkciu na základe vašich špecifických požiadaviek a úvah o výkone V súčasnosti je funkcia Foveated podporovaná iba v OpenGL ES na VIVE OpenXR SDK.

  • Pre natívnych vývojárov je táto funkcia k dispozícii, ale v súčasnosti nie je k dispozícii žiadna exampsú poskytnuté.
  • Pre vývojárov Unity si pozrite túto príručku.
  • Pre vývojárov Unreal túto funkciu momentálne nepodporuje.

4.1.5 Vykresľovacia maska ​​[nepodporované neskutočné]
Koncept je tu podobný ako v 3.1.8 Render Mask.

  • Pre vývojárov Native použite XrVisibilityMaskKHR na získanie Mesh. Pred vykreslením scény použite túto sieť na vyplnenie hodnôt vyrovnávacej pamäte hĺbky pred vykreslením scény.
  • Pre vývojárov Unity je funkcia Render Mask predvolene povolená pre OpenGL ES a možno ju vypnúť pomocou nasledujúceho kódu; Vulkan momentálne túto funkciu nepodporuje. //C# UnityEngine.XR.XRSettings.occlusionMaskScale = 0.0f;
  • Pre vývojárov Unreal momentálne nepodporuje funkciu Render Mask.

4.2 Obsah MR
OpenXR momentálne nepodporuje nastavenie Passthrough Quality a Frame Rate. Funkciu Passthrough budeme naďalej optimalizovať a opravovať, preto odporúčame vývojárom aktualizovať verziu FOTA zariadenia, aby bola stále aktuálna.

Spoločná optimalizácia

5.1 Vypnite režim vysokého výkonu
Vypnutím „režimu vysokého výkonu“ sa môže zmenšiť veľkosť displeja zariadenia, čím sa zníži využitie GPU. Nevýhodou je zníženie rozlíšenia obrazovky. Môžete vyvážiť kvalitu a výkon a rozhodnúť sa, či to povolíte.
Miesto nastavenia pre VIVE Focus 3 je zobrazené na obrázku 5-1-1:

Výkon vykresľovania VIVE VR - Obr

Miesto nastavenia pre VIVE XR Elite je zobrazené na obrázku 5-1-2:

Výkon vykresľovania VIVE VR - Obr

5.2 MultisampLing Anti-Aliasing
Multisampling je anti-aliasinTechnika g používaná na vyhladenie zubatých hrán je zvyčajne urýchľovaná hardvérom, čo spôsobuje náklady na výkon GPU. Odporúčame nenastavovať MSAA vyššie ako 2x, pretože vyššia hodnota bude spotrebovávať viac energie GPU.

  • Pre natívneho vývojára, MSAA OpenGL ES exsample sa môže odvolávať na toto; MSAA Vulkan exampler sa môže odvolávať na toto.
    GPU Adreno poskytuje rozšírenie, ktoré optimalizuje MSAA.
  • Vývojár Unity nájdete v tomto spolku.
  • Vývojári Unrealu sa môžu obrátiť na tento cech. Unreal tiež poskytuje postprocessing anti-ali.asing, pozri sa na tento cech.

5.3 Načítanie/uloženie GMEM
V architektúre GPU Adreno existuje funkcia, pri ktorej pri viazaní cieľa vykreslenia, ak sa cieľ vykreslenia nevymaže alebo nezneplatní, pri každom vykreslení sa hodnoty v cieľovom vykreslení načítajú do grafickej pamäte, čo sa nazýva GMEM Load. Ak predchádzajúce hodnoty nie sú potrebné, vymažte alebo zrušte platnosť cieľa vykreslenia pred vykreslením, aby ste sa vyhli tejto situácii a zlepšili výkon GPU.
GMEM Load sa môžete vyhnúť pomocou nasledujúcich metód. V OpenGL ES, po naviazaní FBO, môžete zavolať glClear a glClearDepth na vymazanie vyrovnávacej pamäte farieb, hĺbky a šablóny, alebo zavolať glInvalidateFramebuffer na zrušenie zadaného cieľa vykreslenia. Vo Vulkane nie sú potrebné ďalšie pokyny; môžete explicitne nastaviť, či sa má príloha pred použitím vymazať v súbore VkAttachmentDescription.loadOp.
Podobne ukladanie výsledku dlaždicového vykreslenia späť do hlavnej pamäte z grafickej pamäte sa nazýva GMEM Store; táto operácia je drahá aj pre GPU. Aby ste tomu zabránili, odporúčame viazať iba požadované ciele vykreslenia, aby ste predišli zbytočným operáciám obchodu.

5.4 Kompozičná vrstva (viacvrstvová)
Textúry zobrazené pomocou funkcie Multi-Layer majú lepšiu vizuálnu kvalitu. Táto funkcia však výrazne zvyšuje výkon GPU s počtom vrstiev a veľkosťou textúr. Odporúčame nie viac ako tri vrstvy.

  • Pre natívneho vývojára,
    o VIVE Wave SDK používa WVR_SubmitFrameLayers na odovzdávanie údajov pre každú vrstvu.
    o VIVE OpenXR SDK umiestni údaje vrstvy do XrFrameEndInfo a odošle ich cez xrEndFrame.
  • Pre vývojára Unity,
    o nastavenia VIVE Wave SDK, pozrite si túto príručku,
    o Nastavenia VIVE OpenXR nájdete v tejto príručke.
  • Pre vývojára Unreal,
    o Nastavenia VIVE Wave SDK nájdete v tejto príručke.
    o Nastavenia VIVE OpenXR nájdete v tejto príručke.

Špička 5.5 CPU
Keď je zaťaženie CPU väčšie, niektoré vlákna procesov na pozadí majú vysokú prioritu, môže to prerušiť natívne vykonávanie. Nemôžeme zaručiť, že aplikácia obsahu nebude prerušená iným vláknom.
Ak sa vyskytnú takéto problémy, môžete skúsiť zvýšiťasinZmeňte prioritu vlákna, aby ste zistili, či sa tým problém vyrieši. Ak však zmeníte konfiguráciu vlákna na optimalizáciu pre zariadenia, musíte skontrolovať, či to má nejaký negatívny vplyv.

  • Pre Unity Developer si pozrite funkciu konfigurácie vlákien systému Android. Ak používate VIVE Wave SDK, vo WaveXRSettings máme funkciu, ktorá vám umožňuje upraviť prioritu, ako je znázornené na obrázku 5-5-2. Menšia hodnota predstavuje vyššiu prioritu.

Výkon vykresľovania VIVE VR - Obr

  • Neskutočná žiadna metóda na zmenu vlákna hry, vykresľovania vlákna a priority vlákna RHI prostredníctvom externých nastavení, pokiaľ neupravíte kód motora.

Copyright © 2024 HTC Corporation. Všetky práva vyhradenéLogo VIVE

Dokumenty / zdroje

PDF thumbnailVýkon vykresľovania VR
User Guide · VR Rendering Performance, Rendering Performance, Performance

Položiť otázku

Use this section to ask about setup, compatibility, troubleshooting, or anything missing from this manual.

Položiť otázku

Ask about setup, compatibility, troubleshooting, or anything missing from this manual. Name and email are optional.