Ukusebenza Kwe-VR Yokunikezela
Ukushuna kanye nokwenza ngcono
Isingeniso
Ukuzuza ukuzizwisa kwe-VR okuphelele ku-hardware enomkhawulo wensiza kuyisihluthulelo sokuletha okuhlangenwe nakho komsebenzisi okushelelayo nokunethezekile. Uma izinga lozimele lokunikezwayo kokuqukethwe lehla noma lingazinzi ngaphansi kwezinga lokuvuselela ledivayisi, lizoholela ekwahluleleni kozimele kanye nokuntenga, izifo ezinyakazayo, njll,. ekugcineni kube nomthelela omubi kulwazi lomsebenzisi. Ngakho-ke, ukuthuthukisa ukusebenza kokuqukethwe kubaluleke kakhulu ukuze uqinisekise ukuzizwisa okujabulisayo.
Ngaphambi kokuqala ukushuna kokusebenza, kubalulekile ukuqonda ukuthi iziphi izingqinamba zokusebenza ukuze ugweme ukushuna okungasebenzi. Lo mbhalo uklanyelwe ukusiza onjiniyela babone izingqinamba zokusebenza futhi banikeze izixazululo zokuxazulula izinkinga zokusebenza kokunikezela.
Idokhumenti ihlelwe yaba yizigaba ezilandelayo:
- Isahluko sesi-2: Thola i-Bottleneck - Lesi sigaba sisiza abathuthukisi ekuboneni lapho izingqinamba zikuphi.
- Isahluko 3 no-4: Izilungiselelo ze-VIVE Wave ne-VIVE OpenXR - Lezi zigaba ziveza izilungiselelo ezithile ezingase zibe nomthelela ekusebenzeni kwe-CPU/GPU kuzinhlelo zokusebenza ze-VIVE Wave ne-OpenXR. Onjiniyela bangazama ukunika amandla noma ukukhubaza lezi zici ngokusekelwe kuzithiyo zokusebenza okuhlangatshezwane nazo ukuze banqume ukuthi kukhona yini ukuthuthukiswa.
- Isahluko 5: Ukuthuthukisa Okujwayelekile - Lesi sigaba sabelana ngezinqubo ezithile ezivamile zokuthuthukisa kanye nolwazi.
Khomba I-Bottleneck
Uma i-HMD ihamba, uma uhlelo lokusebenza lwe-VR/MR lune-jitter yozimele noma umphetho omnyama, njll., ngokuvamile lubangelwa inkinga yokusebenza kabi kokunikezela. Ngokuvamile, ukuhlinzeka ngezinkinga zokusebenza kungahlukaniswa ngezinhlobo ezi-2: i-CPU-bound noma i-GPU-bound. Qonda ukuthi yiziphi izinhlobo zokubopha kuhlelo lwakho lokusebenza ezibaluleke kakhulu ekuqaleni ukuze ugweme ukushuna okungasebenzi kahle.
Kulesi sahluko, sihlinzeka ngezinyathelo ezilula ezikuvumela ukuthi ukhombe ngokushesha ukuthi izinkinga zokusebenza zikuphi.
2.1 Hlola i-FPS enikezela ngokuqukethwe
Okokuqala, siqala ngokuhlola i-FPS yokuqukethwe okuyinombolo yozimele i-con content conered ngomzuzwana. Kufanele igcinwe ilingana nozimele wesibonisi futhi igcinwe izinzile. Uma kungenjalo, kungase kubangele amajita ozimele.
Uma i-SDK yohlelo lwakho lokusebenza isebenzisa i-VIVE WAVE SDK 6.0.0 noma eyakamuva, ungasebenzisa umyalo olandelayo we-adb ukuhlola i-FPS. DK 6.0.0
$adb Logcat -s VRMetric
Uzobona idatha yelogi elandelayo.
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
“I-FPS=89.8/89.8” Inombolo yokuqala imelela i-FPS yokuqukethwe, kanti inombolo yesibili imelela isilinganiso sozimele esiboniswayo.
Uma ngabe inguqulo yakho ye-Wave SDK ingaphansi kuka-6.0.0, kuyanconywa ukuthi uthuthukele enguqulweni yakamuva ukuze uthuthukise ukusebenza kokunikezela nokunye ukulungiselelwa.
Uma uhlelo lwakho lwe-SDK lwakhiwe nge-VIVE OpenXR. Ungasebenzisa umyalo olandelayo we-adb ukuhlola i-FPS.
$adb Logcat -s RENDER_ATW
Uzobona idatha yelogi elandelayo
RENDER_ATW: [FPS] ukuthungwa okusha:90.00
RENDER_ATW: [FPS] R okwamanje:90.00 yeqa:0 317, -0.0155 0.805527, 0.006788)
RENDER_ATW: [FPS] L okwamanje:90.00 yeqa:0 (0.592301, -0.015502, 0.805539, 0.006773)
Inombolo elandelayo "ukuthungwa okusha" imelela i-FPS yokuqukethwe okwamanje. Inombolo elandelayo “ikhona R” kanye “no-L ekhona” imelela isilinganiso sozimele.
Kwesinye isikhathi, i-FPS yokuqukethwe kanye ne-framerate yokubonisa kungase kube nokungafani okuncane.
Okwesiboneloample, esimweni esingenhla, i-89.8 FPS ingabhekwa njenge-90 FPS.
Uma i-FPS yokuqukethwe yohlelo lokusebenza iphansi ngokuqhubekayo kunesilinganiso sozimele esiboniswayo noma ihlala ingazinzile, ikhombisa inkinga yokusebenza kokunikezela. Ngakho-ke, isinyathelo esilandelayo ukukhomba ukuthi ibhodlela livela ku-CPU noma ku-GPU.
2.2 Hlola ukusetshenziswa kwe-CPU ne-GPU
Uma i-SDK yohlelo lwakho lokusebenza isebenzisa i-VIVE WAVE SDK 6.0.0 noma eyakamuva, ungasebenzisa umyalo olandelayo we-adb ukuhlola i-FPS.
$adb logcat -s VRMetric
Uzobona idatha yelogi elandelayo.
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
Njengoba ungabona kumphumela welogi ongenhla, ukusetshenziswa kwe-CPU kungu-27% futhi ukusetshenziswa kwe-GPU kungu-72% Uma inguqulo yakho ye-Wave SDK ingaphansi kuka-6.0.0, kuyanconywa ukuthi uthuthukele enguqulweni yakamuva ukuze uthuthukise ukusebenza kokunikezela nokunye ukulungiselelwa.
Ngohlelo lokusebenza lwe-VIVE OpenXR, ungasebenzisa umyalo olandelayo ukuhlola ukusetshenziswa kwe-CPU ne-GPU.
# ku-linux/ubuntu
$ adb logcat | grep CPU_USAGE
# ku-powershell
$ adb logcat | Khetha-Uchungechunge -Iphethini CPU_USAGE
Uzobona ilogi elandelayo
CPU Avg. 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 %
Uma ubona ukuthi i-FPS ayikwazi ukugcina izinga lozimele wokubonisa futhi ukusetshenziswa kwe-GPU nakho kuphezulu kakhulu, ngokuvamile kudlula u-85%, ungazama ukulungisa I-Eyebuffer Resolution (isigaba 3.1.2, isigaba 4.1.2) ukuze ubone ukuthi iyayithuthukisa yini i-FPS. Uma lokhu kulungiswa kuholela ekubeni ngcono
ukusebenza, singaphetha ngokuthi udaba luboshelwe yi-GPU futhi sigxile emizamweni yethu yokwenza kahle ngokufanele.
Ngakolunye uhlangothi, uma ukulungisa i-Eyebuffer Resolution kungaphumeleli ekuthuthukisweni kokusebenza okubonakalayo, ibhodlela ngokunokwenzeka liboshwe yi-CPU, futhi kufanele sigxile ekwandiseni ukusebenza kwe-CPU.
Kuyenzeka futhi ukuthi uhlelo lokusebenza luboshwe yi-CPU kanye ne-GPU ngesikhathi esisodwa. Ezimweni ezinjalo, imizamo yokuthuthukisa kufanele isetshenziswe kukho kokubili i-CPU ne-GPU ukuze kuzuzwe ukuthuthukiswa kokusebenza okulinganiselwe.
2.3 GPU-boshiwe
Uma uhlelo lokusebenza lwe-VR luboshelwe ku-GPU, kusho ukuthi i-GPU iyibhodlela eliyinhloko, futhi ayikwazi ukuhambisana nezidingo zokunikezela zohlelo lokusebenza. Ukuze unciphise izinkinga eziboshelwe yi-GPU, cabangela izincomo ezilandelayo:
Okokuqala, sebenzisa amathuluzi okwenza iphrofayela njenge-RenderDoc noma i-Game Engine profiler (Unity Profiler, I-Unreal Insights) ukuhlaziya lapho i-GPU ichitha khona isikhathi sayo esiningi. Khomba imisebenzi ebiza kakhulu futhi ugxile ekuyilungiseleleni.
Kunjiniyela Womdabu, ungasebenzisa i-RenderDoc ukukhomba ukuthi iyiphi ikholi yokudonsa ebangela umthwalo oweqile we-GPU.
Ku-Unity Developer, ungakwazi ukulandela i-Unity le dokhumenti noma usebenzise i-RenderDoc ukuze uhlaziye inkinga yokunikezela, futhi ulandele amadokhumenti okuthuthukisa izithombe ze-Unity ukuze uthole isiqondiso sokuthuthukisa uhlelo lwakho lokusebenza.
Ku-Unreal Developer, ungasebenzisa i-GPU Visualizer noma usebenzise i-RenderDoc ukuze uhlaziye inkinga yokunikezela, futhi ulandele Izinkombandlela Zokusebenza Okungezona Zangempela ukuze uthole isiqondiso sokuthuthukisa uhlelo lwakho lokusebenza.
Okwesibili, ungaphinda uzame ukulungisa izici ezithile ze-Wave noma izilungiselelo ukuze unciphise ukulayishwa kwe-GPU.
- Setha Isilinganiso Sokuvuselela Isibonisi sibe kancane (isigaba 3.1.1, isigaba 4.1.1)
- Lungisa Ukulungiswa Kwe-eyebuffer (isigaba 3.1.2, isigaba 4.1.2), 14.1.1)
- Zama ukunika amandla i-Foveation (isigaba 3.1.4, isigaba 4.1.4).
Uma uhlelo lwakho lokusebenza luwuhlelo lokusebenza lwe-MR, ungakwazi futhi ukulungisa izilungiselelo ze-Passthrough.
- Lungisa Ikhwalithi Yesithombe Sokudlula ibe phansi. (isigaba 3.2.1)
- Lungisa i-Passthrough Framerate kancane. (isigaba 3.2.2).
Ukuze uthole ezinye izilungiselelo ezimayelana nokusebenza kwe-GPU, ungabheka kuSahluko 2.6.
2.4 CPU-boshiwe
Uma uhlelo lokusebenza lwe-VR luboshelwe yi-CPU, kusho ukuthi i-CPU iyibhodlela eliyinhloko, cabangela lezi zincomo ezilandelayo:
Okokuqala, sebenzisa amathuluzi okwenza iphrofayela njenge-Systrace noma i-Game Engine profiler (Unity Profiler, Ukuqonda Okungajwayelekile) ukuze uhlaziye futhi ubone ukuthi yiziphi izingxenye zekhodi yakho ezisebenzisa izinsiza ze-CPU eziningi. Gxila ekwandiseni lezi zindawo futhi wenze kabusha ama-algorithms anamandla ekhompiyutha ukuze unciphise umthwalo we-CPU.
- Kunjiniyela Womdabu, ungasebenzisa i-Systrace ukwenza i-profiler iphrojekthi yakho.
- Ku-Unity Developer, ungasebenzisa i-CPU Usage Profiler module ukuthola inkinga yokusebenza kwe-CPU.
- Ku-Unreal Developer, ungasebenzisa i-Unreal's Insights ukuze uthole inkinga yokusebenza kwe-CPU.
Okwesibili, ungaphinda uzame ukulungisa izici ezithile ze-Wave noma izilungiselelo ukuze unciphise ukulayishwa kwe-GPU.
- Setha Isilinganiso Sokuvuselela Isibonisi sibe kancane (isigaba 3.1.1, isigaba 4.1.1)
- Sebenzisa Okuningi-View Ukunikezwa (isigaba 3.1.4, isigaba 4.1.4)
Uma uhlelo lwakho lokusebenza luwuhlelo lokusebenza lwe-MR, ungakwazi futhi ukulungisa izilungiselelo ze-Passthrough.
- Lungisa i-Passthrough Framerate kancane (isigaba 3.2.2).
Ukuze uthole ezinye izilungiselelo ezimayelana nokusebenza kwe-CPU, ungabheka Isahluko 2.6.
2.5 Isifinyezo
Ekugcineni, sihlele ukuhlola ukusebenza okungenhla kuMfanekiso 2-5-1. Qala ngokubheka i-FPS yokuqukethwe. Uma iphansi kunesilinganiso sozimele esibonisiwe noma ihlala ingazinzile, bese uhlaziya ukusetshenziswa kwe-GPU/CPU ukuze unqume ukuthi ingabe iboshelwe yi-GPU noma i-CPUbound. Okokugcina, sebenzisa i-profiler ukuhlonza izinkinga zokusebenza okungenzeka noma ulungise izici ze-Wave noma izilungiselelo ukuze uthuthukise ukusebenza kwe-CPU.

2.6 Ireferensi Esheshayo Iziphi Izilungiselelo Ezingathuthukisa Ukulayisha kwe-CPU/GPU
Faka kuhlu izilungiselelo ze-SDK ezihlobene nokulayisha kwe-CPU/GPU njengezansi. Ungasekelwe ekuvimbeleni uhlelo lokusebenza ukuze uhlole izilungiselelo ezifanele zokuthuthukisa.
Okuhlobene ne-CPU:
- Isilungiselelo se-VIVE Wave SDK
o Okuqukethwe kwe-VR
▪ 3.1.1 Isilinganiso Sokuvuselela Isibonisi
▪ 3.1.4 Multi-View Iyanikezela
▪ 3.1.6 Ikhwalithi Eguquguqukayo
▪ 3.1.7 I-Adaptive Motion Compositor
o Okuqukethwe kwe-MR
▪ 3.2.2 Lungisa Izinga Lohlaka Lokudlula - I-VIVE OpenXR SDK Setting
o Okuqukethwe kwe-VR
▪ 4.1.1 Isilinganiso Sokuvuselela Isibonisi
▪ 4.1.4 Multi-View Iyanikezela - Ukuthuthukisa Okujwayelekile
o 5.5 CPU Spike
Okuhlobene ne-GPU:
- Isilungiselelo se-VIVE Wave SDK
o Okuqukethwe kwe-VR
▪ 3.1.1 Isilinganiso Sokuvuselela Isibonisi
▪ 3.1.2 Ukulungiswa kwe-Eyebuffer
▪ 3.1.3 Multi-View Iyanikezela
▪ 3.1.4 I-Foveation
▪ 3.1.5 I-Frame Sharpness Enhancement (FSE)
▪ 3.1.6 Ikhwalithi Eguquguqukayo
▪ 3.1.7 I-Adaptive Motion Compositor
▪ 3.1.8 Nikeza Imaski [Ayisekeli Okungekona okwangempela] o Okuqukethwe kwe-MR
▪ 3.2.1 Lungisa Ikhwalithi Yokudlula
▪ 3.2.2 Lungisa Izinga Lohlaka Lokudlula - I-VIVE OpenXR SDK Setting
o Okuqukethwe kwe-VR
▪ 4.1.1 Isilinganiso Sokuvuselela Isibonisi
▪ 4.1.2 Ukulungiswa kwe-Eyebuffer
▪ 4.1.3 Multi-View Iyanikezela
▪ 4.1.4 Foveation [Not Support Unreal] ▪ 4.1.5 Nikeza Imaski [Hhayi Ukusekela Okungangokoqobo] - Ukuthuthukisa Okujwayelekile
o 5.1 Vala Imodi Yokusebenza Okuphezulu
o 5.2 Amaningiampling
o 5.3 I-GMEM Umthwalo/Isitolo
o 5.4 Uhlaka Lokuqamba (Isendlalelo Eziningi)
I-VIVE Wave Setting
I-VIVE Wave iyinkundla evulekile kanye nesethi yamathuluzi ekuvumela ukuthi uthuthukise okuqukethwe kwe-VR kalula futhi ihlinzeka ngokusebenza okuphezulu kwedivayisi kozakwethu bezinkampani zangaphandle. I-VIVE Wave isekela Ubumbano kanye nezinjini zomdlalo ezingezona ezangempela.
Sithuthukisa ngokuqhubekayo futhi sixazulula iziphazamisi ezihlukahlukene, ngakho-ke sincome ukugcina i-SDK isesikhathini samanje.
Okwamanje, i-VIVE Wave isekela i-OpenGL ES kuphela. Lapha kufakwa kuhlu izici ezihlelwe ngomthelela ekusebenzeni kwe-GPU. Sizokwehlukanisa lokhu kube izingxenye ezimbili: okuqukethwe kwe-VR nokuqukethwe kwe-MR.
3.1 Okuqukethwe kwe-VR
3.1.1 Isilinganiso Sokuvuselela Isibonisi
Izilinganiso zokuvuselela eziphakeme zinikeza okubonakalayo okushelelayo, kodwa eza ngezindleko zomthwalo okhuphukile wesistimu. Ngokuphambene, izilinganiso zokuvuselela eziphansi zehlisa umthwalo wesistimu, kodwa ziphumela ekubukeni okubushelelezi okuncane. Uma uhlelo lokusebenza lunenkinga eboshelwe yi-CPU/GPU, ungazama ukwehlisa izinga lokuvuselela isibonisi ukuze udambise inkinga.
- Ngonjiniyela Womdabu, bheka ku-WVR_SetFrameRate.
- Ngonjiniyela we-Unity, bheka lo mhlahlandlela.
- Ngonjiniyela we-Unreal, bheka lo mhlahlandlela.
3.1.2 Isixazululo se-Eyebuffer
Ukulungiswa kwe-eyebuffer usayizi wokuthungwa lolo hlelo lokusebenza lokuqukethwe oluzonikezwa, ukuthungwa okuhlinzekwayo okuzohanjiswa ngesikhathi sokusebenza ukuze kwenziwe inqubo yokuthumela futhi kuvezwe kusibonisi se-HMD.
Nakuba usayizi webhafa wamehlo omkhulu ungaholela ekubukeni okucacile nokunemininingwane eyengeziwe, kodwa futhi ubeka umthwalo obalulekile ku-GPU. Ngakho-ke, ukuthola ibhalansi efanele phakathi kwekhwalithi ebonakalayo nokusebenza kubalulekile.
Uma uhlelo lokusebenza lunenkinga ye-GPU, ungazama ukwehlisa usayizi we-eyebuffer ngokuphindaphinda into yesikali. Nokho, sincoma ukuthi singanciphisi isici sesikali esingaphansi kuka-0.7, njengoba lokhu kungase kubangele ikhwalithi yokubukwayo engamukeleki.
- Ngonjiniyela Womdabu, bheka ku-WVR_ObtainTextureQueue. Lapho ulungisa usayizi, kufanele uphindaphinde ububanzi nobude ngesilinganiso.
- Ngonjiniyela we-Unity, bheka ku-WaveXRSSettings.
Kungenjalo, ungenza izinguquko ngekhodi njenge-belwoe.
XRSettings.eyeTextureResolutionScale = ResolutionScaleValue; // C# - Ngonjiniyela we-Unreal, bheka ku-SetPixelDensity.
3.1.3 Okuningi-View Iyanikezela
Ekunikezeni okuvamile, sidweba amehlo angakwesokunxele nakwesokudla ngokuhlukana, okudinga izingcingo ezimbili zokudonsa zesigcawu esifanayo. Okuningi-View Ukunikeza kubhekana nalolu daba ngokwenza ucingo olulodwa kuphela.
Lesi sici sehlisa umthwalo we-CPU ngokunciphisa inani lamakholi. I-GPU futhi inezinzuzo ezithile, umthwalo wokusebenza we-vertex shader nawo uncishisiwe njengoba ungadingi ukusebenzisa i-shader eyengeziwe kwelinye iso, kodwa umthwalo womsebenzi we-fragment shader uhlala ungashintshile ngoba usadinga ukuhlola iphikseli ngayinye kuwo womabili amehlo. Sincoma ukuthi uvule lesi sici.
- Kunjiniyela Womdabu, ungabheka ku-wvr_native_hellovar sample.
- Ngonjiniyela we-Unity, bheka i-Render Mode, i-single pass ine-multi-view isici.
- Ngonjiniyela we-Unreal, bheka lo mhlahlandlela.
3.1.4 I-Foveation
Ukunikezwa kwe-Foveated kuklanyelwe kakhulu ukunciphisa umthwalo we-GPU. Yehlisa imininingwane yozimele ku-peripheral yesibonisi futhi igcine imininingwane yokucaca okuphezulu maphakathi nenkambu ye view. Uma uhlelo lokusebenza lunenkinga ye-GPU, ungazama ukunika amandla ukunikezwa kwe-Foveation.

Kukhona okufanele ukuqaphele ngenkathi usebenzisa i-foveation:
➢ Abasebenzisi ngokuvamile abayiboni imininingwane encishisiwe ezindaweni ezizungezile zisebenzisa imodi yokuzenzakalelayo ye-foveation. Kodwa uma ikhwalithi ye-peripheral ye-foveation isethwe iphansi kakhulu, ingase ibonakale kumsebenzisi.
➢ Imithelela ye-foveation ingase ibonakale kakhulu ngezinto ezithile zendlela yokwenza, ezingaheha ukunaka komsebenzisi. Onjiniyela kufanele bakuqaphele lokhu futhi bakuhlole ngokufanele.
➢ Ukunika amandla isici sokunikezwayo esine-foveated kuletha izindleko ezigxilile zokusebenza kwe-GPU, ezingahluka phakathi kuka-1% kuya ku-6% kuye ngosayizi webhafa yamehlo. Uma usebenzisa i-shader elula endaweni yesehlakalo, inzuzo yokusebenza evela kuzinsiza zokulondoloza ingase ibe ngaphansi kunezindleko zokusebenza ze-GPU ezigxilile, okuholela ekwehleni kokusebenza.
- Ngonjiniyela womdabu, bheka lo mhlahlandlela.
- Ngonjiniyela we-Unity, bheka lo mhlahlandlela. Ngokuphawulekayo, uma unika amandla ukucutshungulwa kwangemuva noma i-HDR, i-foveation ayikwazi ukusetshenziswa ngokugcwele. Ngoba i-Unity izonikeza izinto kokuthungwa kwayo okukhiqiziwe, esikhundleni sokunikezwa kwesikhathi samanje kokuthungwa okusekela i-foveation.
- Ngonjiniyela we-Unreal, bheka lo mhlahlandlela. Ngokuphawulekayo, i-foveation ayikwazi ukusetshenziswa ngokugcwele ku-Multi-View Ukunikezwa, ngenxa yokuthi i-Unreal ayikwazi ukunikeza ngokuqondile izinto ku-runtime-generated rever texture esekela i-foveation.
3.1.5 Ukuthuthukisa Ukubukhali Kohlaka (FSE)
I-FSE ihlinzeka ngomphumela wokunikeza obukhali ngokwethula isihlungi esilolayo, ingenza okuqukethwe kucace kakhudlwana futhi kube usizo ekuthuthukiseni ukucaca kombhalo endaweni yesehlakalo. Uma uhlelo lokusebenza lunenkinga ye-GPU eboshiwe, ungacabanga ukukhubaza i-FSE uma ingabalulekile.

- Ngonjiniyela womdabu, bheka lo mhlahlandlela.
- Ngonjiniyela we-Unity, bheka lo mhlahlandlela.
- Ngonjiniyela we-Unreal, bheka lo mhlahlandlela.
3.1.6 Ikhwalithi Eguquguqukayo
Ukuze ulondoloze ibhethri futhi ulondoloze ukusebenza kokunikezela kwedivayisi, lesi sici silungisa ngokuzenzakalelayo amazinga okusebenza wewashi le-CPU/GPU ngokusekelwe ekusetshenzisweni kwawo. Ukwengeza, amanye amasu angasetshenziswa ukuze kuthuthukiswe ukusebenza, njengokunika amandla/ukukhubaza ngokuzenzakalela i-Foveation noma okuqukethwe kungazilungisa uma kuthola imicimbi yomthwalo ophezulu/ophansi.
- Ngonjiniyela womdabu, bheka lo mhlahlandlela.
- Ngonjiniyela we-Unity, bheka lo mhlahlandlela. Ku-plugin yethu ye-Unity, usayizi webhafa wamehlo ungalungiswa ngokuzenzakalelayo ngokusekelwe ekusebenzeni kwamanje; Usayizi wombhalo uzohlunga amanani esikali amancane kakhulu ohlwini Lokulungiswa. Sincoma umbhalo wosayizi okungenani ongu-20 dmm noma ngaphezulu.
- Ngonjiniyela we-Unreal, bheka lo mhlahlandlela.
3.1.7 I-Adaptive Motion Composite
Lesi sici isici sokuhlola esifaka i-UMC ne-PMC. I-UMC izonciphisa Isilinganiso Sozimele ngohhafu futhi ikhiphe uhlaka olusha ngesikhathi sangempela ukuze kugcinwe ukushelela kokubukwayo. Kodwa-ke, iza ne-latency ethile, ama-artifacts kanye nokulayisha kwe-GPU.
I-PMC ngokuyinhloko isebenzisa i-Depth Buffer ukuze ivumele i-ATW ukuthi iphendule ngokuhumusha kwe-HMD, inwebe isinxephezelo esingu-6-dof. Lesi sici singanciphisa ukubambezeleka kokuhumusha ngozimele abangu-1~2, kodwa sikhulise ukulayishwa kwe-GPU.
- Ngonjiniyela womdabu, bheka lo mhlahlandlela.
- Ngonjiniyela we-Unity, bheka lo mhlahlandlela.
- Ngonjiniyela we-Unreal, bheka lo mhlahlandlela.
3.1.8 Nikeza Imaski [Ayisekeli Okungangokoqobo]
Amaphikseli emaphethelweni acishe angabonakali ngemva kokuhlanekezelwa, imaski enikezayo ishintsha amanani ebhafa ajule alawa maphikseli angabonakali. Uma unika amandla ukuhlola ukujula, ngenxa yokuqala-z, lawa maphikseli angabonakali ngeke enziwe, ngaleyo ndlela kunciphisa umthwalo we-GPU. Lesi sici siwusizo uma kunezinto zokunikezela ezilayisha kakhulu kulezi zindawo ezingabonakali; uma kungenjalo, uma zingekho izinto ezinikezelayo kulezi zindawo, kunconyiwe ukuyikhubaza ngoba izosebenzisa ukusetshenziswa okuncane kwe-GPU.
- Ngonjiniyela womdabu, bheka lo mhlahlandlela. Kufanele ubophe isigcinalwazi esijulile ngaphambi kokushayela i-RenderMask; ngaphandle kwalokho, ngeke kuphumelele.
- Ngonjiniyela we-Unity, bheka lo mhlahlandlela.
- Kunjiniyela we-Unreal, okwamanje akasisekeli isici se-Render Mask.
3.2 MR Okuqukethwe
3.2.1 Lungisa Ikhwalithi Yokudlula
Kunamaleveli angu-3 ekhwalithi yesithombe sokudlula:
➢ I-WVR_PassthroughImageQuality_DefaultMode – ilungele okuqukethwe kwe-MR ngaphandle kwesidingo esithile.
➢ I-WVR_PassthroughImageQuality_PerformanceMode – ifanele okuqukethwe kwe-MR okudinga insiza ye-GPU eyengeziwe ukuze kunikezwe indawo ebonakalayo.
➢ I-WVR_PassthroughImageQuality_QualityMode – ifanele okuqukethwe kwe-MR okuvumela abasebenzisi ukuthi babone indawo ezungezile ngokucacile, kodwa indawo ebonakalayo yokuqukethwe kufanele ibe nokucushwa okuhle kakhulu kokusebenza.
Ungakwazi ukulungisa ikhwalithi ye-Passthrough ibe yi-PerformanceMode ukuze unciphise ukusetshenziswa kwe-GPU.
- NgoMdabu, Ubumbano noma umthuthukisi Wangempela, bheka lo mhlahlandlela.
3.2.2 Lungisa Izinga Lohlaka Lokudlula
Njengenani lokuvuselela i-Display, i-Passthrough framerate ephezulu inikezela ngokubukeka okushelelayo, kodwa iza ngezindleko zokukhuphuka komthwalo wesistimu. Ngokuphambene, izilinganiso zokuvuselela eziphansi zehlisa umthwalo wesistimu, kodwa ziphumela ekubukeni okubushelelezi okuncane. Kukhona izindlela ezi-2 zokudlula kozimele: I-Boost kanye Nejwayelekile.
- Kunjiniyela Womdabu, angalungisa ikhwalithi yokudlula esebenzisa i-WVR_SetPassthroughImageRate.
- Kunjiniyela we-Unity, angashintsha ngekhodi, isbampizilungiselelo zimi kanje // C#
Interop.WVR_SetPassthroughImageQuality(WVR_PassthroughImageQuality.PerformanceMode); - Ngonjiniyela Ongeyena owangempela, indlela yokusetha bona inodi yepulani kuMfanekiso 3-2-2.

Ukusetha kwe-VIVE OpenXR
I-OpenXR iyindinganiso evulekile ehlinzeka ngesethi evamile yama-API wokuthuthukisa izinhlelo zokusebenza ze-XR ezisebenza kumadivayisi ahlukahlukene e-VR, athuthukiswe yiQembu le-Khronos. I-VIVE Focus 3 ne-VIVE XR Elite iphinde isekele i-OpenXR, i-VIVE OpenXR SDK inikeza ukusekelwa okuphelele kwamadivayisi we-HTC VR, okuvumela abathuthukisi bakhe i-Allin-One nokuqukethwe nge-Unity ne-Unreal injini kumadivayisi we-HTC VR. Sithuthukisa ngokuqhubekayo futhi sixazulula iziphazamisi ezihlukahlukene, ngakho-ke kunconywa ukuthi onjiniyela babuyekeze inguqulo ye-FOTA yedivayisi yabo ukuze bayigcine inolwazi lwakamuva. Njengamanje, i-VIVE OpenXR SDK isekela i-OpenGL ES ne-Vulkan.
4.1 Okuqukethwe kwe-VR
4.1.1 Isilinganiso Sokuvuselela Isibonisi
Umqondo lapha ufana ne-3.1.1 Display Refresh Rate.
- Ngonjiniyela Womdabu, bheka ku-XrEventDataDisplayRefreshRateChangedFB.
- Ngonjiniyela we-Unity, bheka lo mhlahlandlela.
- Ngonjiniyela we-Unreal, bheka lo mhlahlandlela.
4.1.2 Isixazululo se-Eyebuffer
Umqondo lapha ufana ne-3.1.2 Eyebuffer Resolution. sincoma ukuthi singanciphisi isici sesikali esingaphansi kuka-0.7, njengoba lokhu kungase kuphumele kukhwalithi yokubukwayo engamukeleki.
- Ngonjiniyela womdabu, bheka ku-xrCreateSwapchain. Lapho ulungisa usayizi, kufanele uphindaphinde ububanzi nobude ngesilinganiso. ,
- Ngonjiniyela we-Unity, bheka isibonelo esilandelayoample // C#
I-XRSettings.eyeTextureResolutionScale = 0.7f; //kunconyiwe 1.0f~0.7f - Ngezilungiselelo ezingezona ezangempela, bheka lo mhlahlandlela.
4.1.3 Okuningi-View Iyanikezela
Umqondo lapha ufana nokuthi 3.1.3 Multi-View Iyanikezela. Lesi sici sinciphisa umthwalo ku-CPU, i-GPU nayo inezinzuzo ezithile. Sincoma ukuthi uvule lesi sici.
- Kunjiniyela Womdabu, i-KhronosGroup ihlinzeka nge-OpenXR Multi-View example, bheka lo mhlahlandlela.
- Ngonjiniyela we-Unity, bheka i-Render Mode, i-single pass ine-multi-view isici.
- Ngonjiniyela we-Unreal, njengakuzilungiselelo ze-VIVE Wave, bheka lo mhlahlandlela.
4.1.4 I-Foveation [Ayisekeli i-Unreal]
Umqondo lapha uyafana nothi 3.1.4 Foveation. Ukunikezwa kwe-Foveated ngokuyinhloko kuklanyelwe ukunciphisa umthwalo we-GPU kodwa ukuyivumela kuzoletha izindleko ezimisiwe zokusebenza kwe-GPU futhi uma i-foveation isethwe iphansi kakhulu futhi kusetshenziswa izinto ezithile noma ukwakheka, kungaba kakhulu.
kuyabonakala kumsebenzisi. Ngakho-ke, kuyatuseka ukunika amandla noma ukukhubaza isici ngokusekelwe kuzimfuneko zakho ezithile kanye nokucatshangelwa kokusebenza Okwamanje, ukusebenza kwe-Foveated kusekelwa kuphela ku-OpenGL ES ku-VIVE OpenXR SDK.
- Kunjiniyela Womdabu, lesi sici siyatholakala, kodwa okwamanje, asikho examples zinikeziwe.
- Ngonjiniyela we-Unity, bheka lo mhlahlandlela.
- Kunjiniyela we-Unreal, akasekeli lesi sici okwamanje.
4.1.5 Nikeza Imaski [Ayisekeli Okungangokoqobo]
Umqondo lapha ufana ne-3.1.8 Render Mask.
- Kunjiniyela Womdabu, sebenzisa i-XrVisibilityMaskKHR ukuze uthole i-Mesh. Ngaphambi kokunikeza isigameko, sebenzisa le Mesh ukuze ugcwalise amanani ebhafa yokujula ngaphambi kokunikeza isigameko.
- Kunjiniyela Wobumbano, isici se-Render Mask sinikwa amandla ngokuzenzakalela ku-OpenGL ES, futhi singakhutshazwa ngekhodi elandelayo; I-Vulkan okwamanje ayisekeli lesi sici. //C# UnityEngine.XR.XRSsettings.occlusionMaskScale = 0.0f;
- Kunjiniyela we-Unreal, okwamanje akasisekeli isici se-Render Mask.
4.2 MR Okuqukethwe
I-OpenXR okwamanje ayikusekeli ukusetha Ikhwalithi Yokudlula kanye Nezinga Lozimele. Sizoqhubeka nokuthuthukisa futhi silungisa isici se-Passthrough, ngakho-ke kunconywe ukuthi onjiniyela babuyekeze inguqulo ye-FOTA yedivayisi ukuze bayigcine yayazisa.
Ukuthuthukisa Okujwayelekile
5.1 Vala Imodi Yokusebenza Okuphezulu
Ukuvala “Imodi yokusebenza okuphezulu” kungehlisa usayizi wesibonisi wedivayisi, ngaleyo ndlela kwehlise ukusetshenziswa kwe-GPU. I-drawback ukwehla kokulungiswa kwesikrini. Ungakwazi ukulinganisa ikhwalithi nokusebenza ukuze unqume ukuthi uyayivumela yini.
Indawo yokubeka i-VIVE Focus 3 iboniswa Umfanekiso 5-1-1:

Indawo yokusetha ye-VIVE XR Elite iboniswa Umfanekiso 5-1-2:

5.2 AmaningiampI-Anti-Aliasing
IMultisampI-ling iyindlela yokulwa nokuthungatha esetshenziselwa ukushelela imiphetho ecijile, imvamisa isheshiswa ngehadiwe, okufaka izindleko zokusebenza kwe-GPU. Sincoma ukuthi ungasethi i-MSAA ngaphezulu kuka-2x ngoba inani eliphakeme kakhulu lizodla ukusetshenziswa kwe-gpu okwengeziwe.
- Konjiniyela bomdabu, i-MSAA OpenGL ES exsampngingabhekisela kulokhu; MSAA Vulkan exampler angabhekisa kulokhu.
I-Adreno GPU inikeza isandiso esithuthukisa i-MSAA. - Ngonjiniyela we-Unity, bheka le nhlangano.
- Ngonjiniyela we-Unreal, bheka le nhlangano. I-Unreal iphinde ibe nokuhlinzekwa kokucubungula kokuthunyelwe okulwa nokuqamba amanga, bheka le nhlangano.
5.3 Umthwalo/Isitolo se-GMEM
Esakhiweni se-Adreno GPU, kunesici lapho, uma ubophezela i-Render Target, uma i-Render Target ingacaci noma ingavumelekile, isikhathi ngasinye lapho ukunikezwa kwenzeka, amanani ku-Render Target alayishwa ku-Graphics Memory, ebizwa ngokuthi i-GMEM Load. Uma amanani wangaphambilini engadingeki, sula noma kungasebenzi ukunikezwa kwe-Render Target befaure, kungagwema lesi simo ukuze kuthuthukiswe ukusebenza kwe-GPU.
Ungagwema Umthwalo we-GMEM usebenzisa izindlela ezilandelayo. Ku-OpenGL ES, ngemva kokubophezela i-FBO, ungashayela i-glClear ne-glClearDepth ukuze usule Umbala, Ukujula, kanye nebhafa ye-Stencil, noma ushayele i-glInvalidateFramebuffer ukuze wenze i-Render Target ingasebenzi. Ku-Vulkan, imiyalelo eyengeziwe ayidingeki; ungasetha ngokucacile ukuthi uyakusula yini okunamathiselwe ngaphambi kokuthi usebenzise ku-VkAttachmentDescription.loadOp.
Ngokufanayo, ukugcinwa komphumela Wokunikela Kwethayela emuva ku-Main Memory kusuka ku-Graphics Memory kubizwa ngokuthi Isitolo se-GMEM; lokhu kusebenza kuyabiza futhi ku-GPU. Ukuze ugweme lokhu, sincoma ukuthi ubophe kuphela Okukhokhwayo Kwe-Render okudingekayo ukuze kuvinjwe imisebenzi yeSitolo engadingekile.
5.4 Uhlaka Lokuqamba(Isendlalelo Eziningi)
Ukwakheka okuboniswa kusetshenziswa I-Multi-Layer kunekhwalithi engcono yokubonwayo. Kodwa-ke, lesi sici sikhulisa kakhulu ukusebenza kwe-GPU ngenani lezendlalelo kanye nosayizi wezinto zokwakha. Sincoma ukuthi kungabi ngaphezu kwezendlalelo ezintathu.
- Konjiniyela bomdabu,
o I-VIVE Wave SDK isebenzisa i-WVR_SubmitFrameLayers ukuze idlulise idatha yesendlalelo ngasinye.
o I-VIVE OpenXR SDK ibeka idatha yesendlalelo ku-XrFrameEndInfo futhi iyithumele nge-xrEndFrame. - Okonjiniyela we-Unity,
o Izilungiselelo ze-VIVE Wave SDK, bhekisa kulo mhlahlandlela,
o Izilungiselelo ze-VIVE OpenXR, bheka lo mhlahlandlela. - Okonjiniyela okungelona iqiniso,
o Izilungiselelo ze-VIVE Wave SDK, bheka lo mhlahlandlela.
o Izilungiselelo ze-VIVE OpenXR, bheka lo mhlahlandlela.
5.5 CPU Spike
Uma ukulayishwa kwe-CPU kusinda kakhulu, okunye okungemuva kucubungula imicu ebaluleke kakhulu, kungase kuphazamise ukwenziwa komdabu. Ngeke siqinisekise ukuthi Isicelo Sokuqukethwe ngeke siphazanyiswe olunye uchungechunge.
Uma izinkinga ezinjalo ziphakama, ungazama ukwandisa ukubaluleka kochungechunge ukuze ubone ukuthi iyayixazulula yini inkinga. Kodwa uma ushintsha ukucushwa kwentambo ukuze ulungiselele amadivayisi, udinga ukuhlola ukuthi lokhu kunomthelela omubi yini.
- Ku-Unity Developer, bheka isici sokumisa uchungechunge lwe-Android. Uma usebenzisa i-VIVE Wave SDK, sinesici ku-WaveXRSSettings esikuvumela ukuthi ulungise okubalulekile, njengoba kukhonjisiwe kuMfanekiso 5-5-2. Inani elincane limelela ukubaluleka okuphezulu.

- Okungelona iqiniso ayikho indlela yokushintsha intambo yomdlalo, ukunikeza intambo nokuhamba phambili kwentambo ye-RHI ngokusebenzisa izilungiselelo zangaphandle ngaphandle uma ushintsha ikhodi yenjini.
Copyright © 2024 HTC Corporation. Wonke Amalungelo Agodliwe
Amadokhumenti / Izinsiza
![]() |
I-VIVE VR Rendering Performance [pdf] Umhlahlandlela Womsebenzisi Ukusebenza Kwe-VR Yokunikezela, Ukusebenza Kokunikezela, Ukusebenza |
