ВИВЕ логоПерформансе ВР рендеровања
Подешавање и оптимизације

Увод

Постизање оптималног ВР искуства на хардверу са ограниченим ресурсима је кључно за пружање глатког и удобног корисничког искуства. Ако брзина кадрова у секунди приказивања садржаја падне или је нестабилна испод брзине освежавања уређаја, то ће довести до подрхтавања и застоја кадрова, мучнине у кретању итд., што ће на крају негативно утицати на корисничко искуство. Стога је оптимизација перформанси садржаја веома важна за обезбеђивање пријатног искуства.
Пре него што се започне са подешавањем перформанси, важно је разумети где су уска грла у перформансама како би се избегло неефикасно подешавање. Овај документ је осмишљен да помогне програмерима да идентификују уска грла у перформансама и понуде решења за решавање проблема са перформансама рендеровања.
Документ је организован у следеће одељке:

  • Поглавље 2: Идентификовање уских грла – Овај одељак помаже програмерима да идентификују где се налазе уска грла.
  • Поглавље 3 и 4: Подешавања VIVE Wave и VIVE OpenXR – Ови одељци описују специфична подешавања која могу утицати на перформансе процесора/графичке картице за апликације VIVE Wave и OpenXR. Програмери могу експериментисати са омогућавањем или онемогућавањем ових функција на основу уских грла у перформансама како би утврдили да ли постоји неко побољшање.
  • Поглавље 5: Уобичајена оптимизација – Овај одељак дели неке уобичајене праксе и искуства оптимизације.

Идентификујте уско грло

Када се HMD креће, ако VR/MR апликација има подрхтавање кадра или црне ивице итд., то је обично узроковано лошим проблемом са перформансама рендеровања. Типично, проблеми са перформансама рендеровања могу се поделити у 2 типа: проблеми везани за CPU или проблеми везани за GPU. Веома је важно да на почетку разумете које врсте ограничења постоје за вашу апликацију како бисте избегли неефикасно подешавање.
У овом поглављу, пружамо једноставне кораке који вам омогућавају да брзо идентификујете где су проблеми са перформансама.

2.1 Проверите број фрејмова у секунди (FPS) при рендеровању садржаја
Прво, почињемо провером броја фрејмова у секунди (FPS) садржаја, односно броја фрејмова које садржај може да рендерује у секунди. Требало би да се одржава на нивоу фрејмова екрана и да се одржава стабилним. У супротном, може доћи до подрхтавања фрејмова.
Ако ваш SDK апликације користи VIVE WAVE SDK 6.0.0 или новији, можете користити следећу adb команду да бисте проверили FPS. DK 6.0.0
$adb Logcat -s VRMetric
Видећете следеће податке дневника.
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“ Први број представља FPS садржаја, док други број представља брзину кадрова на екрану.
Ако је ваша верзија Wave SDK-а старија од 6.0.0, препоручује се надоградња на најновију верзију како би се побољшале перформансе рендеровања и друге оптимизације.
Ако је ваш SDK апликације изграђен помоћу VIVE OpenXR, можете користити следећу adb команду да бисте проверили FPS.
$adb Logcat -s RENDER_ATW
Видећете следеће податке из дневника
RENDER_ATW: [FPS] нова текстура: 90.00
RENDER_ATW: [FPS] R присутан: 90.00 прескочи: 0 317, -0.0155 0.805527, 0.006788)
РЕНДЕР_АТВ: [ФПС] Л присутан:90.00 прескочи:0 (0.592301, -0.015502, 0.805539, 0.006773)

Број који следи „нова текстура“ представља тренутни број фрејмова у секунди (FPS) садржаја. Број који следи „присутно је R“ и „присутно је L“ представља брзину кадрова на екрану.
Понекад, број фрејмова у секунди (FPS) садржаја и број фрејмова у секунди екрана могу имати мало одступање.
Фор екampтј. у горе наведеном случају, 89.8 FPS може се сматрати као 90 FPS.
Ако је број фрејмова у секунди (FPS) садржаја апликације константно нижи од броја фрејмова на екрану или остаје нестабилан, то указује на проблем са перформансама рендеровања. Стога је следећи корак утврдити да ли уско грло долази из процесора или графичке картице (GPU).
2.2 Проверите употребу процесора и графичке картице
Ако ваш SDK апликације користи VIVE WAVE SDK 6.0.0 или новију верзију, можете користити следећу adb команду да бисте проверили FPS.
$adb logcat -s VRMetric
Видећете следеће податке дневника.
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
Као што можете видети у горњем резултату лог-а, искоришћеност процесора је 27%, а искоришћеност графичке картице је 72%. Ако је ваша верзија Wave SDK-а старија од 6.0.0, препоручује се надоградња на најновију верзију како би се побољшале перформансе рендеровања и друге оптимизације.
За апликацију VIVE OpenXR, можете користити следећу команду да бисте проверили употребу процесора и графичке картице.
# на Линуксу/Убунтуу
$ adb logcat | grep CPU_USAGE
# на PowerShell-у
$ adb logcat | Select-String -Pattern CPU_USAGE
Видећете следећи дневник
Просечно оптерећење процесора CPU0 CPU1 CPU2 CPU3 CPU4 CPU5 CPU6 CPU7 GPU CPU_USAGE [УЧИТАВАЊЕ] 25.67% 32.22% 25.29% 30.77% 29.35% 21.35% 22.09% 18.39% 24.14% 73 %
Ако приметите да број фрејмова у секунди (FPS) не може да одржи брзину кадрова екрана и да је коришћење графичке картице (GPU) веома високо, обично прелази 85%, можете покушати да подесите резолуцију бафера ока (одељак 3.1.2, одељак 4.1.2) да бисте видели да ли то побољшава FPS. Ако ово подешавање доводи до бољег...
перформанси, можемо закључити да је проблем везан за графички процесор и усмерити наше напоре за оптимизацију у складу са тим.
С друге стране, ако подешавање резолуције Eyebuffer-а не резултира приметним побољшањем перформанси, уско грло је вероватно везано за процесор и требало би да се фокусирамо на оптимизацију перформанси процесора.
Такође је могуће да је апликација истовремено ограничена и на процесор и на графичку картицу. У таквим случајевима, напори за оптимизацију треба да се примене и на процесор и на графичку картицу како би се постигла уравнотежена побољшања перформанси.
2.3 Везано са GPU-ом
Када је VR апликација ограничена на GPU, то значи да је GPU главно уско грло и није у стању да прати захтеве апликације за рендеровање. Да бисте ублажили проблеме везане за GPU, размотрите следеће препоруке:
Прво, користите алате за профилисање као што су RenderDoc или Game Engine Profiler (Јединство Проfiler, Unreal Insights) да би се анализирало где графички процесор проводи највише времена. Идентификовати најскупље операције и фокусирати се на њихову оптимизацију.
За Native Developer, можете користити RenderDoc да бисте идентификовали који позив за цртање узрокује прекомерно оптерећење GPU-а.
За програмере у Јунитију, можете пратити овај документ Јунитија или користити РендерДоц за анализу проблема са перформансама рендеровања и пратити документацију о оптимизацији графике Јунитија за смернице за оптимизацију ваше апликације.
За Unreal Developer, можете користити GPU Visualizer или RenderDoc за анализу проблема са перформансама рендеровања и пратити Unreal Performance Guidelines за смернице за оптимизацију ваше апликације.
Друго, можете покушати и да подесите одређене Wave функције или подешавања да бисте смањили оптерећење GPU-а.

  1. Подесите брзину освежавања екрана на мању (одељак 3.1.1, одељак 4.1.1)
  2.  Подесите резолуцију ока (одељак 3.1.2, одељак 4.1.2), 14.1.1)
  3.  Покушајте да омогућите Фовеацију (одељак 3.1.4, одељак 4.1.4).

Ако је ваша апликација такође MR апликација, можете подесити и подешавања Passthrough-а.

  1. Смањите квалитет слике кроз пролаз. (одељак 3.2.1)
  2. Подесите брзину кадрова у пролазу на мању вредност (одељак 3.2.2).

За више других подешавања о перформансама графичке картице, можете погледати поглавље 2.6.

2.4 Ограничено процесором
Када је VR апликација ограничена процесором, то значи да је процесор примарно уско грло, размотрите следеће препоруке:
Прво, користите алате за профилисање као што су Systrace или Game Engine Profiler (Јединство Проfiler, Unreal Insights) да бисте анализирали и идентификовали који делови вашег кода троше највише процесорских ресурса. Фокусирајте се на оптимизацију ових области и рефакторишите рачунски интензивне алгоритме како бисте смањили оптерећење процесора.

  • За Native Developer-е, можете користити Systrace за професионалцеfileр ваш пројекат.
  • За Unity Developer, можете користити CPU Usage Profiler модул за проналажење проблема са перформансама процесора.
  • За Unreal Developer, можете користити Unreal's Insights да бисте пронашли проблем са перформансама процесора.

Друго, можете покушати и да подесите одређене Wave функције или подешавања да бисте смањили оптерећење GPU-а.

  1. Подесите брзину освежавања екрана на мању (одељак 3.1.1, одељак 4.1.1)
  2.  Користите вишеструкоView Рендеровање (одељак 3.1.4, одељак 4.1.4)

Ако је ваша апликација такође MR апликација, можете подесити и подешавања Passthrough-а.

  1. Подесите брзину пропуштања фрејмова на спорије (одељак 3.2.2).

За више других подешавања о перформансама процесора, можете погледати поглавље 2.6.

2.5 Резиме
Коначно, организовали смо горе наведени ток рада за проверу перформанси на слици 2-5-1. Почните провером броја фрејмова у секунди (FPS) садржаја. Ако је нижи од броја фрејмова на екрану или остане нестабилан, анализирајте употребу GPU/CPU-а да бисте утврдили да ли је ограничена GPU-ом или CPU-ом. На крају, користите професионално...filer да бисте идентификовали потенцијалне проблеме са перформансама или подесили Wave функције или подешавања ради оптимизације перформанси процесора.

ВИВЕ ВР перформансе рендеровања – слика 1

2.6 Кратак преглед Која подешавања могу побољшати оптерећење процесора/графичке картице

Наведите подешавања SDK-а која се односе на оптерећење CPU/GPU-а као што је приказано у наставку. Можете проверити релевантна подешавања оптимизације на основу уског грла апликације.

Повезано са процесором:

  • Подешавање VIVE Wave SDK-а
    o VR садржај
    ▪ 3.1.1 Брзина освежавања екрана
    ▪ 3.1.4 ВишеструкоView Рендеринг
    ▪ 3.1.6 Адаптивни квалитет
    ▪ 3.1.7 Адаптивни композитор покрета
    o МР садржај
    ▪ 3.2.2 Подешавање брзине кадрова протока
  • Подешавање VIVE OpenXR SDK-а
    o VR садржај
    ▪ 4.1.1 Брзина освежавања екрана
    ▪ 4.1.4 ВишеструкоView Рендеринг
  • Уобичајена оптимизација
    o 5.5 скок процесора

Повезано са ГПУ-ом:

  • Подешавање VIVE Wave SDK-а
    o VR садржај
    ▪ 3.1.1 Брзина освежавања екрана
    ▪ 3.1.2 Резолуција ока
    ▪ 3.1.3 ВишеструкоView Рендеринг
    ▪ 3.1.4 Фовеација
    ▪ 3.1.5 Побољшање оштрине кадра (FSE)
    ▪ 3.1.6 Адаптивни квалитет
    ▪ 3.1.7 Адаптивни композитор покрета
    ▪ 3.1.8 Маска за рендеровање [Не подржава Unreal] o MR садржај
    ▪ 3.2.1 Подешавање квалитета пролаза
    ▪ 3.2.2 Подешавање брзине кадрова протока
  • Подешавање VIVE OpenXR SDK-а
    o VR садржај
    ▪ 4.1.1 Брзина освежавања екрана
    ▪ 4.1.2 Резолуција ока
    ▪ 4.1.3 ВишеструкоView Рендеринг
    ▪ 4.1.4 Фовеација [Не подржава Unreal] ▪ 4.1.5 Маска за рендеровање [Не подржава Unreal]
  • Уобичајена оптимизација
    o 5.1 Искључите режим високих перформанси
    o 5.2 Мултиampлинг
    o 5.3 Учитавање/складиштење GMEM-а
    o 5.4 Композициони слој (вишеслојни)

Подешавање VIVE Wave-а

VIVE Wave је отворена платформа и скуп алата који вам омогућавају лак развој VR садржаја и пружају високо ефикасну оптимизацију уређаја за независне партнере. VIVE Wave подржава Unity и Unreal гејм енџине.
Континуирано оптимизујемо и решавамо разне грешке, па препоручујемо да SDK буде ажуриран.
Тренутно, VIVE Wave подржава само OpenGL ES. Овде су наведене функције поређане по утицају на перформансе GPU-а. Поделићемо их на два дела: VR садржај и MR садржај.
3.1 ВР садржај
3.1.1 Брзина освежавања екрана

Higher refresh rates offer smoother visuals, but come at the cost of increased system load. Conversely, lower refresh rates reduce system load, but result in less smooth visuals. If App has CPU/GPU bound issue, you can try decreasing the display refresh rate to alleviate the issue.

  • За Native програмере, погледајте WVR_SetFrameRate.
  • За програмере који користе Unity, погледајте овај водич.
  • За Unreal програмере, погледајте овај водич.

3.1.2 Резолуција ока
Резолуција ока је величина текстуре коју садржај апликације треба да рендерује. Рендерована текстура ће бити послата у окружење за извршавање ради објављивања и приказивања на HMD екрану.
Иако већа величина бафера за очи може резултирати јаснијим и детаљнијим визуелним приказима, она такође значајно оптерећује графички процесор. Стога је проналажење праве равнотеже између визуелног квалитета и перформанси од суштинског значаја.
If App has GPU bound issue, you can try decreasing the eyebuffer size by multiply a scale factor. Howerver, we recommend not reducing the scale factor below 0.7, as this may result in unacceptable visual quality.

  • За Native програмере, погледајте WVR_ObtainTextureQueue. Приликом подешавања величине, требало би да помножите ширину и висину са односом.
  • За Unity програмере, погледајте WaveXRSettings.
    Алтернативно, можете извршити измене путем кода као што је приказано испод.
    XRSettings.eyeTextureResolutionScale = ResolutionScaleValue; // C#
  • За Unreal програмере, погледајте SetPixelDensity.

3.1.3 ВишеструкоView Рендеринг
У традиционалном рендеровању, лево и десно око цртамо одвојено, што захтева два позива цртања за исту сцену. ВишеструкоView Рендеровање решава овај проблем извршавањем само једног позива за цртање.
This feature reduces CPU load by decreasing the number of draw calls. The GPU also has some benefits, vertex shader’s workload is also reduced as it doesn’t need to run an additional shader for the other eye, but the fragment shader’s workload remains  unchanged since it still needs to evaluate each pixel for both eyes. We recommand enabling this feature.

  • За Native програмере, можете погледати wvr_native_hellovrampле.
  • За Unity програмере, погледајте режим рендеровања, један пролаз је вишеструкиview карактеристика.
  • За Unreal програмере, погледајте овај водич.

3.1.4 Фовеација
Фовеатирано рендеровање је првенствено дизајнирано да смањи оптерећење графичког процесора. Смањује детаље кадра на периферији екрана и одржава детаље високе резолуције у центру поља viewАко апликација има проблем са везаним ГПУ-ом, можете покушати да омогућите Фовејшн рендеровање.

ВИВЕ ВР перформансе рендеровања – слика 2

Приликом коришћења фовеације потребно је обратити пажњу на следеће:

➢ Корисници обично не примећују смањење детаља у периферним регионима применом подразумеваног режима фовеације. Али ако је периферни квалитет фовеације подешен прениско, корисник би могао да га примети.
➢ Ефекти фовеације могу бити приметнији код одређених материјала или текстура, што би могло привући пажњу корисника. Програмери би требало да буду свесни овога и да то процене у складу са тим.
➢ Омогућавање функције фовеатед рендеровања подразумева фиксне трошкове перформанси ГПУ-а, који могу варирати између 1% и 6% у зависности од величине бафера ока. Када се користи једноставан шејдер у сцени, добитак перформанси од уштеде ресурса може бити мањи од фиксних трошкова перформанси ГПУ-а, што резултира падом перформанси.

  • За Native програмере, погледајте овај водич.
  • За програмере који користе Unity, погледајте овај водич. Приметно је да када омогућите постпроцесирање или HDR, фовеација се не може у потпуности искористити. Јер ће Unity рендеровати објекте на сопствено генерисану текстуру рендеровања, уместо на текстуру рендеровања генерисану током извршавања која подржава фовеацију.
  • За Unreal програмере, погледајте овај водич. Треба напоменути да се фовеација не може у потпуности искористити на Multi-View Рендеровање, јер Unreal не може директно да рендерује објекте на текстуру рендеровања генерисану током извршавања која подржава фовеацију.

3.1.5 Побољшање оштрине кадра (FSE)
FSE пружа изоштреније резултате рендеровања увођењем филтера за изоштравање, што може учинити садржај јаснијим и бити веома корисно за побољшање јасноће текста у сцени. Ако апликација има проблем са везаним графичким процесором, можете размотрити онемогућавање FSE-а ако то није неопходно.

ВИВЕ ВР перформансе рендеровања – слика 3

  • За Native програмере, погледајте овај водич.
  • За програмере који користе Unity, погледајте овај водич.
  • За Unreal програмере, погледајте овај водич.

3.1.6 Адаптивни квалитет
Да би се уштедела батерија и одржале перформансе рендеровања уређаја, ова функција аутоматски подешава нивое перформанси такта процесора/графичке картице на основу њихове употребе. Поред тога, могу се применити и друге стратегије за побољшање перформанси, као што је аутоматско омогућавање/онемогућавање Foveation-а или прилагођавање садржаја ако се приме догађаји високог/ниског оптерећења.

  • За Native програмере, погледајте овај водич.
  • За Unity програмере, погледајте овај водич. У нашем Unity додатку, величина бафера ока може се аутоматски подесити на основу тренутних перформанси; Величина текста ће филтрирати вредности скалирања које су премале у листи резолуција. Препоручујемо текст величине најмање 20 dmm или веће.
  • За Unreal програмере, погледајте овај водич.

3.1.7 Адаптивни композитор покрета
Ова функција је експериментална и укључује UMC и PMC. UMC ће смањити брзину кадрова за половину и екстраполирати нови кадар у реалном времену како би се одржала визуелна глаткоћа. Међутим, долази са извесним кашњењем, артефактима и оптерећењем GPU-а.
PMC првенствено користи дубински бафер како би омогућио ATW-у да узме у обзир HMD транслацију, проширујући се на компензацију од 6 степени свободе. Ова функција може смањити латенцију транслације за 1~2 фрејма, али повећати оптерећење GPU-а.

  • За Native програмере, погледајте овај водич.
  • За програмере који користе Unity, погледајте овај водич.
  • За Unreal програмере, погледајте овај водич.

3.1.8 Маска за рендеровање [Не подржава Unreal]
Пиксели на ивицама постају готово невидљиви након дисторзије, маска за рендеровање модификује вредности дубинског бафера ових невидљивих пиксела. Ако омогућите тестирање дубине, због раног изобличења (early-z), ови невидљиви пиксели се неће рендеровати, чиме се смањује оптерећење графичког процесора (GPU). Ова функција је корисна ако у овим невидљивим областима постоје објекти за рендеровање који се јако оптерећују; у супротном, ако у овим областима нема објеката за рендеровање, препоручује се да је онемогућите јер ће трошити малу количину енергије графичког процесора.

  • За Native програмере, погледајте овај водич. Морате повезати дубински бафер пре позивања RenderMask-а; у супротном ће бити неефикасно.
  • За програмере који користе Unity, погледајте овај водич.
  • За Unreal програмере, тренутно не подржава функцију Render Mask.

3.2 Садржај МР
3.2.1 Подешавање квалитета пролаза
Постоје 3 нивоа за квалитет слике кроз пролаз:
➢ WVR_PassthroughImageQuality_DefaultMode – погодно за MR садржај без посебног захтева.
➢ WVR_PassthroughImageQuality_PerformanceMode – погодно за MR садржај који захтева више GPU ресурса за рендеровање виртуелне сцене.
➢ WVR_PassthroughImageQuality_QualityMode – погодно за MR садржај који омогућава корисницима да јасно виде околно окружење, али виртуелна сцена садржаја захтева прецизније подешавање ради перформанси.
Можете подесити квалитет преноса на PerformanceMode да бисте смањили употребу графичке картице (GPU).

  • За Native, Uunity или Unreal програмере, погледајте овај водич.

3.2.2 Подешавање брзине кадрова протока
Као и код брзине освежавања екрана, већа брзина кадрова при пропуштању нуди глаткији приказ, али долази по цену повећаног оптерећења система. С друге стране, ниже брзине освежавања смањују оптерећење система, али резултирају мање глатким приказом. Постоје 2 режима брзине кадрова при пропуштању: Појачање и Нормално.

  • За Native програмере, квалитет пролаза може се подесити помоћу WVR_SetPassthroughImageRate.
  • За програмера у Јунитију, може се променити путем кода, нпр.ampподешавања су следећа // C#
    Interop.WVR_SetPassthroughImageQuality(WVR_PassthroughImageQuality.PerformanceMode);
  • За Unreal програмере, метод подешавања погледајте чвор blueprint на слици 3-2-2.

ВИВЕ ВР перформансе рендеровања – слика 4

Подешавање VIVE OpenXR-а

OpenXR је отворени стандард који пружа заједнички скуп API-ја за развој XR апликација које раде на широком спектру VR уређаја, а развила га је Khronos група. VIVE Focus 3 и VIVE XR Elite такође подржавају OpenXR, VIVE OpenXR SDK пружа свеобухватну подршку за HTC VR уређаје, омогућавајући програмерима да направе All-in-One системе и садржај помоћу Unity и Unreal енџина на HTC VR уређајима. Континуирано оптимизујемо и решавамо разне грешке, па се препоручује да програмери ажурирају FOTA верзију својих уређаја како би је одржали ажурираном. Тренутно, VIVE OpenXR SDK подржава OpenGL ES и Vulkan.

4.1 ВР садржај
4.1.1 Брзина освежавања екрана
Концепт овде је сличан концепту 3.1.1 Брзина освежавања екрана.

  • За Native програмере, погледајте XrEventDataDisplayRefreshRateChangedFB.
  • За програмере који користе Unity, погледајте овај водич.
  • За Unreal програмере, погледајте овај водич.

4.1.2 Резолуција ока
Концепт овде је сличан оном у одељку 3.1.2 Резолуција бафера ока. Препоручујемо да се фактор скалирања не смањује испод 0.7, јер то може довести до неприхватљивог визуелног квалитета.

  • За Native програмере, погледајте xrCreateSwapchain. Приликом подешавања величине, требало би да помножите ширину и висину са односом.
  • За програмере Unity-ја, погледајте следећи примерampле // C#
    XRSettings.eyeTextureResolutionScale = 0.7f; //препоручено 1.0f~0.7f
  • За Unreal подешавања, погледајте овај водич.

4.1.3 ВишеструкоView Рендеринг
Концепт овде је сличан оном у 3.1.3 ВишеструкоView Рендеровање. Ова функција смањује оптерећење процесора, а графички процесор такође има неке предности. Препоручујемо да омогућите ову функцију.

  • За Native програмере, KhronosGroup пружа OpenXR мулти-View exampле, погледајте овај водич.
  • За Unity програмере, погледајте режим рендеровања, један пролаз је вишеструкиview карактеристика.
  • За Unreal developer, као и за подешавања VIVE Wave-а, погледајте овај водич.

4.1.4 Фовеација [Не подржава Unreal]
Концепт овде је сличан оном у верзији 3.1.4 Фовеација. Фовеационо рендеровање је првенствено дизајнирано да смањи оптерећење графичког процесора, али његово омогућавање ће довести до фиксних трошкова перформанси графичког процесора, а ако је фовеација подешена прениско и користе се одређени материјали или текстуре, може постати веома
приметно кориснику. Стога је препоручљиво да омогућите или онемогућите ову функцију на основу ваших специфичних захтева и перформанси. Тренутно је Foveated функционалност подржана само у OpenGL ES на VIVE OpenXR SDK-у.

  • За Native програмере, ова функција је доступна, али тренутно немаampлес су обезбеђени.
  • За програмере који користе Unity, погледајте овај водич.
  • За Unreal програмере, ова функција тренутно не подржава.

4.1.5 Маска за рендеровање [Не подржава Unreal]
Концепт овде је сличан оном у верзији 3.1.8 за маску рендеровања.

  • За Native програмере, користите XrVisibilityMaskKHR да бисте добили мрежу. Пре рендеровања сцене, користите ову мрежу да бисте попунили вредности дубинског бафера пре рендеровања сцене.
  • За Unity програмере, функција Render Mask је подразумевано омогућена за OpenGL ES и може се онемогућити следећим кодом; Vulkan тренутно не подржава ову функцију. //C# UnityEngine.XR.XRSettings.occlusionMaskScale = 0.0f;
  • За Unreal програмере, тренутно не подржава функцију Render Mask.

4.2 Садржај МР
OpenXR тренутно не подржава подешавање квалитета преноса података и броја слика у секунди. Наставићемо да оптимизујемо и поправљамо функцију преноса података, па се препоручује да програмери ажурирају верзију FOTA-е уређаја како би била ажурирана.

Уобичајена оптимизација

5.1 Искључите режим високих перформанси
Искључивање „Режима високих перформанси“ може смањити величину екрана уређаја, чиме се смањује употреба графичке картице. Мана је смањење резолуције екрана. Можете уравнотежити квалитет и перформансе да бисте одлучили да ли да га омогућите.
Локација подешавања за VIVE Focus 3 је приказана на слици 5-1-1:

ВИВЕ ВР перформансе рендеровања – слика 5

Место подешавања за VIVE XR Elite је приказано на слици 5-1-2:

ВИВЕ ВР перформансе рендеровања – слика 6

5.2 Мултисampling Anti-Aliasing
Мултисampling is an anti-aliasing technique used to smooth out jagged edges, usually is accelerated through hardware, which incurs GPU performance cost. We recommend not setting MSAA higher than 2x because more hight value will consume more gpu usage.

  • За нативне програмере, MSAA OpenGL ES exsampможе се позвати на ово; МСАА Вулкан екampлер се може позивати на ово.
    Адрено ГПУ пружа проширење које оптимизује MSAA.
  • За Unity програмере, погледајте овај гилд.
  • For Unreal developer, refer to this guild. Unreal also has provide post processing anti-aliasing, refer to this guild.

5.3 Учитавање/складиштење GMEM-а
У архитектури Adreno GPU-а постоји функција где се, приликом повезивања са Render Target-ом, ако се Render Target не обрише или не поништи, сваки пут када се изврши рендеровање, вредности у Render Target-у учитавају у графичку меморију, што се назива GMEM Load. Ако претходне вредности нису потребне, обришите или поништите Render Target пре рендеровања, да бисте избегли ову ситуацију и побољшали перформансе GPU-а.
Можете избећи учитавање GMEM-а користећи следеће методе. У OpenGL ES-у, након повезивања FBO-а, можете позвати glClear и glClearDepth да бисте обрисали Color, Depth и Stencil бафер или позвати glInvalidateFramebuffer да бисте поништили наведени Render Target. У Vulkan-у, додатне инструкције нису потребне; можете експлицитно подесити да ли да се обрише прилог пре употребе у VkAttachmentDescription.loadOp.
Слично томе, чување резултата рендеровања плочица назад у главну меморију из графичке меморије назива се GMEM складиштење; ова операција је такође скупа за GPU. Да бисте то избегли, препоручујемо да повежете само потребне циљеве рендеровања како бисте спречили непотребне операције складиштења.

5.4 Композициони слој (вишеслојни)
Текстуре приказане помоћу вишеслојног режима имају бољи визуелни квалитет. Међутим, ова функција значајно повећава перформансе графичког процесора са бројем слојева и величином текстура. Препоручујемо да не користите више од три слоја.

  • За нативне програмере,
    VIVE Wave SDK користи WVR_SubmitFrameLayers за прослеђивање података за сваки слој.
    VIVE OpenXR SDK смешта податке о слојевима у XrFrameEndInfo и шаље их преко xrEndFrame-а.
  • За програмера Unity-ја,
    о подешавањима VIVE Wave SDK-а, погледајте овај водич,
    o Подешавања VIVE OpenXR-а, погледајте овај водич.
  • За програмера Unreal-а,
    o Подешавања VIVE Wave SDK-а, погледајте овај водич.
    o Подешавања VIVE OpenXR-а, погледајте овај водич.

5.5 скок процесора
Када је оптерећење процесора веће, неке позадинске обраде са високим приоритетом могу прекинути изворно извршавање. Не можемо гарантовати да апликација садржаја неће бити прекинута другом нити.
If such issues arise, you can try increasing the thread priority to see if it resolves the problem. But if you change the thread configuration to optimize for devices, you need to check if this has any negative impact.

  • За Unity Developer, погледајте функцију конфигурације нити за Android. Ако користите VIVE Wave SDK, имамо функцију у WaveXRSettings која вам омогућава да подесите приоритет, као што је приказано на слици 5-5-2. Мања вредност представља већи приоритет.

ВИВЕ ВР перформансе рендеровања – слика 7

  • Не постоји начин да се промени нит игре, нит рендеровања и приоритет RHI нити путем спољних подешавања, осим ако се не измени код мотора.

Ауторска права © 2024 HTC Corporation. Сва права задржана.ВИВЕ лого

Документи / Ресурси

ВИВЕ ВР перформансе рендеровања [пдф] Упутство за кориснике
ВР перформансе рендеровања, перформансе рендеровања, перформансе

Референце

Оставите коментар

Ваша емаил адреса неће бити објављена. Обавезна поља су означена *