VIVE логотипіVR көрсету өнімділігі
Баптау және оңтайландыру

Кіріспе

Ресурстары шектеулі аппараттық құралда оңтайлы VR тәжірибесіне қол жеткізу пайдаланушының тегіс және ыңғайлы тәжірибесін қамтамасыз етудің кілті болып табылады. Мазмұнды көрсетудің кадр жылдамдығы құрылғының жаңарту жылдамдығынан төмен түссе немесе тұрақсыз болса, бұл кадрдың дірілдеуіне және тоқырауына, қозғалыс ауруларына және т.б. әкеледі. сайып келгенде, пайдаланушы тәжірибесіне теріс әсер етеді. Сондықтан мазмұн өнімділігін оңтайландыру жағымды тәжірибені қамтамасыз ету үшін өте маңызды.
Тиімсіз реттеуді болдырмау үшін өнімділікті реттеуді бастамас бұрын өнімділік кедергілерінің қай жерде екенін түсіну маңызды. Бұл құжат әзірлеушілерге өнімділік кедергілерін анықтауға және көрсету өнімділігі мәселелерін шешуге арналған шешімдерді ұсынуға көмектесу үшін жасалған.
Құжат келесі бөлімдерге бөлінген:

  • 2-тарау: кедергілерді анықтау – бұл бөлім әзірлеушілерге қай жерде қиындықтар бар екенін анықтауға көмектеседі.
  • 3 және 4 тарау: VIVE Wave және VIVE OpenXR параметрлері – Бұл бөлімдер VIVE Wave және OpenXR қолданбалары үшін CPU/GPU өнімділігіне әсер етуі мүмкін арнайы параметрлерді сипаттайды. Әзірлеушілер кез келген жақсартулардың бар-жоғын анықтау үшін кездесетін өнімділік кедергілеріне негізделген осы мүмкіндіктерді қосу немесе өшіру арқылы тәжірибе жасай алады.
  • 5-тарау: Жалпы оңтайландыру – Бұл бөлімде кейбір жалпы оңтайландыру тәжірибелері мен тәжірибелері ортақ.

Қиындықты анықтаңыз

HMD қозғалған кезде, VR/MR қолданбасында жақтаудың жиыры немесе қара жиегі және т.б. болса, бұл әдетте нашар көрсету өнімділігі мәселесінен туындайды. Әдетте, рендеринг өнімділігі мәселелерін 2 түрге бөлуге болады: CPU-байланысты немесе GPU-байланысты. Тиімсіз баптауды болдырмау үшін қолданбаңыз үшін байланыстырудың қай түрлерінің басында өте маңызды екенін түсініңіз.
Бұл тарауда біз өнімділік мәселелерінің қай жерде екенін жылдам анықтауға мүмкіндік беретін қарапайым қадамдарды береміз.

2.1 Content Rendering FPS тексеру
Біріншіден, біз FPS мазмұнын тексеруден бастаймыз, яғни мазмұн секундына көрсететін кадрлар саны. Ол дисплей кадр жиілігіне дейін сақталуы және тұрақты болуы керек. Әйтпесе, ол жақтаудың дірілдерін тудыруы мүмкін.
Қолданба SDK VIVE WAVE SDK 6.0.0 немесе одан кейінгі нұсқасын пайдаланса, FPS тексеру үшін келесі adb пәрменін пайдалануға болады. 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 көмегімен жасалған болса. FPS-ті тексеру үшін келесі adb пәрменін пайдалануға болады.
$adb Logcat -s RENDER_ATW
Сіз келесі журнал деректерін көресіз
RENDER_ATW: [FPS] жаңа текстурасы: 90.00
RENDER_ATW: [FPS] R бар: 90.00 өткізіп жіберу: 0 317, -0.0155 0.805527, 0.006788)
RENDER_ATW: [FPS] L бар: 90.00 өткізіп жіберу: 0 (0.592301, -0.015502, 0.805539, 0.006773)

«Жаңа текстурадан» кейінгі сан қазіргі мазмұндағы FPS-ті білдіреді. “R present” және “L present” сөздерінен кейінгі сан дисплей кадр жиілігін білдіреді.
Кейде мазмұн FPS және дисплей кадр жиілігінде шамалы сәйкессіздік болуы мүмкін.
Мысалыample, жоғарыдағы жағдайда 89.8 FPS 90 FPS ретінде қарастырылуы мүмкін.
Қолданба мазмұнының FPS көрсеткіші дисплей кадр жиілігінен тұрақты түрде төмен болса немесе тұрақсыз болып қалса, бұл көрсету өнімділігі мәселесін көрсетеді. Сондықтан, келесі қадам тығырықтың процессордан немесе графикалық процессордан туындайтынын анықтау болып табылады.
2.2 CPU және GPU пайдалануын тексеріңіз
Қолданба SDK VIVE WAVE SDK 6.0.0 немесе одан кейінгі нұсқасын пайдаланса, FPS тексеру үшін келесі adb пәрменін пайдалануға болады.
$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% және GPU пайдалану 72% Егер Wave SDK нұсқасы 6.0.0 төмен болса, көрсету өнімділігін және басқаларды оңтайландыруды жақсарту үшін соңғы нұсқаға жаңарту ұсынылады.
VIVE OpenXR қолданбасы үшін CPU және GPU пайдалануын тексеру үшін келесі пәрменді пайдалануға болады.
# Linux/ubuntu жүйесінде
$ adb logcat | grep CPU_USAGE
# powershell-де
$ adb logcat | Select-String -Үлгі 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%-дан асатынын байқасаңыз, FPS жақсартатынын көру үшін Eyebuffer ажыратымдылығын (3.1.2 бөлімі, 4.1.2 бөлімі) реттеп көруге болады. Егер бұл түзету жақсырақ болса
өнімділікке байланысты мәселе GPU-ге байланысты және оңтайландыру күш-жігерімізді соған сәйкес бағыттай аламыз.
Екінші жағынан, егер Eyebuffer ажыратымдылығын реттеу өнімділіктің айтарлықтай жақсаруына әкелмесе, тығырық процессорға байланысты болуы мүмкін және біз процессордың өнімділігін оңтайландыруға назар аударуымыз керек.
Сондай-ақ, қолданба бір уақытта процессорға және GPU-ға байланысты болуы мүмкін. Мұндай жағдайларда теңдестірілген өнімділікті жақсартуға қол жеткізу үшін процессор мен графикалық процессорға оңтайландыру әрекеттерін қолдану керек.
2.3 GPU-байланысты
VR қолданбасы GPU-мен байланысты болса, бұл GPU негізгі кедергі болып табылады және ол қолданбаның көрсету талаптарын орындай алмайды. GPU-ға байланысты мәселелерді азайту үшін келесі ұсыныстарды қарастырыңыз:
Алдымен, RenderDoc немесе Game Engine pro сияқты профильдеу құралдарын пайдаланыңызfiler (Unity Profiler, Unreal Insights) GPU көп уақытын қайда өткізетінін талдау үшін. Ең қымбат операцияларды анықтаңыз және оларды оңтайландыруға назар аударыңыз.
Native Developer үшін GPU шамадан тыс жүктемені тудыратын сызба шақыруын анықтау үшін RenderDoc қолданбасын пайдалануға болады.
Unity Developer үшін Unity осы құжатты орындай аласыз немесе рендеринг өнімділігі мәселесін талдау үшін RenderDoc пайдалана аласыз және қолданбаңызды оңтайландыруға арналған нұсқаулық үшін Unity графикасын оңтайландыру құжаттамасын орындай аласыз.
Unreal Developer үшін GPU визуализаторын немесе рендеринг өнімділігі мәселесін талдау үшін RenderDoc қолданбасын пайдалана аласыз және қолданбаңызды оңтайландыру үшін нұсқаулық үшін Unreal өнімділік нұсқауларын орындаңыз.
Екіншіден, GPU жүктемесін азайту үшін белгілі бір толқын мүмкіндіктерін немесе параметрлерін реттеп көруге болады.

  1. Дисплейді жаңарту жылдамдығын баяуырақ орнату (3.1.1 бөлімі, 4.1.1 бөлімі)
  2.  Eyebuffer ажыратымдылығын реттеу (3.1.2-бөлім, 4.1.2-бөлім), 14.1.1)
  3.  Foveation қосып көріңіз (3.1.4-бөлім, 4.1.4-бөлім).

Қолданбаңыз да MR қолданбасы болса, Passthrough параметрлерін де реттеуге болады.

  1. Өткізу кескінінің сапасын төменірек реттеңіз. (3.2.1-бөлім)
  2. Өткізу кадр жиілігін баяу реттеңіз. (3.2.2 тарау).

GPU өнімділігі туралы қосымша басқа параметрлерді алу үшін 2.6 тарауын қараңыз.

2.4 CPU-байланысты
VR қолданбасы процессорға байланысты болса, бұл процессордың негізгі кедергі екенін білдіреді, келесі ұсыныстарды қарастырыңыз:
Біріншіден, Systrace немесе Game Engine pro сияқты профильдеу құралдарын пайдаланыңызfiler (Unity Profiler, Unreal Insights) кодтың қай бөліктері CPU ресурстарын көбірек тұтынатынын талдау және анықтау үшін. Осы аймақтарды оңтайландыруға назар аударыңыз және CPU жүктемесін азайту үшін есептеу қарқынды алгоритмдерін қайта өңдеңіз.

  • Native Developer үшін Systrace to pro қолданбасын пайдалануға боладыfiler сіздің жобаңыз.
  • Unity Developer үшін CPU Usage Pro қолданбасын пайдалануға боладыfileCPU өнімділігі мәселесін табу үшін r модулі.
  • Unreal Developer үшін CPU өнімділігі мәселесін табу үшін Unreal's Insights пайдалана аласыз.

Екіншіден, GPU жүктемесін азайту үшін белгілі бір толқын мүмкіндіктерін немесе параметрлерін реттеп көруге болады.

  1. Дисплейді жаңарту жылдамдығын баяуырақ орнату (3.1.1 бөлімі, 4.1.1 бөлімі)
  2.  Көпті пайдалануView Көрсету (3.1.4-бөлім, 4.1.4-бөлім)

Қолданбаңыз да MR қолданбасы болса, Passthrough параметрлерін де реттеуге болады.

  1. Өткізу кадр жиілігін баяу реттеңіз (3.2.2 бөлімі).

CPU өнімділігі туралы қосымша басқа параметрлерді 2.6 тарауынан қараңыз.

2.5 Түйіндеме
Соңында, біз жоғарыдағы өнімділікті тексеру жұмыс процесін 2-5-1 суретте ұйымдастырдық. Мазмұнның FPS деңгейін тексеруден бастаңыз. Егер ол дисплей кадр жиілігінен төмен болса немесе тұрақсыз болып қалса, оның GPU немесе CPU байланысты екенін анықтау үшін GPU/CPU пайдалануын талдаңыз. Соңында, кәсіпқой пайдаланыңызfiler ықтимал өнімділік мәселелерін анықтау немесе процессор жұмысын оңтайландыру үшін толқын мүмкіндіктерін немесе параметрлерін реттеу.

VIVE VR көрсету өнімділігі - 1-сурет

2.6 Параметрлер CPU/GPU жүктеуін жақсарта алатын жылдам анықтама

Төмендегідей CPU/GPU жүктеуіне қатысты SDK параметрлерін тізімдеңіз. Тиісті оңтайландыру параметрлерін тексеру үшін қолданбаның тар жолына негізделуге болады.

Орталық процессорға қатысты:

  • VIVE Wave SDK параметрі
    o VR мазмұны
    ▪ 3.1.1 Жаңарту жылдамдығын көрсету
    ▪ 3.1.4 КөпView Рендеринг
    ▪ 3.1.6 Бейімделу сапасы
    ▪ 3.1.7 Бейімделетін қозғалыс құрастырушы
    o MR мазмұны
    ▪ 3.2.2 Кадр жиілігін реттеу
  • VIVE OpenXR SDK параметрі
    o VR мазмұны
    ▪ 4.1.1 Жаңарту жылдамдығын көрсету
    ▪ 4.1.4 КөпView Рендеринг
  • Жалпы оңтайландыру
    o 5.5 CPU Spike

GPU-ға қатысты:

  • VIVE Wave SDK параметрі
    o VR мазмұны
    ▪ 3.1.1 Жаңарту жылдамдығын көрсету
    ▪ 3.1.2 Eyebuffer Resolution
    ▪ 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 Eyebuffer Resolution
    ▪ 4.1.3 КөпView Рендеринг
    ▪ 4.1.4 Foveation [Unreal қолдамайды] ▪ 4.1.5 Рендерлік маска [Unreal қолданбайды]
  • Жалпы оңтайландыру
    o 5.1 Жоғары өнімділік режимін өшіріңіз
    o 5.2 Мультиampлинг
    o 5.3 GMEM жүктеу/сақтау
    o 5.4 Композициялық қабат (көп қабатты)

VIVE толқын параметрі

VIVE Wave – бұл VR мазмұнын оңай әзірлеуге мүмкіндік беретін және үшінші тарап серіктестері үшін өнімділігі жоғары құрылғыны оңтайландыруды қамтамасыз ететін ашық платформа және құралдар жинағы. VIVE Wave Unity және Unreal ойын қозғалтқыштарын қолдайды.
Біз әртүрлі қателерді үнемі оңтайландырамыз және шешеміз, сондықтан SDK-ны жаңартып отыруды ұсынамыз.
Қазіргі уақытта VIVE Wave тек OpenGL ES-ті қолдайды. Мұнда GPU өнімділігіне әсері бойынша реттелген мүмкіндіктер тізімі берілген. Біз мұны екі бөлікке бөлеміз: VR мазмұны және MR мазмұны.
3.1 VR мазмұны
3.1.1 Жаңарту жылдамдығын көрсету

Жаңарту жылдамдығы жоғарырақ визуалды бейнелерді ұсынады, бірақ жүйе жүктемесінің жоғарылауына байланысты болады. Керісінше, төменгі жаңарту жиілігі жүйе жүктемесін азайтады, бірақ біркелкі көрнекіліктерге әкеледі. Қолданбада CPU/GPU байланысты мәселе болса, мәселені жеңілдету үшін дисплейді жаңарту жылдамдығын азайтуға болады.

  • Жергілікті әзірлеуші ​​үшін WVR_SetFrameRate бөлімін қараңыз.
  • Unity әзірлеушісі үшін осы нұсқаулықты қараңыз.
  • Unreal әзірлеушісі үшін осы нұсқаулықты қараңыз.

3.1.2 Eyebuffer ажыратымдылығы
Eyebuffer ажыратымдылығы - қолданба көрсетілетін мазмұнның текстура өлшемі, көрсетілген текстура жіберу процесін орындау үшін орындалу уақытына жіберіледі және HMD дисплейінде көрсетіледі.
Үлкенірек көз буферінің өлшемі айқынырақ және егжей-тегжейлі көрнекі көріністерге әкелуі мүмкін, бірақ ол GPU-ға айтарлықтай жүктеме түсіреді. Сондықтан көру сапасы мен өнімділік арасындағы дұрыс теңгерімді табу өте маңызды.
Қолданбада GPU байланысты мәселе болса, масштаб коэффициентін көбейту арқылы көз буферінің өлшемін азайтуға болады. Дегенмен, масштаб коэффициентін 0.7-ден төмен түсірмеу ұсынылады, себебі бұл көрнекі сапаның қолайсыз болуына әкелуі мүмкін.

  • Жергілікті әзірлеуші ​​үшін WVR_ObtainTextureQueue бөлімін қараңыз. Өлшемді реттеген кезде ені мен биіктігін қатынасқа көбейту керек.
  • Unity әзірлеушісі үшін WaveXRSettings бөлімін қараңыз.
    Сонымен қатар, сіз белво ретінде код арқылы өзгертулер енгізе аласыз.
    XRSettings.eyeTextureResolutionScale = ResolutionScaleValue; // C#
  • Unreal әзірлеушісі үшін SetPixelDensity бөлімін қараңыз.

3.1.3 КөпView Рендеринг
Дәстүрлі рендерингте біз сол және оң көзді бөлек саламыз, бұл бір көрініс үшін екі сурет салуды қажет етеді. көп-View Көрсету бұл мәселені тек бір тарту шақыруын орындау арқылы шешеді.
Бұл мүмкіндік ұтыс шақыруларының санын азайту арқылы CPU жүктемесін азайтады. GPU-ның кейбір артықшылықтары да бар, шыңы шейдердің жұмыс жүктемесі де азаяды, өйткені ол басқа көзге қосымша шейдерді іске қосуды қажет етпейді, бірақ фрагмент шейдерінің жұмыс жүктемесі өзгеріссіз қалады, өйткені ол әлі де екі көз үшін әрбір пикселді бағалауды қажет етеді. Бұл мүмкіндікті қосуды ұсынамыз.

  • Native әзірлеуші ​​үшін wvr_native_hellovr s сілтемесіне жүгінуге боладыampле.
  • Unity әзірлеушісі үшін көрсету режимін қараңыз, бір өту көпview ерекшелігі.
  • Unreal әзірлеушісі үшін осы нұсқаулықты қараңыз.

3.1.4 Фовеация
Foveated рендеринг ең алдымен GPU жүктемесін азайтуға арналған. Ол дисплейдің перифериялық бөлігіндегі кадр детальдарын азайтады және өрістің ортасында жоғары ажыратымдылықтағы мәліметтерді сақтайды. view. Қолданбада GPU байланысты мәселе болса, Foveation көрсетуді қосуға болады.

VIVE VR көрсету өнімділігі - 2-сурет

Фовеацияны қолдану кезінде бір нәрсені ескеру қажет:

➢ Пайдаланушылар әдетте әдепкі қозғалыс режимін қолданатын перифериялық аймақтардағы қысқартылған мәліметтерді байқамайды. Бірақ перифериялық ағынның сапасы тым төмен орнатылса, ол пайдаланушыға байқалуы мүмкін.
➢ Фовеацияның әсерлері пайдаланушының назарын аударуы мүмкін текстураның белгілі бір материалдарында айқынырақ болуы мүмкін. Әзірлеушілер мұны біліп, соған сәйкес бағалауы керек.
➢ Жылдам көрсету мүмкіндігін қосу GPU өнімділігінің бекітілген құнын тудырады, ол көз буферінің өлшеміне байланысты 1%-дан 6%-ға дейін өзгеруі мүмкін. Көріністе қарапайым шейдерді пайдаланған кезде, ресурстарды үнемдеуден түсетін өнімділік тұрақты GPU өнімділігі құнынан төмен болуы мүмкін, бұл өнімділіктің төмендеуіне әкеледі.

  • Native әзірлеуші ​​үшін осы нұсқаулықты қараңыз.
  • Unity әзірлеушісі үшін осы нұсқаулықты қараңыз. Атап айтқанда, сіз кейінгі өңдеуді немесе HDR мүмкіндігін қосқанда, қозғалысты толығымен пайдалану мүмкін емес. Өйткені Unity нысандарды орындау уақытында жасалған қазіргі визуализацияны қолдайтын құрылымды емес, өзінің жасалған рендерлік текстурасына көрсетеді.
  • Unreal әзірлеушісі үшін осы нұсқаулықты қараңыз. Атап айтқанда, көп жағдайда фовеацияны толығымен пайдалану мүмкін емес.View Көрсетілу, себебі Unreal нысандарды жұмыс уақытында жасалған визуалды текстураға тікелей көрсете алмайды.

3.1.5 Фрейм анықтығын жақсарту (FSE)
Айқындау сүзгісін енгізу арқылы айқын көрсету нәтижесін қамтамасыз ететін FSE мазмұнды айқынырақ етеді және көріністегі мәтіннің анықтығын жақсарту үшін өте пайдалы болады. Қолданбада GPU байланысты мәселе болса, қажет болмаса, FSE өшіруді қарастыруға болады.

VIVE VR көрсету өнімділігі - 3-сурет

  • Native әзірлеуші ​​үшін осы нұсқаулықты қараңыз.
  • Unity әзірлеушісі үшін осы нұсқаулықты қараңыз.
  • Unreal әзірлеушісі үшін осы нұсқаулықты қараңыз.

3.1.6 Бейімделу сапасы
Батареяны үнемдеу және құрылғының көрсету өнімділігін қолдау үшін бұл мүмкіндік CPU/GPU сағатының өнімділік деңгейлерін олардың қолданылуына қарай автоматты түрде реттейді. Оған қоса, өнімділікті арттыру үшін Foveation функциясын автоматты түрде қосу/өшіру сияқты басқа стратегияларды жүзеге асыруға болады немесе жоғары/төмен жүктеме оқиғаларын алған кезде мазмұн өзін реттей алады.

  • Native әзірлеуші ​​үшін осы нұсқаулықты қараңыз.
  • Unity әзірлеушісі үшін осы нұсқаулықты қараңыз. Unity плагинінде көз буферінің өлшемін ағымдағы өнімділікке қарай автоматты түрде реттеуге болады; Мәтін өлшемі Ажыратымдылық тізімінде тым кішкентай масштаб мәндерін сүзеді. Өлшемі кемінде 20 мм немесе одан үлкен мәтінді ұсынамыз.
  • Unreal әзірлеушісі үшін осы нұсқаулықты қараңыз.

3.1.7 Адаптивті қозғалыс құрастырушы
Бұл мүмкіндік UMC және PMC қамтитын эксперименттік мүмкіндік. UMC кадр жиілігін екі есе азайтады және көрнекі тегістікті сақтау үшін нақты уақытта жаңа кадрды экстраполяциялайды. Дегенмен, ол кейбір кідіріспен, артефактілермен және GPU жүктелуімен бірге келеді.
PMC, ең алдымен, ATW-ге HMD аудармасын есепке алу үшін, 6 реттік өтемақыға дейін кеңейту үшін Тереңдік буферін пайдаланады. Бұл мүмкіндік аударманың кешігуін 1~2 кадрға азайтады, бірақ GPU жүктелуін арттырады.

  • Native әзірлеуші ​​үшін осы нұсқаулықты қараңыз.
  • Unity әзірлеушісі үшін осы нұсқаулықты қараңыз.
  • Unreal әзірлеушісі үшін осы нұсқаулықты қараңыз.

3.1.8 Рендер маскасы [Unreal қолдамайды]
Жиектердегі пикселдер бұрмаланғаннан кейін дерлік көрінбейді, көрсету маскасы осы көрінбейтін пикселдердің тереңдік буферінің мәндерін өзгертеді. Тереңдік сынауын қоссаңыз, ерте-z себебінен бұл көрінбейтін пикселдер көрсетілмейді, осылайша GPU жүктемесі төмендейді. Бұл көрінбейтін аймақтарда ауыр жүк түсіретін бейнелеу нысандары болса, бұл мүмкіндік пайдалы; әйтпесе, бұл аймақтарда көрсету нысандары болмаса, оны өшіру ұсынылады, себебі ол GPU-ны аз пайдалануды қажет етеді.

  • Native әзірлеуші ​​үшін осы нұсқаулықты қараңыз. RenderMask шақыру алдында тереңдік буферін байланыстыру керек; әйтпесе ол тиімсіз болады.
  • Unity әзірлеушісі үшін осы нұсқаулықты қараңыз.
  • Unreal әзірлеушісі үшін қазіргі уақытта масканы көрсету мүмкіндігін қолдамайды.

3.2 MR мазмұны
3.2.1 Өткізу сапасын реттеу
Кескін сапасының 3 деңгейі бар:
➢ WVR_PassthroughImageQuality_DefaultMode – арнайы сұраныссыз MR мазмұны үшін қолайлы.
➢ WVR_PasshroughImageQuality_PerformanceMode – виртуалды көріністі көрсету үшін көбірек GPU ресурсын қажет ететін MR мазмұны үшін қолайлы.
➢ WVR_PassthroughImageQuality_QualityMode – пайдаланушыларға қоршаған ортаны анық көруге мүмкіндік беретін MR мазмұны үшін қолайлы, бірақ мазмұнның виртуалды көрінісі өнімділік үшін неғұрлым дәл реттеуге ие болуы керек.
GPU пайдалануды азайту үшін өту сапасын PerformanceMode параметріне реттеуге болады.

  • Native, Uunity немесе Unreal әзірлеушісі үшін осы нұсқаулықты қараңыз.

3.2.2 Өтпелі кадр жиілігін реттеу
Дисплейді жаңарту жылдамдығы сияқты, жоғарырақ өту кадр жиілігі тегіс көрнекі бейнелерді ұсынады, бірақ жүйе жүктемесінің жоғарылауына байланысты болады. Керісінше, төменгі жаңарту жиілігі жүйе жүктемесін азайтады, бірақ біркелкі көрнекіліктерге әкеледі. Өтпелі кадр жиілігінің 2 режимі бар: Boost және Normal.

  • Жергілікті әзірлеуші ​​үшін WVR_SetPasshroughImageRate арқылы өту сапасын реттей алады.
  • Unity әзірлеушісі үшін код арқылы өзгертуге болады, мысалыampпараметрлері келесідей // C#
    Interop.WVR_SetPassthroughImageQuality(WVR_PasshroughImageQuality.PerformanceMode);
  • Unreal әзірлеушісі үшін орнату әдісі 3-2-2-суреттегі сызба түйінін қараңыз.

VIVE VR көрсету өнімділігі - 4-сурет

VIVE OpenXR параметрі

OpenXR – ашық стандарт, ол Khronos Group әзірлеген VR құрылғыларының кең ауқымында жұмыс істейтін XR қолданбаларын әзірлеуге арналған жалпы API жиынтығын ұсынады. VIVE Focus 3 және VIVE XR Elite сонымен қатар OpenXR қолдайды, VIVE OpenXR SDK HTC VR құрылғыларына жан-жақты қолдау көрсетеді, бұл әзірлеушілерге Allin-One және HTC VR құрылғыларында Unity және Unreal қозғалтқышы бар мазмұнды құруға мүмкіндік береді. Біз әртүрлі қателерді үнемі оңтайландырамыз және шешеміз, сондықтан әзірлеушілерге құрылғының FOTA нұсқасын жаңартып отыру үшін оны жаңарту ұсынылады. Қазіргі уақытта VIVE OpenXR SDK OpenGL ES және Vulkan-ды қолдайды.

4.1 VR мазмұны
4.1.1 Жаңарту жылдамдығын көрсету
Мұндағы тұжырымдама 3.1.1 Дисплейді жаңарту жылдамдығына ұқсас.

  • Жергілікті әзірлеуші ​​үшін XrEventDataDisplayRefreshRateChangedFB бөлімін қараңыз.
  • Unity әзірлеушісі үшін осы нұсқаулықты қараңыз.
  • Unreal әзірлеушісі үшін осы нұсқаулықты қараңыз.

4.1.2 Eyebuffer ажыратымдылығы
Мұндағы тұжырымдама 3.1.2 Eyebuffer Resolution бағдарламасына ұқсас. масштаб коэффициентін 0.7-ден төмен түсірмеу ұсынылады, себебі бұл көрнекі сапаның қолайсыз болуына әкелуі мүмкін.

  • Native әзірлеуші ​​үшін xrCreateSwapchain қараңыз. Өлшемді реттеген кезде ені мен биіктігін қатынасқа көбейту керек. ,
  • Unity әзірлеушісі үшін келесі мысалды қараңызample // C#
    XRSettings.eyeTextureResolutionScale = 0.7f; //ұсынылған 1.0f~0.7f
  • Unreal параметрлері үшін осы нұсқаулықты қараңыз.

4.1.3 КөпView Рендеринг
Мұндағы тұжырымдама 3.1.3 КөпView Рендеринг. Бұл мүмкіндік процессорға жүктемені азайтады, GPU-ның кейбір артықшылықтары да бар. Бұл мүмкіндікті қосуды ұсынамыз.

  • Native әзірлеуші ​​үшін KhronosGroup OpenXR мульти-View example, осы нұсқаулықты қараңыз.
  • Unity әзірлеушісі үшін көрсету режимін қараңыз, бір өту көпview ерекшелігі.
  • Unreal әзірлеушісі үшін, VIVE Wave параметрлері сияқты, осы нұсқаулықты қараңыз.

4.1.4 Фовеация [Unreal қолданбасы]
Мұндағы тұжырымдама 3.1.4 Фовеацияға ұқсас. Фовеацияланған көрсету, ең алдымен, GPU жүктемесін азайтуға арналған, бірақ оны қосу GPU өнімділігінің бекітілген құнын тудырады және егер қозғалыс тым төмен орнатылса және белгілі бір материалдар немесе текстуралар пайдаланылса, ол өте нашар болуы мүмкін.
пайдаланушы үшін байқалады. Сондықтан арнайы талаптар мен өнімділік туралы ойлар негізінде мүмкіндікті қосу немесе өшіру ұсынылады. Қазіргі уақытта Foveated функциясына тек VIVE OpenXR SDK жүйесіндегі OpenGL ES жүйесінде қолдау көрсетіледі.

  • Native әзірлеуші ​​үшін бұл мүмкіндік қолжетімді, бірақ қазіргі уақытта бұрынғы жоқampлер беріледі.
  • Unity әзірлеушісі үшін осы нұсқаулықты қараңыз.
  • Unreal әзірлеушісі үшін қазіргі уақытта бұл мүмкіндікті қолдамайды.

4.1.5 Рендер маскасы [Unreal қолдамайды]
Мұндағы концепция 3.1.8 Масканы көрсетуге ұқсас.

  • Native әзірлеуші ​​үшін торды алу үшін XrVisibilityMaskKHR пайдаланыңыз. Сахнаны көрсетпес бұрын, көріністі көрсету алдында тереңдік буферінің мәндерін толтыру үшін осы торды пайдаланыңыз.
  • Unity әзірлеушісі үшін масканы көрсету мүмкіндігі OpenGL ES үшін әдепкі бойынша қосылады және келесі кодпен өшірілуі мүмкін; Вулкан қазір бұл мүмкіндікті қолдамайды. //C# UnityEngine.XR.XRSettings.occlusionMaskScale = 0.0f;
  • Unreal әзірлеушісі үшін қазіргі уақытта масканы көрсету мүмкіндігін қолдамайды.

4.2 MR мазмұны
OpenXR қазіргі уақытта өту сапасы мен кадр жиілігін орнатуды қолдамайды. Біз Passthrough мүмкіндігін оңтайландыруды және түзетуді жалғастырамыз, сондықтан әзірлеушілерге құрылғының FOTA нұсқасын жаңартуды ұсынамыз.

Жалпы оңтайландыру

5.1 Жоғары өнімділік режимін өшіріңіз
«Жоғары өнімділік режимін» өшіру құрылғының дисплей өлшемін азайтуы мүмкін, осылайша GPU пайдалануды азайтады. Кемшілігі - экран ажыратымдылығының төмендеуі. Оны қосу-қосуды шешу үшін сапа мен өнімділікті теңестіруге болады.
VIVE Focus 3 үшін орнату орны 5-1-1 суретте көрсетілген:

VIVE VR көрсету өнімділігі - 5-сурет

VIVE XR Elite үшін орнату орны 5-1-2 суретте көрсетілген:

VIVE VR көрсету өнімділігі - 6-сурет

5.2 Мультиampling Anti-aliasing
Мультиampling — кесілген жиектерді тегістеу үшін қолданылатын, әдетте, GPU өнімділігінің құнын тудыратын аппараттық құралдар арқылы жеделдетілген антиалиазинг әдісі. MSAA мәнін 2 есе жоғары орнатпауды ұсынамыз, себебі жоғарырақ мән GPU пайдалануды көбірек тұтынады.

  • Native әзірлеушіге арналған MSAA OpenGL ES exsample бұған сілтеме жасай алады; MSAA Вулкан бұрынғыampлер бұған сілтеме жасай алады.
    Adreno GPU MSAA оңтайландыратын кеңейтімді қамтамасыз етеді.
  • Unity әзірлеушісі үшін осы гильдияны қараңыз.
  • Unreal әзірлеушісі үшін осы гильдияға жүгініңіз. Unreal сонымен қатар өңдеуден кейінгі антиалиазингті қамтамасыз етеді, осы гильдияны қараңыз.

5.3 GMEM жүктеу/сақтау
Adreno GPU архитектурасында көрсету мақсатын байланыстырған кезде, егер көрсету мақсаты өшірілмесе немесе жарамсыз болса, көрсету орын алған сайын, көрсету мақсатындағы мәндер GMEM жүктемесі деп аталатын графикалық жадқа жүктелетін мүмкіндік бар. Алдыңғы мәндер қажет болмаса, GPU өнімділігін жақсарту үшін көрсету үшін Мақсатты көрсетуді өшіріңіз немесе жарамсыз деп есептеңіз.
Төмендегі әдістерді пайдаланып GMEM жүктемесін болдырмауға болады. OpenGL ES жүйесінде FBO байланыстырғаннан кейін Color, Depth және Stencil буферін тазалау үшін glClear және glClearDepth шақыруға болады немесе көрсетілген Көрсету мақсатын жарамсыз деп тану үшін glInvalidateFramebuffer шақыруға болады. Вулканда қосымша нұсқаулар қажет емес; VkAttachmentDescription.loadOp ішінде қолданбас бұрын тіркемені тазалау керек пе екенін анық орнатуға болады.
Сол сияқты, графикалық жадтан негізгі жадқа кері плитканы көрсету нәтижесін сақтау GMEM дүкені деп аталады; бұл операция GPU үшін де қымбат. Бұған жол бермеу үшін қажетсіз Дүкен әрекеттерін болдырмау үшін тек қажетті көрсету мақсаттарын байланыстыруды ұсынамыз.

5.4 Композициялық қабат (көп қабатты)
Multi-Layer көмегімен көрсетілетін текстуралардың көрнекі сапасы жақсырақ. Дегенмен, бұл мүмкіндік қабаттар саны мен текстуралардың өлшемімен GPU өнімділігін айтарлықтай арттырады. Үш қабаттан артық қолданбауды ұсынамыз.

  • Жергілікті әзірлеуші ​​үшін,
    o VIVE Wave SDK әрбір қабат үшін деректерді беру үшін WVR_SubmitFrameLayers пайдаланады.
    o VIVE OpenXR SDK қабат деректерін XrFrameEndInfo ішіне орналастырады және оны xrEndFrame арқылы жібереді.
  • Unity әзірлеушісі үшін,
    o VIVE Wave SDK параметрлері, осы нұсқаулықты қараңыз,
    o VIVE OpenXR параметрлері, осы нұсқаулықты қараңыз.
  • Unreal әзірлеушісі үшін,
    o VIVE Wave SDK параметрлері, осы нұсқаулықты қараңыз.
    o VIVE OpenXR параметрлері, осы нұсқаулықты қараңыз.

5.5 CPU Spike
Орталық процессорды жүктеу ауыррақ болғанда, кейбір фондық жоғары басымдыққа ие ағындарды өңдейді, ол жергілікті орындалуды тоқтатуы мүмкін. Мазмұн қолданбасының басқа ағынмен үзілмейтініне кепілдік бере алмаймыз.
Осындай мәселелер туындаса, мәселені шешетінін көру үшін ағын басымдылығын арттырып көруге болады. Бірақ құрылғыларды оңтайландыру үшін ағын конфигурациясын өзгертсеңіз, оның қандай да бір теріс әсері бар-жоғын тексеру керек.

  • Unity Developer үшін Android ағынының конфигурация мүмкіндігін қараңыз. VIVE Wave SDK пайдалансаңыз, 5-5-2 суретте көрсетілгендей басымдықты реттеуге мүмкіндік беретін WaveXRSettings мүмкіндігіміз бар. Кіші мән жоғары басымдылықты білдіреді.

VIVE VR көрсету өнімділігі - 7-сурет

  • Қозғалтқыш кодын өзгертпейінше, сыртқы параметрлер арқылы ойын ағынын, көрсету ағынын және RHI ағынының басымдылығын өзгертудің нақты әдісі жоқ.

Copyright © 2024 HTC Corporation. Барлық құқықтар қорғалғанVIVE логотипі

Құжаттар / Ресурстар

VIVE VR рендеринг өнімділігі [pdf] Пайдаланушы нұсқаулығы
VR рендеринг өнімділігі, рендеринг өнімділігі, өнімділік

Анықтамалар

Пікір қалдырыңыз

Электрондық пошта мекенжайыңыз жарияланбайды. Міндетті өрістер белгіленген *