Utendaji wa Utoaji wa VR
Uboreshaji na Uboreshaji
Utangulizi
Kufikia matumizi bora ya Uhalisia Pepe kwenye maunzi yasiyo na rasilimali ni ufunguo wa kuwasilisha hali ya utumiaji laini na ya kufurahisha. Iwapo kasi ya fremu ya uwasilishaji wa maudhui itapungua au kutokuwa thabiti chini ya kiwango cha kuonyesha upya kifaa, itasababisha kichungi cha fremu na kudumaa, magonjwa ya mwendo, n.k,. hatimaye kuathiri vibaya uzoefu wa mtumiaji. Kwa hivyo, kuboresha utendakazi wa maudhui ni muhimu sana ili kuhakikisha matumizi ya kufurahisha.
Kabla ya kuanza kupanga utendakazi, ni muhimu kuelewa ni wapi kuna vikwazo vya utendakazi ili kuepuka urekebishaji usiofaa. Hati hii imeundwa ili kusaidia wasanidi programu kutambua vikwazo vya utendakazi na kutoa masuluhisho ya kutatua masuala ya utendaji wa uwasilishaji.
Hati imepangwa katika sehemu zifuatazo:
- Sura ya 2: Tambua Kikwazo - Sehemu hii inawasaidia wasanidi programu kutambua mahali ambapo vikwazo vilipo.
- Sura ya 3 na 4: Mipangilio ya VIVE Wave na VIVE OpenXR - Sehemu hizi zinaonyesha mipangilio mahususi ambayo inaweza kuathiri utendaji wa CPU/GPU kwa programu za VIVE Wave na OpenXR. Wasanidi programu wanaweza kujaribu kuwezesha au kuzima vipengele hivi kulingana na vikwazo vya utendakazi vinavyokabili kubaini kama kuna uboreshaji wowote.
- Sura ya 5: Uboreshaji wa Kawaida - Sehemu hii inashiriki mazoea na uzoefu wa kawaida wa uboreshaji.
Tambua Mshipi
Wakati HMD inasonga, ikiwa programu ya VR/MR ina msukosuko wa fremu au ukingo mweusi, n.k., kwa kawaida husababishwa na tatizo la utendaji mbaya wa uwasilishaji. Kwa kawaida, matatizo ya utendakazi wa uwasilishaji yanaweza kuainishwa katika aina 2: inayofungamana na CPU au inayofungamana na GPU. Elewa ni aina gani za kufunga kwa programu yako ni muhimu sana mwanzoni ili kuepuka urekebishaji usiofaa.
Katika sura hii, tunatoa hatua rahisi zinazokuwezesha kutambua kwa haraka matatizo ya utendaji yalipo.
2.1 Angalia Utoaji wa Ramprogrammen za Maudhui
Kwanza, tunaanza kwa kuangalia ramprogrammen za maudhui ambayo ni idadi ya fremu ambazo con con anatoa kwa sekunde. Inapaswa kudumishwa kwa kasi ya kuonyesha na kuwekwa thabiti. Vinginevyo, inaweza kusababisha jitters fremu.
Ikiwa SDK yako ya programu inatumia VIVE WAVE SDK 6.0.0 au matoleo mapya zaidi, unaweza kutumia amri ifuatayo ya adb kuangalia FPS. DK 6.0.0
$adb Logcat -s VRMetric
Utaona data ifuatayo ya kumbukumbu.
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" Nambari ya kwanza inawakilisha FPS ya maudhui, wakati nambari ya pili inawakilisha kasi ya kuonyesha.
Ikiwa toleo lako la Wave SDK liko chini ya 6.0.0, inashauriwa upate toleo jipya zaidi ili kuboresha utendaji wa uwasilishaji na uboreshaji mwingine.
Ikiwa SDK ya programu yako imejengwa na VIVE OpenXR. Unaweza kutumia amri ifuatayo ya adb kuangalia FPS.
$adb Logcat -s RENDER_ATW
Utaona data ifuatayo ya kumbukumbu
RENDER_ATW: [FPS] muundo mpya:90.00
RENDER_ATW: [FPS] R sasa:90.00 ruka:0 317, -0.0155 0.805527, 0.006788)
RENDER_ATW: [FPS] L sasa:90.00 ruka:0 (0.592301, -0.015502, 0.805539, 0.006773)
Nambari inayofuata "unamu mpya" inawakilisha FPS ya maudhui kwa sasa. Nambari inayofuata "R sasa" na "L sasa" inawakilisha kasi ya kuonyesha.
Wakati mwingine, FPS ya maudhui na kasi ya kuonyesha inaweza kuwa na tofauti kidogo.
Kwa mfanoample, katika kesi iliyo hapo juu, ramprogrammen 89.8 inaweza kuchukuliwa kama ramprogrammen 90.
Ikiwa FPS ya maudhui ya programu iko chini kila mara kuliko kasi ya fremu ya onyesho au ikisalia kuwa thabiti, inaonyesha suala la utendaji wa uwasilishaji. Kwa hivyo, hatua inayofuata ni kutambua ikiwa kizuizi kinatoka kwa CPU au GPU.
2.2 Angalia matumizi ya CPU na GPU
Ikiwa SDK yako ya programu inatumia VIVE WAVE SDK 6.0.0 au matoleo mapya zaidi, unaweza kutumia amri ifuatayo ya adb kuangalia FPS.
$adb logcat -s VRMetric
Utaona data ifuatayo ya kumbukumbu.
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
Kama unavyoona katika matokeo ya kumbukumbu hapo juu, matumizi ya CPU ni 27% na matumizi ya GPU ni 72% Ikiwa toleo lako la Wave SDK liko chini ya 6.0.0, inashauriwa upate toleo jipya zaidi ili kuboresha utendaji wa uwasilishaji na uboreshaji mwingine.
Kwa programu ya VIVE OpenXR, unaweza kutumia amri ifuatayo kuangalia matumizi ya CPU na GPU.
# kwenye linux/ubuntu
$ adb logcat | grep CPU_USAGE
# kwenye powershell
$ adb logcat | Chagua-Mfuatano -Mchoro CPU_USAGE
Utaona logi ifuatayo
CPU Wastani. 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 %
Ukiona kuwa Ramprogrammen haiwezi kudumisha kasi ya fremu ya kuonyesha na matumizi ya GPU pia ni ya juu sana, kwa kawaida huzidi 85%, unaweza kujaribu kurekebisha Azimio la Eyebuffer (sehemu ya 3.1.2, sehemu ya 4.1.2) ili kuona kama itaboresha ramprogrammen. Ikiwa marekebisho haya yatasababisha bora
utendakazi, tunaweza kuhitimisha kuwa suala hili linatokana na GPU na kulenga juhudi zetu za uboreshaji ipasavyo.
Kwa upande mwingine, ikiwa kurekebisha Azimio la Eyebuffer hakuleti uboreshaji unaoonekana wa utendakazi, kuna uwezekano kwamba kikwazo kimefungwa na CPU, na tunapaswa kuzingatia kuboresha utendaji wa CPU.
Inawezekana pia kwamba programu imefungwa kwa CPU na GPU kwa wakati mmoja. Katika hali kama hizi, juhudi za uboreshaji zinapaswa kutumika kwa CPU na GPU ili kufikia utendakazi uliosawazishwa.
2.3 GPU-imefungwa
Programu ya Uhalisia Pepe inapofungamana na GPU, inamaanisha kuwa GPU ndiyo kikwazo kikuu, na haiwezi kufuata mahitaji ya uwasilishaji ya programu. Ili kupunguza masuala yanayohusiana na GPU, zingatia mapendekezo yafuatayo:
Kwanza, tumia zana za kuorodhesha kama vile RenderDoc au mtaalamu wa Game Enginefiler (Unity Profiler, Unreal Insights) ili kuchanganua mahali ambapo GPU inatumia muda wake mwingi. Tambua shughuli za gharama kubwa zaidi na uzingatia kuziboresha.
Kwa Msanidi Programu Asilia, unaweza kutumia RenderDoc kutambua ni simu ipi inayosababisha upakiaji mwingi wa GPU.
Kwa Unity Developer, unaweza kufuata Unity hati hii au utumie RenderDoc kuchanganua suala la utendakazi, na ufuate hati za uboreshaji wa picha za Unity kwa mwongozo wa kuboresha programu yako.
Kwa Unreal Developer, unaweza kutumia GPU Visualizer au utumie RenderDoc kuchanganua suala la utendakazi, na ufuate Miongozo ya Utendaji Isiyo Halisi kwa mwongozo wa kuboresha programu yako.
Pili, unaweza pia kujaribu kurekebisha vipengele au mipangilio fulani ya Wimbi ili kupunguza upakiaji wa GPU.
- Weka Kasi ya Kuonyesha Onyesho polepole zaidi (sehemu ya 3.1.1, sehemu ya 4.1.1)
- Rekebisha Azimio la Eyebuffer (kifungu cha 3.1.2, sehemu ya 4.1.2), 14.1.1)
- Jaribu kuwezesha Foveation (kifungu 3.1.4, sehemu ya 4.1.4).
Ikiwa programu yako pia ni programu ya MR, unaweza kurekebisha mipangilio ya Passthrough pia.
- Rekebisha Ubora wa Picha ya Passthrough chini. (kifungu 3.2.1)
- Rekebisha Mfumo wa Njia polepole. (kifungu 3.2.2).
Kwa mipangilio mingine zaidi kuhusu utendaji wa GPU, unaweza kurejelea Sura ya 2.6.
2.4 CPU-imefungwa
Wakati programu ya Uhalisia Pepe imefungwa na CPU, inamaanisha kuwa CPU ndio kikwazo kikuu, zingatia mapendekezo yafuatayo:
Kwanza, tumia zana za kuorodhesha kama vile Systrace au mtaalamu wa Injini ya Mchezofiler (Unity Profiler, Maarifa Isiyo halisi) kuchanganua na kutambua ni sehemu gani za msimbo wako zinazotumia rasilimali nyingi za CPU. Lenga katika uboreshaji wa maeneo haya na urekebishe tena algoriti zenye kina kikokotoo ili kupunguza upakiaji wa CPU.
- Kwa Msanidi Programu Asilia, unaweza kutumia Systrace kufanya profiler mradi wako.
- Kwa Unity Developer, unaweza kutumia CPU Usage Profiler moduli ya kupata suala la utendaji wa CPU.
- Kwa Unreal Developer, unaweza kutumia Unreal's Insights kupata tatizo la utendaji wa CPU.
Pili, unaweza pia kujaribu kurekebisha vipengele au mipangilio fulani ya Wimbi ili kupunguza upakiaji wa GPU.
- Weka Kasi ya Kuonyesha Onyesho polepole zaidi (sehemu ya 3.1.1, sehemu ya 4.1.1)
- Tumia Multi-View Utoaji (kifungu 3.1.4, kifungu cha 4.1.4)
Ikiwa programu yako pia ni programu ya MR, unaweza kurekebisha mipangilio ya Passthrough pia.
- Rekebisha Mfumo wa Upitishaji polepole (sehemu ya 3.2.2).
Kwa mipangilio mingine zaidi kuhusu utendaji wa CPU, unaweza kurejelea Sura ya 2.6.
2.5 Muhtasari
Hatimaye, tumepanga utendakazi wa kukagua utendakazi katika Mchoro 2-5-1. Anza kwa kuangalia FPS ya yaliyomo. Iwapo ni ya chini kuliko kasi ya fremu ya onyesho au bado haijatengemaa, basi changanua matumizi ya GPU/CPU ili kubaini ikiwa imefungwa kwa GPU au CPU. Mwishowe, tumia mtaalamufiler kutambua matatizo yanayoweza kutokea ya utendakazi au kurekebisha vipengele vya Wimbi au mipangilio ili kuboresha utendaji wa CPU.

2.6 Marejeleo ya Haraka Ambayo Mipangilio Inaweza Kuboresha upakiaji wa CPU/GPU
Orodhesha mipangilio ya SDK inayohusiana na upakiaji wa CPU/GPU kama ilivyo hapo chini. Unaweza kutegemea kizuizi cha programu ili kuangalia mipangilio inayofaa ya uboreshaji.
Kuhusiana na CPU:
- Mpangilio wa SDK wa VIVE Wave
o Maudhui ya Uhalisia Pepe
▪ 3.1.1 Kiwango cha Kuonyesha Kuonyesha upya
▪ 3.1.4 Multi-View Utoaji
▪ 3.1.6 Ubora wa Kubadilika
▪ 3.1.7 Kiunda Mwendo Unaobadilika
o Maudhui ya MR
▪ 3.2.2 Rekebisha Kiwango cha Fremu ya Kupita - Mpangilio wa VIVE OpenXR SDK
o Maudhui ya Uhalisia Pepe
▪ 4.1.1 Kiwango cha Kuonyesha Kuonyesha upya
▪ 4.1.4 Multi-View Utoaji - Uboreshaji wa Kawaida
o 5.5 CPU Mwiba
Kuhusiana na GPU:
- Mpangilio wa SDK wa VIVE Wave
o Maudhui ya Uhalisia Pepe
▪ 3.1.1 Kiwango cha Kuonyesha Kuonyesha upya
▪ 3.1.2 Azimio la Bufa ya Macho
▪ 3.1.3 Multi-View Utoaji
▪ 3.1.4 Foveation
▪ 3.1.5 Uboreshaji wa Ukali wa Fremu (FSE)
▪ 3.1.6 Ubora wa Kubadilika
▪ 3.1.7 Kiunda Mwendo Unaobadilika
▪ 3.1.8 Toa Mask [Haitumiki Isiyo ya Kweli] o Maudhui ya MR
▪ 3.2.1 Rekebisha Ubora wa Mapitio
▪ 3.2.2 Rekebisha Kiwango cha Fremu ya Kupita - Mpangilio wa VIVE OpenXR SDK
o Maudhui ya Uhalisia Pepe
▪ 4.1.1 Kiwango cha Kuonyesha Kuonyesha upya
▪ 4.1.2 Azimio la Bufa ya Macho
▪ 4.1.3 Multi-View Utoaji
▪ 4.1.4 Foveation [Haitegemei Isiyo ya Kweli] ▪ 4.1.5 Toa Kinyago [Si Uauni Isiyo Halisi] - Uboreshaji wa Kawaida
o 5.1 Zima Hali ya Juu ya Utendaji
o 5.2 Wingiampling
o 5.3 Mzigo/Duka la GMEM
o 5.4 Tabaka la Utungaji (Tabaka Nyingi)
Mpangilio wa Wimbi wa VIVE
VIVE Wave ni jukwaa huria na zana ambayo hukuruhusu kukuza maudhui ya Uhalisia Pepe kwa urahisi na hutoa uboreshaji wa kifaa chenye utendakazi wa juu kwa washirika wengine. VIVE Wave inasaidia Umoja na injini za mchezo zisizo za kweli.
Tunaboresha na kutatua hitilafu mbalimbali kila mara, kwa hivyo tulipendekeza kusasisha SDK.
Kwa sasa, VIVE Wave inaauni OpenGL ES pekee. Hapa inaorodhesha vipengele vilivyopangwa na ushawishi wa utendaji wa GPU. Tutagawanya hii katika sehemu mbili: maudhui ya VR na maudhui ya MR.
3.1 Maudhui ya Uhalisia Pepe
3.1.1 Kiwango cha Kuonyesha upya
Viwango vya juu vya uboreshaji hutoa taswira laini, lakini huja kwa gharama ya mzigo ulioongezeka wa mfumo. Kinyume chake, viwango vya chini vya uboreshaji hupunguza mzigo wa mfumo, lakini husababisha taswira zisizo laini. Ikiwa Programu ina tatizo la kufungwa kwa CPU/GPU, unaweza kujaribu kupunguzaasing kiwango cha kuonyesha upya skrini ili kupunguza tatizo.
- Kwa msanidi wa Asili, rejelea WVR_SetFrameRate.
- Kwa msanidi wa Umoja, rejelea mwongozo huu.
- Kwa msanidi programu asiye halisi, rejelea mwongozo huu.
3.1.2 Azimio la Bufa ya Macho
Azimio la eyebuffer ni saizi ya maandishi ambayo Programu ya maudhui yatatolewa, umbile linalotekelezwa litawasilishwa kwenye muda wa utekelezaji wa kuchapisha na kuwasilishwa kwenye onyesho la HMD.
Ingawa saizi kubwa ya akiba ya macho inaweza kusababisha taswira wazi na ya kina zaidi, lakini pia huweka mzigo mkubwa kwenye GPU. Kwa hiyo, ni muhimu kupata uwiano sahihi kati ya ubora wa kuona na utendaji.
Ikiwa Programu ina tatizo la GPU, unaweza kujaribu decreasing ukubwa wa kidhibiti cha macho kwa kuzidisha kipengele cha kipimo. Hata hivyo, tunapendekeza kutopunguza kipengele cha kipimo chini ya 0.7, kwani hii inaweza kusababisha ubora usiokubalika wa kuona.
- Kwa msanidi wa Asili, rejelea WVR_ObtainTextureQueue. Wakati wa kurekebisha ukubwa, unapaswa kuzidisha upana na urefu kwa uwiano.
- Kwa msanidi wa Unity, rejelea WaveXRSSettings.
Vinginevyo, unaweza kufanya mabadiliko kupitia msimbo kama belwoe.
XRSettings.eyeTextureResolutionScale = ResolutionScaleValue; // C# - Kwa msanidi programu asiye halisi, rejelea SetPixelDensity.
3.1.3 Multi-View Utoaji
Katika utoaji wa jadi, tunachora macho ya kushoto na kulia kando, ambayo inahitaji simu mbili za kuchora kwa eneo moja. nyingi-View Utoaji hushughulikia suala hili kwa kupiga simu moja tu ya sare.
Kipengele hiki hupunguza mzigo wa CPU kwa punguzoasing idadi ya simu za kuchota. GPU pia ina faida kadhaa, mzigo wa kazi wa shader ya kipeo pia hupunguzwa kwani haihitaji kuendesha shader ya ziada kwa jicho lingine, lakini mzigo wa kazi wa shader ya kipande bado haujabadilika kwani bado inahitaji kutathmini kila pikseli kwa macho yote mawili. Tunapendekeza uwashe kipengele hiki.
- Kwa msanidi wa Asili, unaweza kurejelea wvr_native_hellovar sample.
- Kwa msanidi wa Umoja, rejelea Njia ya Kutoa, pasi moja ni nyingi-view kipengele.
- Kwa msanidi programu asiye halisi, rejelea mwongozo huu.
3.1.4 Foveation
Utoaji wa Foveated umeundwa kimsingi kupunguza mzigo wa GPU. Hupunguza maelezo ya fremu katika pembezoni mwa onyesho na kudumisha maelezo ya mwonekano wa juu katikati ya uga wa view. Ikiwa Programu ina tatizo la kuunganisha GPU, unaweza kujaribu kuwezesha uonyeshaji wa Foveation.

Kuna kitu kinahitaji kuzingatiwa wakati wa kutumia foveation:
➢ Watumiaji kwa kawaida hawatambui maelezo yaliyopunguzwa katika maeneo ya pembezoni yanayotumia hali chaguo-msingi ya foveation. Lakini ikiwa ubora wa pembeni wa foveation umewekwa chini sana, inaweza kuonekana kwa mtumiaji.
➢ Athari za uchokozi zinaweza kuonekana zaidi kwa nyenzo fulani za unamu, ambazo zinaweza kuvutia umakini wa mtumiaji. Watengenezaji wanapaswa kufahamu hili na kulitathmini ipasavyo.
➢ Kuwasha kipengele cha uonyeshaji kilichoimarishwa hugharimu utendakazi wa GPU isiyobadilika, ambayo inaweza kutofautiana kati ya 1% hadi 6% kulingana na ukubwa wa buffer ya jicho. Unapotumia kiweka kivuli katika eneo la tukio, faida ya utendakazi kutokana na rasilimali za kuokoa inaweza kuwa ya chini kuliko gharama isiyobadilika ya utendaji wa GPU, na hivyo kusababisha kushuka kwa utendakazi.
- Kwa msanidi wa Asili, rejelea mwongozo huu.
- Kwa msanidi wa Umoja, rejelea mwongozo huu. Hasa, unapowasha uchakataji wa baada ya usindikaji au HDR, foveation haiwezi kutumika kikamilifu. Kwa sababu Unity itatoa vitu kwenye muundo wake mwenyewe wa kutoa, badala ya muundo wa sasa unaozalishwa na wakati unaotumika ambao unaauni foveation.
- Kwa msanidi programu asiye halisi, rejelea mwongozo huu. Hasa, foveation haiwezi kutumika kikamilifu kwenye Multi-View Uwasilishaji, kwa sababu Unreal haiwezi kutoa vitu moja kwa moja kwenye muundo unaozalishwa na wakati wa utekelezaji unaoauni foveation.
3.1.5 Uboreshaji wa Ukali wa Fremu (FSE)
FSE ikitoa matokeo ya uwasilishaji ya kunoa kupitia kutambulisha kichujio cha kunoa, inaweza kufanya maudhui kuwa wazi zaidi na kusaidia sana kuboresha uwazi wa maandishi katika tukio. Ikiwa Programu ina tatizo la kuunganisha GPU, unaweza kufikiria kuzima FSE ikiwa si muhimu.

- Kwa msanidi wa Asili, rejelea mwongozo huu.
- Kwa msanidi wa Umoja, rejelea mwongozo huu.
- Kwa msanidi programu asiye halisi, rejelea mwongozo huu.
3.1.6 Ubora wa Kubadilika
Ili kuhifadhi betri na kudumisha utendakazi wa uwasilishaji wa kifaa, kipengele hiki hurekebisha kiotomatiki viwango vya utendaji vya saa ya CPU/GPU kulingana na matumizi yake. Zaidi ya hayo, mikakati mingine inaweza kutekelezwa ili kuboresha utendakazi, kama vile kuwezesha/kuzima kiotomatiki Foveation au maudhui yanaweza kujirekebisha ikiwa yanapokea matukio ya upakiaji wa juu/chini.
- Kwa msanidi wa Asili, rejelea mwongozo huu.
- Kwa msanidi wa Umoja, rejelea mwongozo huu. Katika programu-jalizi yetu ya Unity, saizi ya bafa ya macho inaweza kubadilishwa kiotomatiki kulingana na utendakazi wa sasa; Ukubwa wa maandishi utachuja thamani za vipimo ambazo ni ndogo sana katika orodha ya Azimio. Tunapendekeza maandishi ya ukubwa wa angalau 20 dmm au zaidi.
- Kwa msanidi programu asiye halisi, rejelea mwongozo huu.
3.1.7 Kiunda Mwendo Ambacho
Kipengele hiki ni kipengele cha majaribio ambacho kinajumuisha UMC na PMC. UMC itapunguza Kiwango cha Fremu kwa nusu na kuongeza sura mpya kwa wakati halisi ili kuweka ulaini wa kuona. Walakini, inakuja na hali ya kusubiri, mabaki na upakiaji wa GPU.
PMC hutumia Depth Buffer kuruhusu ATW kuwajibika kwa tafsiri ya HMD, kupanua hadi fidia ya 6-dof. Kipengele hiki kinaweza kupunguza muda wa kusubiri tafsiri kwa fremu 1~2, lakini kuongeza upakiaji wa GPU.
- Kwa msanidi wa Asili, rejelea mwongozo huu.
- Kwa msanidi wa Umoja, rejelea mwongozo huu.
- Kwa msanidi programu asiye halisi, rejelea mwongozo huu.
3.1.8 Toa Kinyago [Si Uauni Isiyo halisi]
Pixels kwenye kingo huwa karibu kutoonekana baada ya kupotoshwa, kinyago cha kuonyesha hurekebisha thamani za kina za bafa za pikseli hizi zisizoonekana. Ukiwezesha majaribio ya kina, kutokana na early-z, pikseli hizi zisizoonekana hazitatekelezwa, na hivyo kupunguza upakiaji wa GPU. Kipengele hiki ni muhimu ikiwa kuna vipengee kizito vya utoaji katika maeneo haya yasiyoonekana; vinginevyo, ikiwa hakuna vipengee vya uwasilishaji katika maeneo haya, inashauriwa kuizima kwa sababu itatumia matumizi madogo ya GPU.
- Kwa msanidi wa Asili, rejelea mwongozo huu. Lazima ufunge bafa ya kina kabla ya kupiga simu RenderMask; vinginevyo, itakuwa haifai.
- Kwa msanidi wa Umoja, rejelea mwongozo huu.
- Kwa msanidi programu asiye halisi, kwa sasa hauauni kipengele cha Render Mask.
3.2 MR Maudhui
3.2.1 Rekebisha Ubora wa Mapitio
Kuna viwango 3 vya ubora wa picha:
➢ WVR_PassthroughImageQuality_DefaultMode - inafaa kwa maudhui ya MR bila mahitaji mahususi.
➢ WVR_PassthroughImageQuality_PerformanceMode - inafaa kwa maudhui ya MR ambayo yanahitaji rasilimali zaidi ya GPU kwa uonyeshaji wa eneo pepe.
➢ WVR_PassthroughImageQuality_QualityMode - inafaa kwa maudhui ya MR ambayo huruhusu watumiaji kuona mazingira yanayowazunguka kwa uwazi, lakini onyesho pepe la maudhui lazima liwe na urekebishaji mzuri zaidi wa utendakazi.
Unaweza kurekebisha ubora wa Passthrough hadi PerformanceMode ili kupunguza matumizi ya GPU.
- Kwa msanidi wa Asili, Umoja au Asiye halisi, rejelea mwongozo huu.
3.2.2 Rekebisha Kiwango cha Fremu ya Kupita
Kama vile kiwango cha kuonyesha upya Onyesho, kasi ya juu ya Fremu ya Passthrough inatoa picha laini, lakini inakuja kwa gharama ya kuongezeka kwa upakiaji wa mfumo. Kinyume chake, viwango vya chini vya kuonyesha upya hupunguza mzigo wa mfumo, lakini husababisha mwonekano mdogo. Kuna aina 2 za kasi ya fremu ya kupita: Boost na Kawaida.
- Kwa msanidi wa Asili, anaweza kurekebisha ubora wa kupita kwa kutumia WVR_SetPassthroughImageRate.
- Kwa msanidi wa Unity, inaweza kubadilika kupitia nambari, mfanoampmipangilio ya le ni kama ifuatavyo // C#
Interop.WVR_SetPassthroughImageQuality(WVR_PassthroughImageQuality.PerformanceMode); - Kwa msanidi programu asiye halisi, njia ya kuweka tazama nodi ya ramani kwenye Mchoro 3-2-2.

Mpangilio wa VIVE OpenXR
OpenXR ni kiwango huria ambacho hutoa seti ya kawaida ya API za kutengeneza programu za XR zinazotumia anuwai ya vifaa vya Uhalisia Pepe, vilivyotengenezwa na Kikundi cha Khronos. VIVE Focus 3 na VIVE XR Elite pia zinatumia OpenXR, VIVE OpenXR SDK hutoa usaidizi wa kina kwa vifaa vya HTC VR, kuruhusu wasanidi programu kuunda Allin-One na maudhui yenye Unity na Unreal injini kwenye vifaa vya HTC VR. Tunaboresha na kutatua hitilafu mbalimbali kila mara, kwa hivyo tunapendekezwa kuwa wasanidi programu wasasishe toleo la FOTA la kifaa chao ili kulisasisha. Hivi sasa, VIVE OpenXR SDK inasaidia OpenGL ES na Vulkan.
4.1 Maudhui ya Uhalisia Pepe
4.1.1 Kiwango cha Kuonyesha upya
Dhana hapa ni sawa na Kiwango cha Kuonyesha upya 3.1.1.
- Kwa msanidi wa Asili, rejelea XrEventDataDisplayRefreshRateChangedFB.
- Kwa msanidi wa Umoja, rejelea mwongozo huu.
- Kwa msanidi programu asiye halisi, rejelea mwongozo huu.
4.1.2 Azimio la Bufa ya Macho
Dhana hapa ni sawa na 3.1.2 Eyebuffer Resolution. tunapendekeza usipunguze kipengele cha kipimo chini ya 0.7, kwa kuwa hii inaweza kusababisha ubora wa mwonekano usiokubalika.
- Kwa msanidi wa Asili, rejelea xrCreateSwapchain. Wakati wa kurekebisha ukubwa, unapaswa kuzidisha upana na urefu kwa uwiano. ,
- Kwa msanidi wa Unity, rejelea mfano ufuataoample // C#
XRSSettings.eyeTextureResolutionScale = 0.7f; //imependekezwa 1.0f~0.7f - Kwa mipangilio isiyo halisi, rejelea mwongozo huu.
4.1.3 Multi-View Utoaji
Wazo hapa ni sawa na 3.1.3 Multi-View Utoaji. Kipengele hiki hupunguza mzigo kwenye CPU, GPU pia ina manufaa fulani. Tunapendekeza kuwezesha kipengele hiki.
- Kwa msanidi wa asili, KhronosGroup hutoa OpenXR Multi-View example, rejea mwongozo huu.
- Kwa msanidi wa Umoja, rejelea Njia ya Kutoa, pasi moja ni nyingi-view kipengele.
- Kwa msanidi programu asiye halisi, kama ilivyo kwa mipangilio ya VIVE Wave, rejelea mwongozo huu.
4.1.4 Foveation [Si Uungwaji Uhalisi]
Dhana hapa ni sawa na 3.1.4 Foveation. Utoaji wa foveated kimsingi umeundwa ili kupunguza upakiaji wa GPU lakini kuiwezesha kutatoza gharama isiyobadilika ya utendakazi wa GPU na ikiwa foveation imewekwa chini sana na nyenzo au maumbo fulani kutumika, inaweza kuwa mbaya sana.
inayoonekana kwa mtumiaji. Kwa hivyo, inashauriwa kuwasha au kuzima kipengele hiki kulingana na mahitaji yako mahususi na kuzingatia utendakazi Kwa sasa, utendakazi wa Foveated unatumika tu katika OpenGL ES kwenye VIVE OpenXR SDK.
- Kwa msanidi wa Asili, kipengele hiki kinapatikana, lakini kwa sasa, hakuna examples hutolewa.
- Kwa msanidi wa Umoja, rejelea mwongozo huu.
- Kwa msanidi programu asiye halisi, hatumii kipengele hiki kwa sasa.
4.1.5 Toa Kinyago [Si Uauni Isiyo halisi]
Dhana hapa ni sawa na 3.1.8 Render Mask.
- Kwa msanidi wa Asili, tumia XrVisibilityMaskKHR kupata Mesh. Kabla ya kutoa tukio, tumia Mesh hii kujaza thamani za akiba ya kina kabla ya kutoa tukio.
- Kwa msanidi wa Unity, kipengele cha Render Mask kimewashwa kwa chaguomsingi kwa OpenGL ES, na kinaweza kulemazwa kwa msimbo ufuatao; Vulkan kwa sasa haitumii kipengele hiki. //C# UnityEngine.XR.XRSsettings.occlusionMaskScale = 0.0f;
- Kwa msanidi programu asiye halisi, kwa sasa hauauni kipengele cha Render Mask.
4.2 MR Maudhui
OpenXR kwa sasa haitumii kuweka Ubora wa Passthrough na Kiwango cha Fremu. Tutaendelea kuboresha na kurekebisha kipengele cha Passthrough, kwa hivyo tulipendekeza kwamba wasanidi programu wasasishe toleo la FOTA la kifaa ili kulisasisha.
Uboreshaji wa Kawaida
5.1 Zima Hali ya Juu ya Utendaji
Kuzima "Hali ya utendakazi wa hali ya juu" kunaweza kupunguza ukubwa wa skrini ya kifaa, na hivyo kupunguza matumizi ya GPU. Kikwazo ni kupungua kwa azimio la skrini. Unaweza kusawazisha ubora na utendakazi ili kuamua iwapo utaiwezesha.
Mahali pa kuweka VIVE Focus 3 imeonyeshwa Mchoro 5-1-1:

Mahali pa kuweka VIVE XR Elite imeonyeshwa Mchoro 5-1-2:

5.2 Nyingiampling Anti-Aliasing
Nyingiampling ni mpinga-aliasinMbinu ya g inayotumika kulainisha kingo zenye mikunjo, kwa kawaida huharakishwa kupitia vifaa, ambavyo hugharimu gharama ya utendaji wa GPU. Tunapendekeza kutoweka MSAA juu kuliko mara 2 kwa sababu thamani ya urefu zaidi itatumia matumizi zaidi ya gpu.
- Kwa Wasanidi Programu Asilia, MSAA OpenGL ES exsampnaweza kurejelea hili; MSAA Vulkan exampler anaweza kurejelea hii.
Adreno GPU hutoa kiendelezi kinachoboresha MSAA. - Kwa msanidi wa Unity, rejelea chama hiki.
- Kwa msanidi programu wa Unreal, rejelea chama hiki. Unreal pia ina huduma ya anti-ali baada ya usindikajiasing, rejea chama hiki.
5.3 Mzigo/Duka la GMEM
Katika usanifu wa Adreno GPU, kuna kipengele ambapo, wakati wa kufunga Lengo la Utoaji, ikiwa Lengo la Upeanaji halifafanui au kubatilisha, kila wakati utoaji unapotokea, thamani katika Lengo la Upeanaji hupakiwa kwenye Kumbukumbu ya Michoro, inayoitwa Mzigo wa GMEM. Ikiwa thamani za awali hazihitajiki, futa au ubatilishe uwasilishaji wa Utekelezaji Lengwa, unaweza kuepuka hali hii ili kuboresha utendaji wa GPU.
Unaweza kuzuia Mzigo wa GMEM kwa kutumia njia zifuatazo. Katika OpenGL ES, baada ya kufunga FBO, unaweza kupiga simu glClear na glClearDepth ili kufuta Rangi, Kina, na bafa ya Stencil, au piga glInvalidateFramebuffer kubatilisha Lengo lililobainishwa la Render. Katika Vulkan, maagizo ya ziada sio lazima; unaweza kuweka kwa uwazi ikiwa ungependa kufuta kiambatisho kabla ya kutumia katika VkAttachmentDescription.loadOp.
Vile vile, kuhifadhi matokeo ya Tile Render kurudi kwenye Kumbukumbu Kuu kutoka kwa Kumbukumbu ya Michoro inaitwa Duka la GMEM; operesheni hii pia ni ghali kwa GPU. Ili kuepuka hili, tunapendekeza ufunge Malengo ya Utoaji yanayohitajika pekee ili kuzuia shughuli zisizo za lazima za Duka.
5.4 Safu ya Utungaji (Tabaka Nyingi)
Miundo inayoonyeshwa kwa kutumia Tabaka nyingi ina ubora bora wa kuona. Hata hivyo, kipengele hiki huongeza utendaji wa GPU kwa kiasi kikubwa na idadi ya tabaka na ukubwa wa textures. Tunapendekeza sio zaidi ya tabaka tatu.
- Kwa msanidi wa asili,
o VIVE Wave SDK hutumia WVR_SubmitFrameLayers kupitisha data kwa kila safu.
o VIVE OpenXR SDK inaweka data ya safu kwenye XrFrameEndInfo na kuiwasilisha kupitia xrEndFrame. - Kwa watengenezaji wa Umoja,
o Mipangilio ya VIVE Wave SDK, rejelea mwongozo huu,
o VIVE mipangilio ya OpenXR, rejelea mwongozo huu. - Kwa msanidi programu asiye halisi,
o Mipangilio ya VIVE Wave SDK, rejelea mwongozo huu.
o VIVE mipangilio ya OpenXR, rejelea mwongozo huu.
5.5 CPU Mwiba
Wakati upakiaji wa CPU ni mzito zaidi, baadhi ya minyororo ya usuli huwa na kipaumbele cha juu, inaweza kukatiza utekelezaji asilia. Hatuwezi kuhakikisha kuwa Ombi la Maudhui halitakatizwa na mazungumzo mengine.
Ikiwa matatizo kama hayo yatatokea, unaweza kujaribu kuongezaasing kipaumbele cha uzi ili kuona kama unasuluhisha tatizo. Lakini ukibadilisha usanidi wa uzi ili kuboresha vifaa, unahitaji kuangalia kama hii ina athari yoyote mbaya.
- Kwa Unity Developer, rejelea kipengele cha usanidi wa thread ya Android. Ikiwa unatumia VIVE Wave SDK, tuna kipengele katika WaveXRSSettings ambacho kinakuruhusu kurekebisha kipaumbele, kama inavyoonyeshwa kwenye Mchoro 5-5-2. Thamani ndogo inawakilisha kipaumbele cha juu.

- Isiyo ya kweli hakuna njia ya kubadilisha thread ya mchezo, utoaji wa nyuzi na kipaumbele cha thread ya RHI kupitia mipangilio ya nje isipokuwa urekebishe msimbo wa injini.
Hakimiliki © 2024 HTC Corporation. Haki zote zimehifadhiwa
Nyaraka / Rasilimali
![]() |
Utendaji wa Utoaji wa VIVE VR [pdf] Mwongozo wa Mtumiaji Utendaji wa Utekelezaji wa Uhalisia Pepe, Utendaji wa Utoaji, Utendaji |
