VIVE လိုဂိုVR Rendering Performance
Tunning နှင့် Optimization များ

နိဒါန်း

အရင်းအမြစ်-အကန့်အသတ်ရှိသော ဟာ့ဒ်ဝဲတွင် အကောင်းဆုံး VR အတွေ့အကြုံကို ရရှိခြင်းသည် ချောမွေ့ပြီး သက်တောင့်သက်သာရှိသော အသုံးပြုသူအတွေ့အကြုံကို ပေးအပ်ရန်အတွက် အဓိကသော့ချက်ဖြစ်သည်။ အကြောင်းအရာတင်ဆက်မှုဘောင်နှုန်းသည် စက်၏ပြန်လည်ဆန်းသစ်မှုနှုန်းအောက်တွင် ကျဆင်းသွားပါက သို့မဟုတ် မတည်မငြိမ်ဖြစ်ပါက၊ ၎င်းသည် ဖရိန်ညှပ်ခြင်းနှင့် ထစ်ခြင်း၊ လှုပ်ရှားမှုအဖျားရောဂါများ စသည်တို့ကို ဦးတည်သွားစေမည်ဖြစ်သည်။ နောက်ဆုံးတွင် သုံးစွဲသူအတွေ့အကြုံကို အပျက်သဘောဆောင်သည်။ ထို့ကြောင့်၊ နှစ်သက်ဖွယ်ကောင်းသော အတွေ့အကြုံကို ရရှိစေရန်အတွက် အကြောင်းအရာစွမ်းဆောင်ရည်ကို ပိုမိုကောင်းမွန်အောင်ပြုလုပ်ခြင်းသည် အလွန်အရေးကြီးပါသည်။
စွမ်းဆောင်ရည် ချိန်ညှိခြင်း မစတင်မီ၊ စွမ်းဆောင်ရည်မရှိသော ချိန်ညှိခြင်းကို ရှောင်ရှားရန် စွမ်းဆောင်ရည် ပိတ်ဆို့မှုများ မည်သည့်နေရာတွင် ရှိနေသည်ကို နားလည်ရန် အရေးကြီးပါသည်။ ဤစာရွက်စာတမ်းသည် ဆော့ဖ်ဝဲရေးသားသူများ၏ စွမ်းဆောင်ရည်ဆိုင်ရာ ပိတ်ဆို့မှုများကို ဖော်ထုတ်ရာတွင် ကူညီရန်နှင့် တင်ဆက်ခြင်းဆိုင်ရာ ပြဿနာများကို ဖြေရှင်းရန် ဖြေရှင်းချက်များအား ပေးဆောင်ရန် ဒီဇိုင်းရေးဆွဲထားသည်။
စာတမ်းကို အောက်ပါကဏ္ဍများအဖြစ် စုစည်းထားပါသည်။

  • အခန်း 2- Bottleneck ကို ခွဲခြားသတ်မှတ်ပါ – ဤအပိုင်းသည် ပိတ်ဆို့မှုများရှိသည့်နေရာကို ရှာဖွေဖော်ထုတ်ရာတွင် developer များအား ကူညီပေးပါသည်။
  • အခန်း 3 နှင့် 4- VIVE Wave နှင့် VIVE OpenXR ဆက်တင်များ – ဤကဏ္ဍများသည် VIVE Wave နှင့် OpenXR အက်ပ်များအတွက် CPU/GPU စွမ်းဆောင်ရည်အပေါ် သက်ရောက်မှုရှိနိုင်သည့် သီးခြားဆက်တင်များကို အကြမ်းဖျင်းဖော်ပြထားသည်။ တိုးတက်မှုရှိမရှိ ဆုံးဖြတ်ရန် ကြုံတွေ့ရသည့် စွမ်းဆောင်ရည် ပိတ်ဆို့မှုများ အပေါ် အခြေခံ၍ ဤအင်္ဂါရပ်များကို ဖွင့်ခြင်း သို့မဟုတ် ပိတ်ခြင်းတို့ကို ဆော့ဖ်ဝဲအင်ဂျင်နီယာများက စမ်းသပ်နိုင်သည်။
  • အခန်း 5- ဘုံပိုကောင်းအောင်ပြုလုပ်ခြင်း – ဤကဏ္ဍတွင် အများအားဖြင့် ပိုမိုကောင်းမွန်အောင်လုပ်ဆောင်ခြင်းအလေ့အကျင့်များနှင့် အတွေ့အကြုံအချို့ကို မျှဝေပါသည်။

Bottleneck ကိုဖော်ထုတ်ပါ။

HMD ရွေ့လျားနေချိန်၊ VR/MR အက်ပ်တွင် ဖရိန်တုန်လှုပ်ခြင်း သို့မဟုတ် အနက်ရောင်အစွန်းများ ရှိနေပါက၊ ၎င်းသည် ပုံမှန်အားဖြင့် စွမ်းဆောင်ရည်မကောင်းသောကြောင့် ဖြစ်တတ်သည်။ ပုံမှန်အားဖြင့်၊ တင်ဆက်မှုဆိုင်ရာ ပြဿနာများကို CPU-bound သို့မဟုတ် GPU-bound ဟူ၍ အမျိုးအစား နှစ်မျိုးခွဲခြားနိုင်သည်။ ထိရောက်မှု မရှိသော ချိန်ညှိခြင်းများကို ရှောင်ရှားရန် သင့်အက်ပ်အတွက် ချည်နှောင်ထားသည့် အမျိုးအစားများကို နားလည်ပါ။
ဤအခန်းတွင်၊ ကျွန်ုပ်တို့သည် သင့်အား မည်သည့်နေရာတွင် စွမ်းဆောင်ရည် ပြဿနာများ ရှိနေသည်ကို လျင်မြန်စွာ သိရှိနိုင်စေမည့် ရိုးရှင်းသော အဆင့်များကို ပေးထားပါသည်။

2.1 အကြောင်းအရာ Rendering FPS ကို စစ်ဆေးပါ။
ဦးစွာ၊ ကျွန်ုပ်တို့သည် တစ်စက္ကန့်လျှင် အကြောင်းအရာ con renders ဘောင်အရေအတွက်ဖြစ်သည့် အကြောင်းအရာ FPS ကို စစ်ဆေးခြင်းဖြင့် စတင်သည်။ ၎င်းကို display framerate အတိုင်း ထိန်းသိမ်းထားသင့်ပြီး တည်ငြိမ်အောင်ထားပါ။ မဟုတ်ပါက၊ ၎င်းသည် frame တုန်လှုပ်ခြင်းကိုဖြစ်စေနိုင်သည်။
သင့်အပလီကေးရှင်း SDK သည် VIVE WAVE SDK 6.0.0 သို့မဟုတ် နောက်ပိုင်းတွင် အသုံးပြုနေပါက FPS ကိုစစ်ဆေးရန် အောက်ပါ adb command ကိုသုံးနိုင်သည်။ 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 အောက်တွင်ရှိနေပါက၊ တင်ဆက်မှုစွမ်းဆောင်ရည်နှင့် အခြားပိုကောင်းအောင်လုပ်ဆောင်ရန် နောက်ဆုံးဗားရှင်းသို့ အဆင့်မြှင့်တင်ရန် အကြံပြုအပ်ပါသည်။
အကယ်၍ သင်၏ application SDK ကို VIVE OpenXR ဖြင့်တည်ဆောက်ပါ။ FPS ကိုစစ်ဆေးရန် အောက်ပါ adb command ကိုသုံးနိုင်သည်။
$adb Logcat -s RENDER_ATW
အောက်ပါမှတ်တမ်းဒေတာကို သင်တွေ့ရပါမည်။
RENDER_ATW- [FPS] texture အသစ်-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 ပစ္စုပ္ပန်” နှင့် “L ပစ္စုပ္ပန်” အောက်ပါနံပါတ်များသည် ပြသမှုဘောင်နှုန်းကို ကိုယ်စားပြုသည်။
တစ်ခါတစ်ရံတွင်၊ အကြောင်းအရာ FPS နှင့် display framerate သည် အနည်းငယ်ကွဲလွဲမှုရှိနိုင်သည်။
ဟောင်းအတွက်ampအထက်ဖော်ပြပါ ကိစ္စရပ်တွင် 89.8 FPS ကို 90 FPS အဖြစ် သတ်မှတ်နိုင်သည်။
အက်ပ်၏ အကြောင်းအရာ FPS သည် ပြသမှုဘောင်နှုန်းထက် တသမတ်တည်းနိမ့်နေပါက သို့မဟုတ် မတည်မငြိမ်ဖြစ်နေပါက၊ ၎င်းသည် တင်ဆက်မှုဆိုင်ရာ ပြဿနာကို ညွှန်ပြသည်။ ထို့ကြောင့်၊ နောက်တစ်ဆင့်မှာ CPU သို့မဟုတ် GPU မှ ပိတ်ဆို့မှုများ ဖြစ်ပေါ်လာခြင်းရှိမရှိ ခွဲခြားသတ်မှတ်ရန်ဖြစ်သည်။
2.2 CPU နှင့် GPU အသုံးပြုမှုကို စစ်ဆေးပါ။
သင့်အပလီကေးရှင်း SDK သည် VIVE WAVE SDK 6.0.0 သို့မဟုတ် နောက်ပိုင်းတွင် အသုံးပြုနေပါက FPS ကိုစစ်ဆေးရန် အောက်ပါ adb command ကိုသုံးနိုင်သည်။
$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
အထက်ဖော်ပြပါ မှတ်တမ်းရလဒ်တွင် သင်တွေ့မြင်ရသည့်အတိုင်း CPU အသုံးပြုမှုသည် 27% နှင့် GPU အသုံးပြုမှု 72% သည် သင်၏ Wave SDK ဗားရှင်း 6.0.0 အောက်ဖြစ်ပါက၊ တင်ဆက်မှုစွမ်းဆောင်ရည်နှင့် အခြားအရာများကို ပိုမိုကောင်းမွန်စေရန်အတွက် နောက်ဆုံးဗားရှင်းသို့ အဆင့်မြှင့်တင်ရန် အကြံပြုအပ်ပါသည်။
VIVE OpenXR အက်ပ်အတွက်၊ CPU နှင့် GPU အသုံးပြုမှုကို စစ်ဆေးရန် အောက်ပါ command ကို အသုံးပြုနိုင်သည်။
# linux/ubuntu တွင်
$ adb logcat | grep CPU_USAGE
# powershell တွင်
$ adb logcat | စာတန်း -Pattern CPU_USAGE ကို ရွေးပါ။
အောက်ပါမှတ်တမ်းကိုတွေ့ရပါမည်။
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%
FPS သည် မျက်နှာပြင်ဘောင်နှုန်းကို မထိန်းနိုင်ဘဲ GPU သုံးစွဲမှုမှာလည်း အလွန်မြင့်မားသည်ကို သတိပြုမိပါက၊ ပုံမှန်အားဖြင့် 85% ကျော်လွန်သွားပါက FPS ပိုမိုကောင်းမွန်လာစေရန် Eyebuffer Resolution (အပိုင်း 3.1.2၊ အပိုင်း 4.1.2) ကို ချိန်ညှိကြည့်ပါ။ ဒီလို ညှိပေးရင် ပိုကောင်းတာပေါ့။
စွမ်းဆောင်ရည်၊ ပြဿနာသည် GPU တွင်ပါ၀င်ပြီး ကျွန်ုပ်တို့၏ ပိုမိုကောင်းမွန်အောင် လုပ်ဆောင်မှုများကို အလေးထားကြောင်း ကျွန်ုပ်တို့ ကောက်ချက်ချနိုင်ပါသည်။
တစ်ဖက်တွင်၊ Eyebuffer Resolution ကို ချိန်ညှိခြင်းသည် သိသာထင်ရှားသော စွမ်းဆောင်ရည် တိုးတက်မှုကို မဖြစ်ပေါ်စေပါက၊ CPU တွင် ပိတ်ဆို့မှုများ ရှိလာနိုင်ပြီး CPU စွမ်းဆောင်ရည်ကို အကောင်းဆုံးဖြစ်အောင် အာရုံစိုက်သင့်သည်။
အပလီကေးရှင်းသည် CPU-bound နှင့် GPU-bound နှစ်ခုလုံးကို တပြိုင်နက်တည်း ချည်နှောင်ထားခြင်းလည်း ဖြစ်နိုင်သည်။ ထိုသို့သောအခြေအနေမျိုးတွင်၊ ဟန်ချက်ညီသောစွမ်းဆောင်ရည်မြှင့်တင်မှုများရရှိရန် CPU နှင့် GPU နှစ်ခုစလုံးတွင် ပိုမိုကောင်းမွန်အောင်ပြုလုပ်ရန် ကြိုးပမ်းအားထုတ်သင့်သည်။
2.3 GPU-ဘောင်
VR အက်ပ်သည် GPU နှင့် ချည်နှောင်ထားသည့်အခါ၊ GPU သည် အဓိက ပိတ်ဆို့မှုဖြစ်ပြီး ၎င်းသည် အပလီကေးရှင်း၏ တင်ဆက်မှုတောင်းဆိုချက်များကို အမီလိုက်နိုင်မည်မဟုတ်ပေ။ GPU-ချည်နှောင်ထားသော ပြဿနာများကို လျော့ပါးစေရန်၊ အောက်ပါအကြံပြုချက်များကို ထည့်သွင်းစဉ်းစားပါ-
ပထမဦးစွာ RenderDoc သို့မဟုတ် Game Engine pro ကဲ့သို့သော ပရိုဖိုင်းတူးလ်များကို အသုံးပြုပါ။filer (Unity Profiler၊ Unreal Insights) GPU သည် ၎င်း၏အချိန်အများစုကို အသုံးပြုနေသည့်နေရာကို ပိုင်းခြားစိတ်ဖြာရန်။ ကုန်ကျစရိတ်အများဆုံး လုပ်ဆောင်ချက်များကို ဖော်ထုတ်ပြီး ၎င်းတို့ကို အကောင်းဆုံးဖြစ်အောင် အာရုံစိုက်ပါ။
Native Developer အတွက်၊ သင်သည် GPU load အလွန်အကျွံ ခေါ်ဆိုမှုကို ဖြစ်စေသော ဆွဲငင်မှုအား ဖော်ထုတ်ရန် RenderDoc ကို အသုံးပြုနိုင်သည်။
Unity Developer အတွက်၊ သင်သည် Unity ဤစာရွက်စာတမ်းကို လိုက်နာနိုင်သည် သို့မဟုတ် တင်ဆက်ခြင်းဆိုင်ရာ စွမ်းဆောင်ရည်ပြဿနာကို ခွဲခြမ်းစိတ်ဖြာရန် RenderDoc ကို အသုံးပြုနိုင်ပြီး၊ သင့်အပလီကေးရှင်းကို ပိုကောင်းအောင်ပြုလုပ်ရန် လမ်းညွှန်ချက်အတွက် Unity ဂရပ်ဖစ် ပိုမိုကောင်းမွန်အောင်ပြုလုပ်ခြင်းစာရွက်စာတမ်းကို လိုက်နာပါ။
Unreal Developer အတွက်၊ သင်သည် GPU Visualizer ကိုသုံးနိုင်သည် သို့မဟုတ် RenderDoc ကို အသုံးပြု၍ တင်ဆက်မှုဆိုင်ရာ စွမ်းဆောင်ရည်ပြဿနာကို ခွဲခြမ်းစိတ်ဖြာကာ သင့်အပလီကေးရှင်းကို ပိုကောင်းအောင်ပြုလုပ်ရန် လမ်းညွှန်ချက်အတွက် Unreal Performance Guidelines ကို လိုက်နာပါ။
ဒုတိယ၊ သင်သည် GPU ဖွင့်ခြင်းကို လျှော့ချရန် အချို့သော Wave အင်္ဂါရပ်များ သို့မဟုတ် ဆက်တင်များကို ချိန်ညှိနိုင်သည်။

  1. Display Refresh Rate ကို ပိုနှေးအောင် သတ်မှတ်ပါ (အပိုင်း 3.1.1၊ အပိုင်း 4.1.1)
  2.  Eyebuffer Resolution ကို ချိန်ညှိပါ (အပိုင်း 3.1.2၊ အပိုင်း 4.1.2)၊ 14.1.1)
  3.  Foveation (အပိုင်း 3.1.4၊ အပိုင်း 4.1.4) ကိုဖွင့်ရန် ကြိုးစားပါ။

သင့်အက်ပ်သည် MR အက်ပ်တစ်ခုဖြစ်ပါက၊ Passthrough ဆက်တင်များကို သင်လည်း ချိန်ညှိနိုင်သည်။

  1. Passthrough Image Quality အောက်ကို ချိန်ညှိပါ။ (အပိုင်း ၃.၂.၁)
  2. နှေးကွေးသော Passthrough Framerate ကို ချိန်ညှိပါ။ (အပိုင်း ၃.၂.၂)။

GPU စွမ်းဆောင်ရည်အကြောင်း နောက်ထပ်ဆက်တင်များအတွက်၊ သင်သည် အခန်း 2.6 ကို ကိုးကားနိုင်သည်။

2.4 CPU-ဘောင်
VR အက်ပ်တစ်ခုသည် CPU နှင့်ချိတ်ဆက်ထားသည့်အခါ၊ CPU သည် အဓိကပြဿနာဖြစ်နေကြောင်း ဆိုလိုသည်၊ အောက်ပါအကြံပြုချက်များကို ထည့်သွင်းစဉ်းစားပါ-
ပထမဦးစွာ Systrace သို့မဟုတ် Game Engine pro ကဲ့သို့သော ပရိုဖိုင်းတူးလ်များကို အသုံးပြုပါ။filer (Unity Profiler၊ Unreal Insights) သင့်ကုဒ်၏ မည်သည့်အစိတ်အပိုင်းများသည် CPU ရင်းမြစ်များကို အများဆုံးစားသုံးနေကြောင်း ခွဲခြမ်းစိတ်ဖြာပြီး ခွဲခြားသတ်မှတ်ရန်။ CPU load ကို လျှော့ချရန် အဆိုပါ ဧရိယာများကို အကောင်းဆုံးဖြစ်အောင် အာရုံစိုက်ပြီး ကွန်ပြူတာ အကြိတ်အနယ် အယ်လဂိုရီသမ်များကို refactor ပြုလုပ်ပါ။

  • Native Developer အတွက် Systrace ကို လိုလားသူများ အသုံးပြုနိုင်ပါသည်။filer မင်းရဲ့ ပရောဂျက်။
  • Unity Developer အတွက်၊ သင်သည် CPU Usage Pro ကိုသုံးနိုင်သည်။fileCPU စွမ်းဆောင်ရည်ပြဿနာကိုရှာဖွေရန် r module ။
  • Unreal Developer အတွက်၊ CPU စွမ်းဆောင်ရည်ပြဿနာကိုရှာဖွေရန် Unreal ၏ Insights ကို အသုံးပြုနိုင်သည်။

ဒုတိယ၊ သင်သည် GPU ဖွင့်ခြင်းကို လျှော့ချရန် အချို့သော Wave အင်္ဂါရပ်များ သို့မဟုတ် ဆက်တင်များကို ချိန်ညှိနိုင်သည်။

  1. Display Refresh Rate ကို ပိုနှေးအောင် သတ်မှတ်ပါ (အပိုင်း 3.1.1၊ အပိုင်း 4.1.1)
  2.  Multi-သုံးပါView ပုံဖေါ်ခြင်း (အပိုင်း 3.1.4၊ အပိုင်း 4.1.4)

သင့်အက်ပ်သည် MR အက်ပ်တစ်ခုဖြစ်ပါက၊ Passthrough ဆက်တင်များကို သင်လည်း ချိန်ညှိနိုင်သည်။

  1. နှေးကွေးသော Passthrough Framerate ကို ချိန်ညှိပါ (အပိုင်း 3.2.2)။

CPU စွမ်းဆောင်ရည်အကြောင်း နောက်ထပ်ဆက်တင်များအတွက်၊ သင်သည် အခန်း 2.6 ကို ကိုးကားနိုင်သည်။

2.5 အကျဉ်းချုပ်
နောက်ဆုံးတွင်၊ ကျွန်ုပ်တို့သည် အထက်ဖော်ပြပါ စွမ်းဆောင်ရည်စစ်ဆေးခြင်းလုပ်ငန်းအသွားအလာကို ပုံ 2-5-1 တွင် စုစည်းထားပါသည်။ အကြောင်းအရာ၏ FPS ကိုစစ်ဆေးခြင်းဖြင့်စတင်ပါ။ ၎င်းသည် display framerate ထက်နိမ့်နေပါက သို့မဟုတ် မတည်မငြိမ်ဖြစ်နေပါက၊ GPU-bound သို့မဟုတ် CPUbound ဖြစ်မဖြစ် ဆုံးဖြတ်ရန် GPU/CPU အသုံးပြုမှုကို ပိုင်းခြားစိတ်ဖြာပါ။ နောက်ဆုံးအနေနဲ့ Pro ကိုသုံးပါ။filer ဖြစ်နိုင်ချေရှိသော စွမ်းဆောင်ရည်ပြဿနာများကို ဖော်ထုတ်ရန် သို့မဟုတ် CPU စွမ်းဆောင်ရည်ကို ပိုကောင်းအောင်လုပ်ဆောင်ရန် Wave အင်္ဂါရပ်များ သို့မဟုတ် ဆက်တင်များကို ချိန်ညှိပါ။

VIVE VR Rendering Performance - ပုံ ၁

2.6 CPU/GPU တင်ခြင်းကို ပိုမိုကောင်းမွန်စေမည့် မည်သည့်ဆက်တင်များ အမြန်ကိုးကား

CPU/GPU loading နှင့် သက်ဆိုင်သော SDK ၏ ဆက်တင်များကို အောက်တွင် ဖော်ပြပါ။ သက်ဆိုင်ရာ ပိုမိုကောင်းမွန်အောင်ပြုလုပ်ခြင်း ဆက်တင်များကို စစ်ဆေးရန် အက်ပ်၏ ပိတ်ဆို့မှုအပေါ် အခြေခံနိုင်သည်။

CPU နှင့်သက်ဆိုင်သည်-

  • VIVE Wave SDK ဆက်တင်
    o VR အကြောင်းအရာ
    ▪ 3.1.1 Display Refresh Rate
    ▪ 3.1.4 Multi-View ပုံဖေါ်ခြင်း။
    ▪ 3.1.6 အလိုက်သင့် လိုက်လျောညီထွေရှိသော အရည်အသွေး
    ▪ 3.1.7 Adaptive Motion Compositor
    o MR အကြောင်းအရာ
    ▪ 3.2.2 Passthrough Frame Rate ကို ချိန်ညှိပါ။
  • VIVE OpenXR SDK ဆက်တင်
    o VR အကြောင်းအရာ
    ▪ 4.1.1 Display Refresh Rate
    ▪ 4.1.4 Multi-View ပုံဖေါ်ခြင်း။
  • အသုံးများသော Optimization
    o 5.5 CPU Spike

GPU နှင့်သက်ဆိုင်သည်-

  • VIVE Wave SDK ဆက်တင်
    o VR အကြောင်းအရာ
    ▪ 3.1.1 Display Refresh Rate
    ▪ 3.1.2 Eyebuffer Resolution
    ▪ 3.1.3 Multi-View ပုံဖေါ်ခြင်း။
    ▪ ၃.၁.၄ Foveation
    ▪ 3.1.5 ဘောင် ပြတ်သားမှု မြှင့်တင်မှု (FSE)
    ▪ 3.1.6 အလိုက်သင့် လိုက်လျောညီထွေရှိသော အရည်အသွေး
    ▪ 3.1.7 Adaptive Motion Compositor
    ▪ 3.1.8 Render Mask [Not Support Unreal] o MR အကြောင်းအရာ
    ▪ 3.2.1 Passthrough အရည်အသွေးကို ချိန်ညှိပါ။
    ▪ 3.2.2 Passthrough Frame Rate ကို ချိန်ညှိပါ။
  • VIVE OpenXR SDK ဆက်တင်
    o VR အကြောင်းအရာ
    ▪ 4.1.1 Display Refresh Rate
    ▪ 4.1.2 Eyebuffer Resolution
    ▪ 4.1.3 Multi-View ပုံဖေါ်ခြင်း။
    ▪ 4.1.4 Foveation [Not Support Unreal] ▪ 4.1.5 Render Mask [Not Support Unreal]
  • အသုံးများသော Optimization
    o 5.1 စွမ်းဆောင်ရည်မြင့်မုဒ်ကို ပိတ်ပါ။
    o 5.2 အမြောက်များampလင်း
    o 5.3 GMEM Load/စတိုး
    o 5.4 ပေါင်းစပ်အလွှာ (Multi Layer)

VIVE Wave ဆက်တင်

VIVE Wave သည် သင့်အား VR အကြောင်းအရာကို အလွယ်တကူ ဖန်တီးနိုင်စေပြီး ပြင်ပအဖွဲ့အစည်းပါတနာများအတွက် စွမ်းဆောင်ရည်မြင့် စက်ကို ပိုမိုကောင်းမွန်အောင် ပံ့ပိုးပေးသည့် အဖွင့်ပလပ်ဖောင်းနှင့် တူးလ်အစုံဖြစ်သည်။ VIVE Wave သည် Unity နှင့် Unreal ဂိမ်းအင်ဂျင်များကို ထောက်ပံ့ပေးသည်။
ကျွန်ုပ်တို့သည် အမျိုးမျိုးသော ချွတ်ယွင်းချက်များကို စဉ်ဆက်မပြတ် အကောင်းဆုံးပြင်ဆင်ပြီး ဖြေရှင်းပေးသောကြောင့် SDK ကို ခေတ်မီနေစေရန် အကြံပြုထားပါသည်။
လက်ရှိတွင် VIVE Wave သည် OpenGL ES ကိုသာ ပံ့ပိုးပေးသည်။ ဤတွင် GPU စွမ်းဆောင်ရည်အပေါ် လွှမ်းမိုးမှုမှ စီထားသော အင်္ဂါရပ်များကို စာရင်းပြုစုထားသည်။ ၎င်းကို VR အကြောင်းအရာနှင့် MR အကြောင်းအရာဟူ၍ နှစ်ပိုင်းခွဲပါမည်။
3.1 VR အကြောင်းအရာ
3.1.1 Display Refresh Rate

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 developer အတွက် WVR_SetFrameRate ကို ကိုးကားပါ။
  • Unity developer အတွက်၊ ဤလမ်းညွှန်ချက်ကို ကိုးကားပါ။
  • Unreal developer အတွက်၊ ဤလမ်းညွှန်ချက်ကို ကိုးကားပါ။

3.1.2 Eyebuffer Resolution
Eyebuffer resoultion သည် အက်ပ်ကို ပြန်ဆိုရမည့် အကြောင်းအရာ၊ ပြန်ဆိုထားသော texture သည် ပို့စ်တင်ခြင်းလုပ်ငန်းစဉ်လုပ်ဆောင်ရန်နှင့် HMD မျက်နှာပြင်ပေါ်တွင် တင်ပြရန်အတွက် runtime သို့ ပေးပို့မည့် အကြောင်းအရာအရွယ်အစားဖြစ်သည်။
ပိုကြီးသော eye buffer အရွယ်အစားသည် ပိုမိုရှင်းလင်းပြီး ပိုမိုအသေးစိတ်သော ရုပ်ပုံများကို ဖြစ်ပေါ်စေနိုင်သော်လည်း ၎င်းသည် GPU တွင် သိသာထင်ရှားသောဝန်ကို သက်ရောက်စေသည်။ ထို့ကြောင့် အမြင်အရည်အသွေးနှင့် စွမ်းဆောင်ရည်အကြား မှန်ကန်သော ချိန်ခွင်လျှာကို ရှာဖွေရန် အရေးကြီးပါသည်။
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 developer အတွက် WVR_ObtainTextureQueue ကို ကိုးကားပါ။ အရွယ်အစားကို ချိန်ညှိသည့်အခါ၊ အကျယ်နှင့် အမြင့်ကို အချိုးတစ်ခုဖြင့် မြှောက်သင့်သည်။
  • Unity developer အတွက် WaveXRSettings ကို ကိုးကားပါ။
    တနည်းအားဖြင့် သင်သည် belwoe အဖြစ် ကုဒ်မှတစ်ဆင့် ပြောင်းလဲမှုများ ပြုလုပ်နိုင်သည်။
    XRSettings.eyeTextureResolutionScale = ResolutionScaleValue; // C#
  • Unreal developer အတွက် SetPixelDensity ကို ကိုးကားပါ။

3.1.3 Multi-View ပုံဖေါ်ခြင်း။
သမားရိုးကျ ပုံဖေါ်ခြင်းတွင်၊ ကျွန်ုပ်တို့သည် တူညီသောမြင်ကွင်းတစ်ခုအတွက် ဆွဲခြင်းနှစ်ခုလိုအပ်သော ဘယ်နှင့်ညာကို သီးခြားစီဆွဲပါသည်။ Multi-View Rendering သည် တစ်ကြိမ်သာ ဆွဲခေါ်ခြင်းဖြင့် ဤပြဿနာကို ဖြေရှင်းသည်။
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 developer အတွက်၊ သင်သည် wvr_native_hellovr s ကို ကိုးကားနိုင်သည်။ampလဲ့
  • Unity developer အတွက် Render Mode ကို ကိုးကားပါ၊ single pass သည် multi-view ထူးခြားချက်။
  • Unreal developer အတွက်၊ ဤလမ်းညွှန်ချက်ကို ကိုးကားပါ။

3.1.4 Foveation
Foveated rendering သည် GPU ဝန်ကို လျှော့ချရန် အဓိက ဒီဇိုင်းထုတ်ထားသည်။ ၎င်းသည် display ၏အစွန်အဖျားရှိ frame detail ကိုလျှော့ချပေးပြီး နယ်ပယ်၏အလယ်ဗဟိုတွင် မြင့်မားသော resolution အသေးစိတ်ကိုထိန်းသိမ်းထားသည်။ view. အပလီကေးရှင်းတွင် GPU ဘောင်ပြဿနာရှိနေပါက၊ သင်သည် Foveation rendering ကို eanbling လုပ်ကြည့်ပါ။

VIVE VR Rendering Performance - ပုံ ၁

Foveation ကိုအသုံးပြုရာတွင် သတိထားရမည့်အချက်များရှိပါသည်။

➢ ပုံမှန်အားဖြင့် အသုံးပြုသူများသည် ပုံသေ foveation မုဒ်ကို အသုံးပြုသည့် အရံဧရိယာများတွင် လျှော့ချထားသော အသေးစိတ်အချက်အလတ်များကို သတိမထားမိကြပါ။ သို့သော် foveation ၏အရံအရည်အသွေးသည် အလွန်နိမ့်ပါက၊ ၎င်းသည် အသုံးပြုသူအတွက် သိသာထင်ရှားလာနိုင်သည်။
➢ အသုံးပြုသူ၏အာရုံကို ဖမ်းစားနိုင်သော အသွင်အပြင်ရှိ ပစ္စည်းအချို့နှင့်အတူ foveation ၏အကျိုးသက်ရောက်မှုများကို ပိုမိုသိသာစေပါသည်။ Developer များသည် ယင်းကို သတိထား၍ လျော်ညီစွာ အကဲဖြတ်သင့်သည်။
➢ foveated rendering feature ကိုဖွင့်ခြင်းသည် မျက်လုံးကြားခံအရွယ်အစားပေါ် မူတည်၍ 1% မှ 6% ကြား ကွဲပြားနိုင်သည့် ပုံသေ GPU စွမ်းဆောင်ရည်ကျသင့်ပါသည်။ အခင်းအကျင်းရှိ ရိုးရှင်းသောအရိပ်အာဝါသကိုအသုံးပြုသောအခါ၊ အရင်းအမြစ်များချွေတာခြင်းမှ စွမ်းဆောင်ရည်ရရှိမှုသည် ပုံသေ GPU စွမ်းဆောင်ရည်ကုန်ကျစရိတ်ထက် လျော့နည်းနိုင်ပြီး စွမ်းဆောင်ရည်ကျဆင်းသွားနိုင်သည်။

  • Native developer အတွက်၊ ဤလမ်းညွှန်ချက်ကို ကိုးကားပါ။
  • Unity developer အတွက်၊ ဤလမ်းညွှန်ချက်ကို ကိုးကားပါ။ ထူးခြားသည်မှာ၊ သင်လုပ်ဆောင်ပြီးနောက်လုပ်ဆောင်ခြင်း သို့မဟုတ် HDR ကိုဖွင့်သောအခါ၊ foveation ကိုအပြည့်အဝအသုံးမပြုနိုင်ပါ။ အကြောင်းမှာ Unity သည် foveation ကို ပံ့ပိုးပေးသည့် runtime-generated present ၏ render texture ထက် ၎င်း၏ကိုယ်ပိုင်ထုတ်လုပ်ထားသော render texture တွင် အရာဝတ္ထုများကို render လုပ်မည်ဖြစ်သည်။
  • Unreal developer အတွက်၊ ဤလမ်းညွှန်ချက်ကို ကိုးကားပါ။ ထူးခြားသည်မှာ ဘက်စုံသုံးတွင် foveation ကို အပြည့်အဝအသုံးမချနိုင်ပါ။View တင်ဆက်ခြင်း၊ Unreal သည် foveation ကို ပံ့ပိုးပေးသည့် runtime-generated render texture တွင် အရာဝတ္ထုများကို တိုက်ရိုက်မတင်ဆက်နိုင်သောကြောင့်ဖြစ်သည်။

3.1.5 ဘောင် ပြတ်သားမှု မြှင့်တင်ခြင်း (FSE)
FSE သည် sharpen filter ကိုမိတ်ဆက်ခြင်းဖြင့် ထက်မြက်သော rendering ရလဒ်ကို ပံ့ပိုးပေးသည်၊ ၎င်းသည် အကြောင်းအရာကို ပိုမိုရှင်းလင်းစေပြီး အခင်းအကျင်းရှိ စာသား၏ရှင်းလင်းမှုကို ပိုမိုကောင်းမွန်လာစေရန်အတွက် များစွာအထောက်အကူဖြစ်စေပါသည်။ အကယ်၍ အပလီကေးရှင်းတွင် GPU ဘောင်ပြဿနာရှိနေပါက၊ ၎င်းသည် မရှိမဖြစ်လိုအပ်ပါက FSE ကို ပိတ်ရန် သင်စဉ်းစားနိုင်သည်။

VIVE VR Rendering Performance - ပုံ ၁

  • Native developer အတွက်၊ ဤလမ်းညွှန်ချက်ကို ကိုးကားပါ။
  • Unity developer အတွက်၊ ဤလမ်းညွှန်ချက်ကို ကိုးကားပါ။
  • Unreal developer အတွက်၊ ဤလမ်းညွှန်ချက်ကို ကိုးကားပါ။

3.1.6 လိုက်လျောညီထွေရှိသော အရည်အသွေး
ဘက်ထရီကို ချွေတာပြီး စက်ပစ္စည်း၏ တင်ဆက်မှုစွမ်းဆောင်ရည်ကို ထိန်းသိမ်းရန်၊ ဤလုပ်ဆောင်ချက်သည် ၎င်းတို့၏အသုံးပြုမှုအပေါ်အခြေခံ၍ CPU/GPU နာရီများ၏ စွမ်းဆောင်ရည်အဆင့်များကို အလိုအလျောက်ချိန်ညှိပေးပါသည်။ ထို့အပြင်၊ Foveation အလိုအလျောက်ဖွင့်/ပိတ်ခြင်းကဲ့သို့သော စွမ်းဆောင်ရည်မြှင့်တင်ရန် အခြားနည်းဗျူဟာများကို အကောင်အထည်ဖော်နိုင်သည် သို့မဟုတ် အကြောင်းအရာသည် မြင့်မား/နိမ့်သော ဖြစ်ရပ်များကို လက်ခံရရှိပါက ၎င်းကိုယ်တိုင် ချိန်ညှိနိုင်သည်။

  • Native developer အတွက်၊ ဤလမ်းညွှန်ချက်ကို ကိုးကားပါ။
  • Unity developer အတွက်၊ ဤလမ်းညွှန်ချက်ကို ကိုးကားပါ။ ကျွန်ုပ်တို့၏ Unity ပလပ်အင်တွင်၊ လက်ရှိစွမ်းဆောင်ရည်အပေါ်အခြေခံ၍ မျက်လုံးကြားခံအရွယ်အစားကို အလိုအလျောက်ချိန်ညှိနိုင်သည်။ စာသားအရွယ်အစားသည် Resolution စာရင်းတွင် အလွန်သေးငယ်သော စကေးတန်ဖိုးများကို စစ်ထုတ်ပါမည်။ အနည်းဆုံး 20 dmm သို့မဟုတ် ပိုကြီးသော စာသားအရွယ်အစားကို ကျွန်ုပ်တို့ အကြံပြုပါသည်။
  • Unreal developer အတွက်၊ ဤလမ်းညွှန်ချက်ကို ကိုးကားပါ။

3.1.7 Adaptive Motion Compositor
ဤအင်္ဂါရပ်သည် UMC နှင့် PMC ပါဝင်သော စမ်းသပ်လုပ်ဆောင်ချက်ဖြစ်သည်။ UMC သည် Frame Rate ကို ထက်ဝက်လျှော့ချပြီး အမြင်ကြည်လင်ပြတ်သားမှုကို ထိန်းထားရန် အချိန်နှင့်တပြေးညီ ဖရိန်အသစ်ကို ပေါင်းထည့်ပါမည်။ သို့သော်၊ ၎င်းသည် latency၊ artifacts နှင့် GPU loading အချို့ပါရှိသည်။
PMC သည် ATW ကို HMD ဘာသာပြန်ဆိုမှုအတွက် ထည့်သွင်းခွင့်ပြုရန်၊ 6-dof လျော်ကြေးငွေအထိ တိုးချဲ့ခွင့်ပြုရန် PMC သည် အဓိကအားဖြင့် Depth Buffer ကို အသုံးပြုသည်။ ဤအင်္ဂါရပ်သည် ဘာသာပြန်နေချိန်ကို 1~2 ဖရိမ်များဖြင့် လျှော့ချနိုင်သော်လည်း GPU တင်မှုကို တိုးစေသည်။

  • Native developer အတွက်၊ ဤလမ်းညွှန်ချက်ကို ကိုးကားပါ။
  • Unity developer အတွက်၊ ဤလမ်းညွှန်ချက်ကို ကိုးကားပါ။
  • Unreal developer အတွက်၊ ဤလမ်းညွှန်ချက်ကို ကိုးကားပါ။

3.1.8 Render Mask [အစစ်အမှန်ကို မပံ့ပိုးပါ]
အစွန်းများရှိ ပစ်ဆယ်များသည် ပုံပျက်ပြီးနောက် မမြင်နိုင်လုနီးပါးဖြစ်လာသည်၊၊ တင်ဆက်မှုမျက်နှာဖုံးသည် ဤမမြင်နိုင်သောပစ်ဇယ်များ၏ အတိမ်အနက်ကြားခံတန်ဖိုးများကို ပြင်ဆင်ပေးသည်။ အတိမ်အနက်စမ်းသပ်ခြင်းကို သင်ဖွင့်ပါက၊ အစောပိုင်း-z ကြောင့်၊ ဤမမြင်နိုင်သော pixels များကို ပြန်ဆိုမည်မဟုတ်ပါ၊ ထို့ကြောင့် GPU ဝန်ကို လျှော့ချနိုင်သည်။ ဤမမြင်နိုင်သောနေရာများတွင် လေးလံသောပုံဖေါ်သည့်အရာများရှိနေပါက ဤအင်္ဂါရပ်သည် အသုံးဝင်ပါသည်။ သို့မဟုတ်ပါက၊ ဤနေရာများတွင် rendering objects များမရှိပါက၊ GPU အသုံးပြုမှု အနည်းငယ်ကို သုံးစွဲမည်ဖြစ်သောကြောင့် ၎င်းကို disable လုပ်ရန် အကြံပြုထားသည်။

  • Native developer အတွက်၊ ဤလမ်းညွှန်ချက်ကို ကိုးကားပါ။ RenderMask ကိုမခေါ်ဆိုမီ သင်သည် အတိမ်အနက်ကြားခံကို ချိတ်ထားရပါမည်။ မဟုတ်ရင် မထိရောက်ဘူး။
  • Unity developer အတွက်၊ ဤလမ်းညွှန်ချက်ကို ကိုးကားပါ။
  • Unreal developer အတွက်၊ လောလောဆယ် Render Mask လုပ်ဆောင်ချက်ကို ပံ့ပိုးမထားပါ။

3.2 MR အကြောင်းအရာ
3.2.1 Passthrough အရည်အသွေးကို ချိန်ညှိပါ။
ဖြတ်ကျော်ပုံအရည်အသွေးအတွက် အဆင့် 3 ဆင့်ရှိသည်။
➢ WVR_PassthroughImageQuality_DefaultMode - သီးခြားတောင်းဆိုမှုမရှိဘဲ MR အကြောင်းအရာအတွက် သင့်လျော်သည်။
➢ WVR_PassthroughImageQuality_PerformanceMode – virtual scene rendering အတွက် GPU အရင်းအမြစ်ပိုလိုအပ်သော MR အကြောင်းအရာအတွက် သင့်လျော်သည်။
➢ WVR_PassthroughImageQuality_QualityMode - သုံးစွဲသူများသည် ပတ်ဝန်းကျင်ပတ်ဝန်းကျင်ကို ရှင်းရှင်းလင်းလင်းမြင်နိုင်စေသည့် MR အကြောင်းအရာအတွက် သင့်လျော်သော်လည်း အကြောင်းအရာ၏ virtual scene သည် စွမ်းဆောင်ရည်အတွက် ချိန်ညှိမှုပိုကောင်းရပါမည်။
GPU အသုံးပြုမှုကို လျှော့ချရန် Passthrough အရည်အသွေးကို PerformanceMode သို့ ချိန်ညှိနိုင်သည်။

  • Native၊ Uunity သို့မဟုတ် Unreal developer အတွက်၊ ဤလမ်းညွှန်ချက်ကို ကိုးကားပါ။

3.2.2 Passthrough Frame Rate ကို ချိန်ညှိပါ။
Display refresh rate ကဲ့သို့ပင်၊ မြင့်မားသော Passthrough framerate သည် ပိုမိုချောမွေ့သော ရုပ်ထွက်များကို ပေးစွမ်းနိုင်သော်လည်း တိုးမြှင့်ထားသော system load ၏ ကုန်ကျစရိတ်ဖြင့် လာပါသည်။ အပြန်အလှန်အားဖြင့်၊ သက်သာသော refresh rates များသည် system load ကို လျော့နည်းစေသော်လည်း ချောမွေ့သော ပုံရိပ်များကို ရရှိစေပါသည်။ passthrough framerate ၏ mode 2 ခုရှိသည် - Boost နှင့် Normal ။

  • Native developer အတွက် WVR_SetPassthroughImageRate ကို အသုံးပြု၍ passthrough အရည်အသွေးကို ချိန်ညှိနိုင်သည်။
  • Unity developer အတွက်၊ ကုဒ်၊ ဥပမာအားဖြင့် ပြောင်းလဲနိုင်သည်။ampဆက်တင်များမှာ အောက်ပါအတိုင်း // C#
    Interop.WVR_SetPassthroughImageQuality(WVR_PassthroughImageQuality.PerformanceMode);
  • Unreal developer အတွက်၊ ဆက်တင်နည်းလမ်းကို ပုံ 3-2-2 တွင် အသေးစိတ်ဖော်ပြချက်ကို ကြည့်ပါ။

VIVE VR Rendering Performance - ပုံ ၁

VIVE OpenXR ဆက်တင်

OpenXR သည် Khronos Group မှ ဖန်တီးထားသည့် ကျယ်ပြန့်သော VR စက်များတစ်လျှောက်တွင် အသုံးပြုနိုင်သည့် XR အပလီကေးရှင်းများကို တီထွင်ရန်အတွက် ဘုံ API များကို ပံ့ပိုးပေးသည့် ပွင့်လင်းစံနှုန်းဖြစ်သည်။ VIVE Focus 3 နှင့် VIVE XR Elite သည် OpenXR ကိုလည်း ပံ့ပိုးပေးသည်၊ VIVE OpenXR SDK သည် HTC VR စက်ပစ္စည်းများအတွက် ပြည့်စုံသောပံ့ပိုးမှုပေးကာ Developer များအား Allin-One နှင့် HTC VR စက်ပစ္စည်းများတွင် Unity နှင့် Unreal အင်ဂျင်ပါ၀င်သည့်အကြောင်းအရာများကို ဖန်တီးခွင့်ပြုသည်။ ကျွန်ုပ်တို့သည် အမျိုးမျိုးသော ချွတ်ယွင်းချက်များကို စဉ်ဆက်မပြတ် အကောင်းဆုံးပြင်ဆင်ပြီး ဖြေရှင်းပေးသောကြောင့် ဆော့ဖ်ဝဲအင်ဂျင်နီယာများသည် ၎င်းတို့၏စက်ပစ္စည်း၏ FOTA ဗားရှင်းကို အပ်ဒိတ်လုပ်ရန် အကြံပြုထားသည်။ လက်ရှိတွင် VIVE OpenXR SDK သည် OpenGL ES နှင့် Vulkan ကို ပံ့ပိုးပေးသည်။

4.1 VR အကြောင်းအရာ
4.1.1 Display Refresh Rate
ဤနေရာတွင် အယူအဆသည် 3.1.1 Display Refresh Rate နှင့် ဆင်တူသည်။

  • Native developer အတွက်၊ XrEventDataDisplayRefreshRateChangedFB ကို ကိုးကားပါ။
  • Unity developer အတွက်၊ ဤလမ်းညွှန်ချက်ကို ကိုးကားပါ။
  • Unreal developer အတွက်၊ ဤလမ်းညွှန်ချက်ကို ကိုးကားပါ။

4.1.2 Eyebuffer Resolution
ဤနေရာတွင် အယူအဆသည် 3.1.2 Eyebuffer Resolution နှင့် ဆင်တူသည်။ 0.7 အောက်ရှိ စကေးအချက်ကို မလျှော့ပါနှင့်၊ ၎င်းသည် လက်ခံနိုင်ဖွယ်မရှိသော အမြင်အရည်အသွေးကို ဖြစ်ပေါ်စေနိုင်သောကြောင့် ကျွန်ုပ်တို့ အကြံပြုပါသည်။

  • Native developer အတွက် xrCreateSwapchain ကို ကိုးကားပါ။ အရွယ်အစားကို ချိန်ညှိသည့်အခါ၊ အကျယ်နှင့် အမြင့်ကို အချိုးတစ်ခုဖြင့် မြှောက်သင့်သည်။ ၊
  • Unity developer အတွက်၊ အောက်ပါ ex ကို ကိုးကားပါ။ample // C#
    XRSettings.eyeTextureResolutionScale = 0.7f; // 1.0f~0.7f အကြံပြုထားသည်။
  • Unreal ဆက်တင်များအတွက်၊ ဤလမ်းညွှန်ချက်ကို ကိုးကားပါ။

4.1.3 Multi-View ပုံဖေါ်ခြင်း။
ဤနေရာတွင် အယူအဆသည် 3.1.3 Multi- နှင့် ဆင်တူသည်။View ပုံဖေါ်ခြင်း။ ဤအင်္ဂါရပ်သည် CPU ပေါ်တွင်ဝန်ကိုလျှော့ချပေးသည်၊ GPU သည်လည်းအချို့သောအကျိုးကျေးဇူးများရှိသည်။ ဤအင်္ဂါရပ်ကို ဖွင့်ရန် ကျွန်ုပ်တို့ အကြံပြုထားသည်။

  • Native developer အတွက် KhronosGroup သည် OpenXR Multi-ကို ပံ့ပိုးပေးသည်View example၊ ဤလမ်းညွှန်ကိုကိုးကားပါ။
  • Unity developer အတွက် Render Mode ကို ကိုးကားပါ၊ single pass သည် multi-view ထူးခြားချက်။
  • VIVE Wave ဆက်တင်များကဲ့သို့ Unreal developer အတွက်၊ ဤလမ်းညွှန်ချက်ကို ကိုးကားပါ။

4.1.4 Foveation [အစစ်အမှန်မဟုတ်သော ထောက်ခံမှု]
ဤနေရာတွင် အယူအဆသည် 3.1.4 Foveation နှင့် ဆင်တူသည်။ Foveated rendering သည် GPU load ကို လျှော့ချရန် အဓိက ဒီဇိုင်းထုတ်ထားသော်လည်း ၎င်းသည် ပုံသေ GPU စွမ်းဆောင်ရည် ကုန်ကျစရိတ် ကျသင့်မည်ဖြစ်ပြီး foveation ကို အလွန်နိမ့်ကျပြီး အချို့သော ပစ္စည်းများ သို့မဟုတ် အသွင်အပြင်များကို အသုံးပြုပါက ၎င်းသည် အလွန်ဖြစ်လာနိုင်သည်။
သုံးစွဲသူကို သိသာစေတယ်။ ထို့ကြောင့်၊ သင်၏သတ်သတ်မှတ်မှတ်လိုအပ်ချက်များနှင့် စွမ်းဆောင်ရည်ထည့်သွင်းစဉ်းစားမှုများအပေါ်အခြေခံ၍ အင်္ဂါရပ်ကိုဖွင့်ရန် သို့မဟုတ် ပိတ်ရန် အကြံပြုလိုသည်မှာ လောလောဆယ်တွင် Foveated လုပ်ဆောင်ချက်ကို VIVE OpenXR SDK ရှိ OpenGL ES တွင်သာ ပံ့ပိုးထားပါသည်။

  • Native developer အတွက်၊ ဤအင်္ဂါရပ်ကို ရနိုင်သော်လည်း လောလောဆယ်တွင် ယခင်မရှိပါ။amples များ ပေးထားသည်။
  • Unity developer အတွက်၊ ဤလမ်းညွှန်ချက်ကို ကိုးကားပါ။
  • Unreal developer အတွက်၊ လောလောဆယ်တွင် ဤအင်္ဂါရပ်ကို မပံ့ပိုးပါ။

4.1.5 Render Mask [အစစ်အမှန်ကို မပံ့ပိုးပါ]
ဤနေရာတွင် အယူအဆသည် 3.1.8 Render Mask နှင့် ဆင်တူသည်။

  • Native developer အတွက်၊ Mesh ကိုရယူရန် XrVisibilityMaskKHR ကိုသုံးပါ။ မြင်ကွင်းကို မတင်ဆက်မီ၊ မြင်ကွင်းကို မတင်ဆက်မီ အတိမ်အနက် ကြားခံတန်ဖိုးများကို ဖြည့်သွင်းရန် ဤ Mesh ကို အသုံးပြုပါ။
  • Unity developer အတွက်၊ Render Mask အင်္ဂါရပ်ကို OpenGL ES အတွက် မူရင်းအတိုင်း ဖွင့်ထားပြီး အောက်ပါကုဒ်ဖြင့် ပိတ်နိုင်သည်။ လောလောဆယ်တွင် Vulkan သည် ဤအင်္ဂါရပ်ကို မပံ့ပိုးပါ။ //C# UnityEngine.XR.XRSettings.occlusionMaskScale = 0.0f;
  • Unreal developer အတွက်၊ လောလောဆယ် Render Mask လုပ်ဆောင်ချက်ကို ပံ့ပိုးမထားပါ။

4.2 MR အကြောင်းအရာ
OpenXR သည် လောလောဆယ်တွင် Passthrough Quality နှင့် Frame Rate ဆက်တင်ကို မပံ့ပိုးပါ။ ကျွန်ုပ်တို့သည် Passthrough အင်္ဂါရပ်ကို အကောင်းဆုံးဖြစ်အောင် ဆက်လက်ပြင်ဆင်သွားမည်ဖြစ်ပြီး၊ ထို့ကြောင့် ဆော့ဖ်ဝဲအင်ဂျင်နီယာများသည် စက်၏ FOTA ဗားရှင်းကို နောက်ဆုံးရနေစေရန် အပ်ဒိတ်လုပ်ရန် အကြံပြုထားသည်။

အသုံးများသော Optimization

5.1 စွမ်းဆောင်ရည်မြင့်မုဒ်ကို ပိတ်ပါ။
“စွမ်းဆောင်ရည်မြင့်မားသောမုဒ်” ကိုပိတ်ခြင်းဖြင့် GPU အသုံးပြုမှုကို လျှော့ချခြင်းဖြင့် စက်ပစ္စည်း၏ မျက်နှာပြင်အရွယ်အစားကို လျှော့ချနိုင်သည်။ အားနည်းချက်မှာ မျက်နှာပြင် ရုပ်ထွက် ကျဆင်းခြင်း ဖြစ်သည်။ ၎င်းကိုဖွင့်ရန်ရှိမရှိ ဆုံးဖြတ်ရန် အရည်အသွေးနှင့် စွမ်းဆောင်ရည်ကို ချိန်ခွင်လျှာညှိနိုင်သည်။
VIVE Focus 3 အတွက် ဆက်တင်တည်နေရာကို ပုံ 5-1-1 တွင် ပြထားသည်။

VIVE VR Rendering Performance - ပုံ ၁

VIVE XR Elite အတွက် ဆက်တင်တည်နေရာကို ပုံ 5-1-2 ကို ပြထားသည်-

VIVE VR Rendering Performance - ပုံ ၁

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.

  • မူရင်း developer အတွက် MSAA OpenGL ES exsample ဤကိုရည်ညွှန်းနိုင်သည်။ MSAA Vulkan ဟောင်းampဒါကို ler က ကိုးကားလို့ရတယ်။
    Adreno GPU သည် MSAA ကို အကောင်းဆုံးဖြစ်အောင် လုပ်ဆောင်ပေးသည့် တိုးချဲ့မှုတစ်ခု ပံ့ပိုးပေးသည်။
  • Unity developer အတွက်၊ ဤအဖွဲ့ကို ကိုးကားပါ။
  • For Unreal developer, refer to this guild. Unreal also has provide post processing anti-aliasing, refer to this guild.

5.3 GMEM Load/စတိုး
Adreno GPU ဗိသုကာတွင်၊ Render Target ကို binding လုပ်သောအခါ၊ Render Target သည် ရှင်းလင်းခြင်း သို့မဟုတ် မမှန်ပါက၊ rendering ဖြစ်ပေါ်လာတိုင်း၊ Render Target ရှိတန်ဖိုးများကို GMEM Load ဟုခေါ်သော Graphics Memory ထဲသို့ loaded လုပ်သည့်အင်္ဂါရပ်တစ်ခုရှိပါသည်။ ယခင်တန်ဖိုးများကို မလိုအပ်ဘဲ၊ ရှင်းလင်းခြင်း သို့မဟုတ် မှန်ကန်မှုမရှိပါက Render Target ကို မှန်ကန်စွာ rendering ပြုလုပ်ခြင်းဖြင့် GPU စွမ်းဆောင်ရည်ကို မြှင့်တင်ရန် ဤအခြေအနေကို ရှောင်ရှားနိုင်သည်။
အောက်ပါနည်းလမ်းများကိုအသုံးပြု၍ GMEM Load ကိုရှောင်ရှားနိုင်သည်။ OpenGL ES တွင် FBO ကို ပေါင်းစည်းပြီးနောက်၊ သင်သည် အရောင်၊ အတိမ်အနက်နှင့် Stencil ကြားခံကိုရှင်းလင်းရန် glClear နှင့် glClearDepth ကိုခေါ်ဆိုနိုင်သည်၊ သို့မဟုတ် သတ်မှတ်ထားသော Render Target ကိုတရားမဝင်စေရန် glInvalidateFramebuffer သို့ခေါ်ဆိုနိုင်သည်။ Vulkan တွင်၊ နောက်ထပ်ညွှန်ကြားချက်များမလိုအပ်ပါ။ VkAttachmentDescription.loadOp တွင် အသုံးမပြုမီ ပူးတွဲပါဖိုင်ကို ရှင်းလင်းရန် ရှိမရှိ အတိအကျ သတ်မှတ်နိုင်သည်။
အလားတူ၊ Tile Render ရလဒ်ကို Graphics Memory မှ Main Memory သို့ ပြန်လည်သိမ်းဆည်းခြင်းကို GMEM Store ဟုခေါ်သည်။ ဤလုပ်ဆောင်ချက်သည် GPU အတွက်လည်းစျေးကြီးသည်။ ၎င်းကိုရှောင်ရှားရန်၊ မလိုအပ်သောစတိုးလုပ်ငန်းများကိုကာကွယ်ရန် လိုအပ်သော Render Targets များကိုသာ ပေါင်းစည်းရန် အကြံပြုအပ်ပါသည်။

5.4 ဖွဲ့စည်းမှုအလွှာ (များစွာသောအလွှာ)
Multi-Layer ကို အသုံးပြု၍ ပြသထားသော အသွေးအသားသည် ပိုမိုကောင်းမွန်သော ရုပ်ထွက်အရည်အသွေးရှိသည်။ သို့သော်၊ ဤအင်္ဂါရပ်သည် အလွှာအရေအတွက်နှင့် ဖွဲ့စည်းတည်ဆောက်ပုံများ၏ အရွယ်အစားနှင့်အတူ GPU စွမ်းဆောင်ရည်ကို သိသိသာသာတိုးစေသည်။ သုံးလွှာထက်မပိုရန် အကြံပြုအပ်ပါသည်။

  • Native developer အတွက်၊
    o VIVE Wave SDK သည် အလွှာတစ်ခုစီအတွက် ဒေတာဖြတ်သန်းရန် WVR_SubmitFrameLayers ကို အသုံးပြုသည်။
    o VIVE OpenXR SDK သည် အလွှာဒေတာကို XrFrameEndInfo ထဲသို့ နေရာချပြီး xrEndFrame မှတဆင့် ပေးပို့သည်။
  • Unity developer များအတွက်၊
    o VIVE Wave SDK ဆက်တင်များ၊ ဤလမ်းညွှန်ကို ကိုးကားပါ၊
    o VIVE OpenXR ဆက်တင်များ၊ ဤလမ်းညွှန်ကို ကိုးကားပါ။
  • Unreal developer အတွက်၊
    o VIVE Wave SDK ဆက်တင်များ၊ ဤလမ်းညွှန်ကို ကိုးကားပါ။
    o VIVE OpenXR ဆက်တင်များ၊ ဤလမ်းညွှန်ကို ကိုးကားပါ။

5.5 CPU Spike
CPU loading ပိုလေးလာသောအခါ၊ အချို့သော နောက်ခံလုပ်ငန်းစဉ်များသည် ဦးစားပေးအဆင့်မြင့်သော thread များဖြစ်ပြီး၊ ၎င်းသည် မူလလုပ်ဆောင်မှုကို အနှောင့်အယှက်ဖြစ်စေနိုင်သည်။ အကြောင်းအရာ အက်ပ်လီကေးရှင်းကို အခြားစာတွဲဖြင့် နှောက်ယှက်မည်မဟုတ်ကြောင်း ကျွန်ုပ်တို့ အာမမခံနိုင်ပါ။
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 thread ဖွဲ့စည်းမှုအင်္ဂါရပ်ကို ကိုးကားပါ။ အကယ်၍ သင်သည် VIVE Wave SDK ကိုအသုံးပြုနေပါက၊ ပုံ 5-5-2 တွင်ပြထားသည့်အတိုင်း ဦးစားပေးချိန်ညှိနိုင်စေမည့် WaveXRSettings တွင် အင်္ဂါရပ်တစ်ခုရှိသည်။ သေးငယ်သောတန်ဖိုးသည် ပိုမိုဦးစားပေးမှုကို ကိုယ်စားပြုသည်။

VIVE VR Rendering Performance - ပုံ ၁

  • အင်ဂျင်ကုဒ်ကိုမွမ်းမံခြင်းမပြုပါက ပြင်ပဆက်တင်များမှတစ်ဆင့် ဂိမ်းချည်၊ တင်ဆက်ခြင်းကြိုးနှင့် RHI thread ဦးစားပေးကို ပြောင်းလဲရန် နည်းလမ်းမရှိပါ။

မူပိုင်ခွင့် © 2024 HTC ကော်ပိုရေးရှင်း။ မူပိုင်ခွင့်ကိုလက်ဝယ်ထားသည်VIVE လိုဂို

စာရွက်စာတမ်းများ / အရင်းအမြစ်များ

VIVE VR Rendering စွမ်းဆောင်ရည် [pdf] အသုံးပြုသူလမ်းညွှန်
VR Rendering Performance၊ Rendering Performance၊ Performance

ကိုးကား

မှတ်ချက်တစ်ခုချန်ထားပါ။

သင့်အီးမေးလ်လိပ်စာကို ထုတ်ပြန်မည်မဟုတ်ပါ။ လိုအပ်သောအကွက်များကို အမှတ်အသားပြုထားသည်။ *