និមិត្តសញ្ញា VIVEការសម្តែង VR
ការលៃតម្រូវ និងការបង្កើនប្រសិទ្ធភាព

សេចក្តីផ្តើម

ការសម្រេចបាននូវបទពិសោធន៍ VR ដ៏ល្អប្រសើរនៅលើផ្នែករឹងដែលមានធនធានគឺជាគន្លឹះក្នុងការផ្តល់នូវបទពិសោធន៍អ្នកប្រើប្រាស់យ៉ាងរលូន និងប្រកបដោយផាសុកភាព។ ប្រសិនបើអត្រាស៊ុមនៃការបង្ហាញមាតិកាធ្លាក់ចុះ ឬមិនស្ថិតស្ថេរនៅខាងក្រោមអត្រាធ្វើឱ្យស្រស់របស់ឧបករណ៍ វានឹងនាំឱ្យស៊ុមគ្រវី និងក្រិន ឈឺចលនា។ល។ ទីបំផុតប៉ះពាល់អវិជ្ជមានដល់បទពិសោធន៍អ្នកប្រើប្រាស់។ ដូច្នេះ ការបង្កើនប្រសិទ្ធភាពនៃការអនុវត្តខ្លឹមសារគឺមានសារៈសំខាន់ខ្លាំងណាស់សម្រាប់ការធានានូវបទពិសោធន៍ដ៏រីករាយ។
មុនពេលចាប់ផ្តើមការលៃតម្រូវការសម្តែង វាជាការសំខាន់ណាស់ដែលត្រូវយល់ពីកន្លែងដែលការរាំងស្ទះនៃការអនុវត្តដើម្បីជៀសវាងការលៃតម្រូវគ្មានប្រសិទ្ធភាព។ ឯកសារនេះត្រូវបានរចនាឡើងដើម្បីជួយអ្នកអភិវឌ្ឍន៍កំណត់បញ្ហានៃការអនុវត្ត និងផ្តល់ដំណោះស្រាយដើម្បីដោះស្រាយបញ្ហាការអនុវត្តការបង្ហាញ។
ឯកសារត្រូវបានរៀបចំជាផ្នែកដូចខាងក្រោមៈ

  • ជំពូកទី 2៖ កំណត់អត្តសញ្ញាណបញ្ហាស្ទះ – ផ្នែកនេះជួយអ្នកអភិវឌ្ឍន៍ក្នុងការកំណត់អត្តសញ្ញាណកន្លែងដែលស្ទះ។
  • ជំពូកទី 3 និងទី 4៖ ការកំណត់ VIVE Wave និង VIVE OpenXR – ផ្នែកទាំងនេះរៀបរាប់ពីការកំណត់ជាក់លាក់ដែលអាចប៉ះពាល់ដល់ដំណើរការ CPU/GPU សម្រាប់កម្មវិធី VIVE Wave និង OpenXR ។ អ្នកអភិវឌ្ឍន៍អាចពិសោធន៍ជាមួយការបើក ឬបិទមុខងារទាំងនេះ ដោយផ្អែកលើឧបសគ្គនៃការអនុវត្តដែលបានជួបប្រទះ ដើម្បីកំណត់ថាតើមានការកែលម្អណាមួយឬអត់។
  • ជំពូកទី 5៖ ការបង្កើនប្រសិទ្ធភាពទូទៅ – ផ្នែកនេះចែករំលែកការអនុវត្ត និងបទពិសោធន៍នៃការបង្កើនប្រសិទ្ធភាពទូទៅមួយចំនួន។

កំណត់អត្តសញ្ញាណដប

នៅពេលដែល HMD កំពុងផ្លាស់ទី ប្រសិនបើកម្មវិធី VR/MR មានបញ្ហាស៊ុម ឬគែមខ្មៅ។ ជាធម្មតា បញ្ហាដំណើរការអាចត្រូវបានបែងចែកជា 2 ប្រភេទ៖ CPU-bound ឬ GPU-bound។ ស្វែងយល់អំពីប្រភេទនៃការចងភ្ជាប់សម្រាប់កម្មវិធីរបស់អ្នកគឺមានសារៈសំខាន់ខ្លាំងណាស់នៅពេលចាប់ផ្តើម ដើម្បីជៀសវាងការលៃតម្រូវគ្មានប្រសិទ្ធភាព។
នៅក្នុងជំពូកនេះ យើងផ្តល់នូវជំហានសាមញ្ញដែលអនុញ្ញាតឱ្យអ្នកកំណត់បានយ៉ាងឆាប់រហ័សនូវកន្លែងដែលមានបញ្ហានៃការអនុវត្ត។

2.1 ពិនិត្យមើល FPS ការបង្ហាញមាតិកា
ដំបូង យើងចាប់ផ្តើមដោយពិនិត្យមើលមាតិកា FPS ដែលជាចំនួនស៊ុមដែលមាតិកាបង្ហាញក្នុងមួយវិនាទី។ វាគួរតែត្រូវបានរក្សាទៅកម្រិតបង្ហាញ និងរក្សាស្ថេរភាព។ បើមិនដូច្នេះទេ វាអាចនឹងធ្វើឱ្យស៊ុមញ័រ។
ប្រសិនបើកម្មវិធី SDK របស់អ្នកកំពុងប្រើ VIVE WAVE SDK 6.0.0 ឬខ្ពស់ជាងនេះ អ្នកអាចប្រើពាក្យបញ្ជា adb ខាងក្រោមដើម្បីពិនិត្យមើល FPS ។ DK 6.0.0
$adb Logcat -s VRMetric
អ្នកនឹងឃើញទិន្នន័យកំណត់ហេតុខាងក្រោម។
VRMetric:FPS=89.8/89.8,CPU-27/1,GPU=72/3,GpuBd=0,LrCnt=1,2Stag=1,Pstat=2,AQ=1,FOVED=0/0, FSE=1,TWS-2,PT=0(0), RndrBK=0,GLTA=2D,EB=1720×1720
“FPS=89.8/89.8” លេខទីមួយតំណាងឱ្យមាតិកា FPS ខណៈដែលលេខទីពីរតំណាងឱ្យកម្រិតបង្ហាញ។
ប្រសិនបើកំណែ Wave SDK របស់អ្នកទាបជាង 6.0.0 វាត្រូវបានណែនាំឱ្យដំឡើងកំណែទៅកំណែចុងក្រោយបំផុត ដើម្បីបង្កើនប្រសិទ្ធភាពនៃការបង្ហាញ និងការបង្កើនប្រសិទ្ធភាពផ្សេងទៀត។
ប្រសិនបើកម្មវិធីរបស់អ្នក SDK ត្រូវបានបង្កើតឡើងដោយ VIVE OpenXR ។ អ្នកអាចប្រើពាក្យបញ្ជា adb ខាងក្រោមដើម្បីពិនិត្យមើល FPS ។
$adb Logcat -s RENDER_ATW
អ្នកនឹងឃើញទិន្នន័យកំណត់ហេតុខាងក្រោម
RENDER_ATW៖ [FPS] វាយនភាពថ្មី៖ 90.00
RENDER_ATW៖ [FPS] R បច្ចុប្បន្ន៖ 90.00 រំលង៖ 0 317, -0.0155 0.805527, 0.006788)
RENDER_ATW៖ [FPS] L បច្ចុប្បន្ន៖ 90.00 រំលង៖ 0 (0.592301, -0.015502, 0.805539, 0.006773)

លេខខាងក្រោម "វាយនភាពថ្មី" តំណាងឱ្យមាតិកា FPS បច្ចុប្បន្ន។ លេខខាងក្រោម "R បច្ចុប្បន្ន" និង "L បច្ចុប្បន្ន" តំណាងឱ្យអត្រាស៊ុមបង្ហាញ។
ពេលខ្លះ មាតិកា FPS និងកម្រិតបង្ហាញអាចមានភាពខុសគ្នាបន្តិចបន្តួច។
សម្រាប់អតីតample ក្នុងករណីខាងលើ 89.8 FPS អាចត្រូវបានចាត់ទុកថាជា 90 FPS ។
ប្រសិនបើមាតិការបស់កម្មវិធី FPS ទាបជាងកម្រិតបង្ហាញស៊ុមជាប់លាប់ ឬនៅតែមិនស្ថិតស្ថេរ វាបង្ហាញពីបញ្ហាដំណើរការ។ ដូច្នេះ​ជំហាន​បន្ទាប់​គឺ​ត្រូវ​កំណត់​ថា​តើ​បញ្ហា​ស្ទះ​ចេញ​មក​ពី CPU ឬ GPU។
2.2 ពិនិត្យមើលការប្រើប្រាស់ CPU និង GPU
ប្រសិនបើកម្មវិធី SDK របស់អ្នកកំពុងប្រើ VIVE WAVE SDK 6.0.0 ឬខ្ពស់ជាងនេះ អ្នកអាចប្រើពាក្យបញ្ជា adb ខាងក្រោមដើម្បីពិនិត្យមើល FPS ។
$ adb logcat -s VRMetric
អ្នកនឹងឃើញទិន្នន័យកំណត់ហេតុខាងក្រោម។
VRMetric:FPS=89.8/89.8,CPU=27/1,GPU=72/3,GpuBd=0,LrCnt=1,2Stag=1,Pstat=2,AQ=1,FOVED=0 /0, FSE=1,TWS=2,PT=0(0),RndrBK=0,GLTA=2D,EB=1720×1720
ដូចដែលអ្នកអាចឃើញនៅក្នុងលទ្ធផលកំណត់ហេតុខាងលើ ការប្រើប្រាស់ស៊ីភីយូគឺ 27% ហើយការប្រើប្រាស់ GPU គឺ 72% ប្រសិនបើកំណែ Wave SDK របស់អ្នកទាបជាង 6.0.0 វាត្រូវបានណែនាំឱ្យដំឡើងកំណែទៅកំណែចុងក្រោយបំផុត ដើម្បីបង្កើនប្រសិទ្ធភាពនៃការបង្ហាញ និងការបង្កើនប្រសិទ្ធភាពផ្សេងទៀត។
សម្រាប់កម្មវិធី VIVE OpenXR អ្នកអាចប្រើពាក្យបញ្ជាខាងក្រោមដើម្បីពិនិត្យមើលការប្រើប្រាស់ CPU និង GPU។
# នៅលើ linux/ubuntu
$ adb logcat | grep CPU_USAGE
# នៅលើ powershell
$ adb logcat | ជ្រើសរើស-ខ្សែអក្សរ-លំនាំ CPU_USAGE
អ្នកនឹងឃើញកំណត់ហេតុខាងក្រោម
CPU ជាមធ្យម 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% អ្នកអាចសាកល្បងកែតម្រូវ Eyebuffer Resolution (ផ្នែក 3.1.2 ផ្នែក 4.1.2) ដើម្បីមើលថាតើវាធ្វើអោយ FPS ប្រសើរឡើងដែរឬទេ។ ប្រសិនបើការកែតម្រូវនេះនាំឱ្យកាន់តែប្រសើរឡើង
ដំណើរការ យើងអាចសន្និដ្ឋានថាបញ្ហាគឺជាប់ទាក់ទងនឹង GPU ហើយផ្តោតលើការខិតខំប្រឹងប្រែងបង្កើនប្រសិទ្ធភាពរបស់យើងទៅតាមនោះ។
ម្យ៉ាងវិញទៀត ប្រសិនបើការកែសំរួល Eyebuffer Resolution មិនបណ្តាលឱ្យមានការកែលម្អដំណើរការគួរឱ្យកត់សម្គាល់ នោះបញ្ហាជាប់គាំងគឺទំនងជា CPU-bound ហើយយើងគួរតែផ្តោតលើការបង្កើនប្រសិទ្ធភាព CPU ។
វាក៏អាចទៅរួចដែលថាកម្មវិធីត្រូវបានចងភ្ជាប់ CPU និង GPU ក្នុងពេលដំណាលគ្នា។ ក្នុងករណីបែបនេះ កិច្ចខិតខំប្រឹងប្រែងបង្កើនប្រសិទ្ធភាពគួរតែត្រូវបានអនុវត្តចំពោះទាំង CPU និង GPU ដើម្បីសម្រេចបាននូវការកែលម្អដំណើរការប្រកបដោយតុល្យភាព។
2.3 GPU-ជាប់
នៅពេលដែលកម្មវិធី VR ត្រូវបានចងភ្ជាប់ជាមួយ GPU វាមានន័យថា GPU គឺជាឧបសគ្គចម្បង ហើយវាមិនអាចបន្តតាមតម្រូវការនៃការបង្ហាញរបស់កម្មវិធីនោះទេ។ ដើម្បីកាត់បន្ថយបញ្ហាដែលជាប់ទាក់ទងនឹង GPU សូមពិចារណាការណែនាំខាងក្រោម៖
ជាដំបូង ប្រើឧបករណ៍បង្កើតទម្រង់ដូចជា RenderDoc ឬ Game Engine profiler (Unity Profiler, Unreal Insights) ដើម្បីវិភាគកន្លែងដែល GPU កំពុងចំណាយពេលភាគច្រើនរបស់វា។ កំណត់ប្រតិបត្តិការដែលថ្លៃបំផុត ហើយផ្តោតលើការធ្វើឱ្យពួកវាប្រសើរឡើង។
សម្រាប់អ្នកអភិវឌ្ឍន៍ដើម អ្នកអាចប្រើ RenderDoc ដើម្បីកំណត់អត្តសញ្ញាណការហៅចេញដែលបណ្តាលឱ្យផ្ទុក GPU លើស។
សម្រាប់អ្នកអភិវឌ្ឍន៍ Unity អ្នកអាចធ្វើតាម Unity ឯកសារនេះ ឬប្រើ RenderDoc ដើម្បីវិភាគបញ្ហាដំណើរការបង្ហាញ ហើយធ្វើតាមឯកសារ Unity graphics optimization សម្រាប់ការណែនាំដើម្បីបង្កើនប្រសិទ្ធភាពកម្មវិធីរបស់អ្នក។
សម្រាប់ Unreal Developer អ្នកអាចប្រើ GPU Visualizer ឬប្រើ RenderDoc ដើម្បីវិភាគបញ្ហាដំណើរការបង្ហាញ ហើយអនុវត្តតាមគោលការណ៍ណែនាំការអនុវត្តមិនពិតសម្រាប់ការណែនាំដើម្បីបង្កើនប្រសិទ្ធភាពកម្មវិធីរបស់អ្នក។
ទីពីរ អ្នកក៏អាចសាកល្បងកែសម្រួលមុខងារ Wave ជាក់លាក់ ឬការកំណត់ដើម្បីកាត់បន្ថយការផ្ទុក 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. កែតម្រូវគុណភាពរូបភាព Passthrough ទាបជាង។ (ផ្នែក 3.2.1)
  2. កែសម្រួល​អត្រា​ស៊ុម​ឆ្លងកាត់​យឺត​ជាង។ (ផ្នែក 3.2.2) ។

សម្រាប់ការកំណត់ផ្សេងទៀតអំពីដំណើរការ GPU អ្នកអាចយោងទៅជំពូក 2.6 ។

2.4 CPU-bound
នៅពេលដែលកម្មវិធី VR ត្រូវបានចងភ្ជាប់ជាមួយស៊ីភីយូ វាមានន័យថាស៊ីភីយូគឺជាឧបសគ្គចម្បង សូមពិចារណាលើអនុសាសន៍ខាងក្រោម៖
ជាដំបូង សូមប្រើឧបករណ៍បង្កើតទម្រង់ដូចជា Systrace ឬ Game Engine profiler (Unity Profiler, Unreal Insights) ដើម្បីវិភាគ និងកំណត់អត្តសញ្ញាណផ្នែកណាមួយនៃកូដរបស់អ្នកកំពុងប្រើប្រាស់ធនធាន CPU ច្រើនបំផុត។ ផ្តោតលើការបង្កើនប្រសិទ្ធភាពផ្នែកទាំងនេះ និង refactor computationally intensive algorithms ដើម្បីកាត់បន្ថយការផ្ទុក CPU ។

  • សម្រាប់អ្នកអភិវឌ្ឍន៍ដើម អ្នកអាចប្រើ Systrace ដើម្បីគាំទ្រfiler គម្រោងរបស់អ្នក។
  • សម្រាប់ Unity Developer អ្នកអាចប្រើ CPU Usage Profileម៉ូឌុល r ដើម្បីស្វែងរកបញ្ហាដំណើរការស៊ីភីយូ។
  • សម្រាប់ Unreal Developer អ្នកអាចប្រើ Unreal's Insights ដើម្បីស្វែងរកបញ្ហាដំណើរការ CPU។

ទីពីរ អ្នកក៏អាចសាកល្បងកែសម្រួលមុខងារ Wave ជាក់លាក់ ឬការកំណត់ដើម្បីកាត់បន្ថយការផ្ទុក GPU។

  1. កំណត់អត្រាធ្វើឱ្យស្រស់អេក្រង់យឺតជាងមុន (ផ្នែក 3.1.1 ផ្នែក 4.1.1)
  2.  ប្រើច្រើន-View ការបង្ហាញ (ផ្នែក 3.1.4 ផ្នែក 4.1.4)

ប្រសិនបើកម្មវិធីរបស់អ្នកក៏ជាកម្មវិធី MR ដែរ អ្នកអាចកែតម្រូវការកំណត់ Passthrough ផងដែរ។

  1. កែសម្រួល​អត្រា​ស៊ុម​ឆ្លងកាត់​យឺត​ជាង (ផ្នែក 3.2.2)។

សម្រាប់ការកំណត់ផ្សេងទៀតអំពីដំណើរការស៊ីភីយូ អ្នកអាចយោងទៅជំពូក 2.6 ។

2.5 សេចក្តីសង្ខេប
ជាចុងក្រោយ យើងបានរៀបចំដំណើរការត្រួតពិនិត្យការអនុវត្តខាងលើទៅក្នុងរូបភាព 2-5-1។ ចាប់ផ្តើមដោយពិនិត្យមើល FPS របស់មាតិកា។ ប្រសិនបើវាទាបជាងកម្រិតបង្ហាញ ឬនៅតែមិនស្ថិតស្ថេរ បន្ទាប់មកវិភាគការប្រើប្រាស់ GPU/CPU ដើម្បីកំណត់ថាតើវាជា GPU-bound ឬ CPUbound។ ចុងក្រោយប្រើប្រូfiler ដើម្បីកំណត់បញ្ហាដំណើរការដែលអាចកើតមាន ឬកែតម្រូវមុខងារ Wave ឬការកំណត់ដើម្បីបង្កើនប្រសិទ្ធភាពដំណើរការស៊ីភីយូ។

ការអនុវត្តការបង្ហាញ VIVE VR - រូបភាពទី 1

2.6 សេចក្តីយោងរហ័ស ការកំណត់ណាមួយដែលអាចធ្វើអោយដំណើរការផ្ទុក CPU/GPU ប្រសើរឡើង

រាយការកំណត់របស់ SDK ដែលទាក់ទងនឹងការផ្ទុក CPU/GPU ដូចខាងក្រោម។ អ្នកអាចផ្អែកលើភាពជាប់គាំងរបស់កម្មវិធី ដើម្បីពិនិត្យមើលការកំណត់ការបង្កើនប្រសិទ្ធភាពដែលពាក់ព័ន្ធ។

ទាក់ទងនឹង CPU៖

  • ការកំណត់ VIVE Wave SDK
    o មាតិកា VR
    ▪ 3.1.1 បង្ហាញអត្រាធ្វើឱ្យស្រស់
    ▪ 3.1.4 ពហុView ការបង្ហាញ
    ▪ 3.1.6 គុណភាពសម្របខ្លួន
    ▪ 3.1.7 Adaptive Motion Compositor
    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
    ▪ 3.1.3 ពហុView ការបង្ហាញ
    ▪ 3.1.4 Foveation
    ▪ 3.1.5 ការបង្កើនភាពច្បាស់របស់ស៊ុម (FSE)
    ▪ 3.1.6 គុណភាពសម្របខ្លួន
    ▪ 3.1.7 Adaptive Motion Compositor
    ▪ 3.1.8 Render Mask [Not Support Unreal] o MR Content
    ▪ 3.2.1 លៃតម្រូវគុណភាពឆ្លងកាត់
    ▪ 3.2.2 លៃតម្រូវអត្រាស៊ុមឆ្លងកាត់
  • ការកំណត់ VIVE OpenXR SDK
    o មាតិកា VR
    ▪ 4.1.1 បង្ហាញអត្រាធ្វើឱ្យស្រស់
    ▪ 4.1.2 ដំណោះស្រាយ Eyebuffer
    ▪ 4.1.3 ពហុView ការបង្ហាញ
    ▪ 4.1.4 Foveation [Not Support Unreal] ▪ 4.1.5 Render Mask [Not Support 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 បង្ហាញអត្រាធ្វើឱ្យស្រស់

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.

  • សម្រាប់អ្នកអភិវឌ្ឍន៍ដើម សូមមើល WVR_SetFrameRate។
  • សម្រាប់អ្នកអភិវឌ្ឍន៍ Unity សូមមើលការណែនាំនេះ។
  • សម្រាប់អ្នកអភិវឌ្ឍន៍ Unreal សូមមើលការណែនាំនេះ។

3.1.2 ដំណោះស្រាយ Eyebuffer
Eyebuffer resoultion គឺជាទំហំវាយនភាពដែលមាតិកាកម្មវិធីនឹងត្រូវបង្ហាញ វាយនភាពដែលបង្ហាញនឹងត្រូវបានបញ្ជូនទៅពេលដំណើរការដើម្បីធ្វើដំណើរការប្រកាស និងបង្ហាញនៅលើអេក្រង់ HMD ។
ខណៈពេលដែលទំហំសតិបណ្ដោះអាសន្នភ្នែកធំជាងអាចបណ្តាលឱ្យមានរូបភាពកាន់តែច្បាស់ និងលម្អិតជាងមុន ប៉ុន្តែវាក៏ដាក់បន្ទុកយ៉ាងសំខាន់លើ 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.

  • សម្រាប់អ្នកអភិវឌ្ឍន៍ដើម សូមមើល WVR_ObtainTextureQueue។ នៅពេលកែតម្រូវទំហំ អ្នកគួរតែគុណទទឹង និងកម្ពស់ដោយសមាមាត្រមួយ។
  • សម្រាប់អ្នកអភិវឌ្ឍន៍ Unity សូមមើល WaveXRSettings។
    ជាជម្រើស អ្នកអាចធ្វើការផ្លាស់ប្តូរតាមរយៈកូដជា belwoe ។
    XRSettings.eyeTextureResolutionScale = ResolutionScaleValue; // C#
  • សម្រាប់អ្នកអភិវឌ្ឍន៍ Unreal សូមមើល SetPixelDensity។

3.1.3 ពហុView ការបង្ហាញ
ក្នុង​ការ​បង្ហាញ​បែប​ប្រពៃណី យើង​គូរ​ភ្នែក​ឆ្វេង និង​ស្តាំ​ដោយ​ឡែក​ពី​គ្នា ដែល​តម្រូវ​ឱ្យ​មាន​ការ​គូរ​ពីរ​សម្រាប់​ឈុត​ដូច​គ្នា។ ពហុView ការ​បង្ហាញ​ដោះស្រាយ​បញ្ហា​នេះ​ដោយ​ធ្វើ​ការ​ហៅ​តែ​មួយ​គត់។
This feature reduces CPU load by decreasing the number of draw calls. The GPU also has some benefits, vertex shader’s workload is also reduced as it doesn’t need to run an additional shader for the other eye, but the fragment shader’s workload remains  unchanged since it still needs to evaluate each pixel for both eyes. We recommand enabling this feature.

  • សម្រាប់អ្នកអភិវឌ្ឍន៍ដើម អ្នកអាចយោងទៅ wvr_native_hellovr sampលេ
  • សម្រាប់អ្នកអភិវឌ្ឍន៍ Unity យោងទៅលើ Render Mode, single pass គឺ multi-view លក្ខណៈ។
  • សម្រាប់អ្នកអភិវឌ្ឍន៍ Unreal សូមមើលការណែនាំនេះ។

3.1.4 ភោគផល
ការបង្ហាញ Foveated ត្រូវបានរចនាឡើងជាចម្បងដើម្បីកាត់បន្ថយការផ្ទុក GPU ។ វាកាត់បន្ថយព័ត៌មានលម្អិតនៃស៊ុមនៅក្នុងបរិបទនៃការបង្ហាញ និងរក្សាបាននូវព័ត៌មានលម្អិតដែលមានគុណភាពបង្ហាញខ្ពស់នៅកណ្តាលវាលនៃ view. ប្រសិនបើកម្មវិធីមានបញ្ហា GPU bound អ្នកអាចសាកល្បង eanbling Foveation rendering ។

ការអនុវត្តការបង្ហាញ VIVE VR - រូបភាពទី 2

មានអ្វីមួយដែលត្រូវកត់សម្គាល់នៅពេលប្រើ foveation:

➢ ជាធម្មតា អ្នកប្រើប្រាស់មិនកត់សំគាល់ពីព័ត៌មានលម្អិតដែលកាត់បន្ថយនៅក្នុងតំបន់គ្រឿងកុំព្យូទ័រដែលប្រើមុខងារ foveation លំនាំដើមនោះទេ។ ប៉ុន្តែប្រសិនបើគុណភាពគ្រឿងកុំព្យូទ័រនៃ foveation ត្រូវបានកំណត់ទាបពេក វាអាចក្លាយជាការកត់សម្គាល់សម្រាប់អ្នកប្រើប្រាស់។
➢ ផលប៉ះពាល់នៃសារធាតុ foveation អាចកាន់តែគួរឱ្យកត់សម្គាល់ជាមួយនឹងសម្ភារៈមួយចំនួននៃវាយនភាព ដែលអាចទាក់ទាញចំណាប់អារម្មណ៍របស់អ្នកប្រើប្រាស់។ អ្នកអភិវឌ្ឍន៍គួរតែដឹងអំពីរឿងនេះ ហើយវាយតម្លៃវាទៅតាមនោះ។
➢ ការបើកដំណើរការមុខងារបង្ហាញរូបភាពដែលបង្កើតបានត្រូវចំណាយលើការអនុវត្ត GPU ថេរ ដែលអាចប្រែប្រួលចន្លោះពី 1% ទៅ 6% អាស្រ័យទៅលើទំហំនៃទ្រនាប់ភ្នែក។ នៅពេលប្រើ Shader សាមញ្ញនៅក្នុងឈុតនោះ ប្រសិទ្ធភាពទទួលបានពីការសន្សំធនធានអាចទាបជាងតម្លៃនៃការអនុវត្ត GPU ថេរ ដែលបណ្តាលឱ្យមានការថយចុះនៃការអនុវត្ត។

  • សម្រាប់អ្នកអភិវឌ្ឍន៍ដើម សូមមើលការណែនាំនេះ។
  • សម្រាប់អ្នកអភិវឌ្ឍន៍ Unity សូមមើលការណែនាំនេះ។ គួរកត់សម្គាល់ថា នៅពេលដែលអ្នកបើកដំណើរការក្រោយដំណើរការ ឬ HDR, foveation មិនអាចប្រើប្រាស់ពេញលេញបានទេ។ ដោយសារតែ Unity នឹងបង្ហាញវត្ថុទៅលើវាយនភាព render ដែលបានបង្កើតដោយខ្លួនវា ជាជាងដំណើរការវាយនភាពការបង្ហាញបច្ចុប្បន្នដែលបង្កើតដោយ runtime ដែលគាំទ្រ foveation។
  • សម្រាប់អ្នកអភិវឌ្ឍន៍ Unreal សូមមើលការណែនាំនេះ។ គួរកត់សម្គាល់ថា foveation មិនអាចប្រើប្រាស់បានពេញលេញលើ Multi-View ការ​បង្ហាញ​ដោយ​សារ​តែ Unreal មិន​អាច​បង្ហាញ​វត្ថុ​ដោយ​ផ្ទាល់​ទៅ​លើ​វាយនភាព​បង្ហាញ​ដែល​បង្កើត​ដោយ​ពេល​វេលា​ដែល​គាំទ្រ​ការ​បង្កើត​ចលនា។

3.1.5 ការបង្កើនភាពច្បាស់របស់ស៊ុម (FSE)
FSE ផ្តល់នូវលទ្ធផលធ្វើឱ្យច្បាស់តាមរយៈការណែនាំតម្រងធ្វើឱ្យច្បាស់ វាអាចធ្វើឱ្យមាតិកាកាន់តែច្បាស់ និងមានប្រយោជន៍សម្រាប់ការកែលម្អភាពច្បាស់លាស់នៃអត្ថបទនៅក្នុងឈុត។ ប្រសិនបើកម្មវិធីមានបញ្ហាទាក់ទងនឹង GPU អ្នកអាចពិចារណាបិទ FSE ប្រសិនបើវាមិនសំខាន់។

ការអនុវត្តការបង្ហាញ VIVE VR - រូបភាពទី 3

  • សម្រាប់អ្នកអភិវឌ្ឍន៍ដើម សូមមើលការណែនាំនេះ។
  • សម្រាប់អ្នកអភិវឌ្ឍន៍ Unity សូមមើលការណែនាំនេះ។
  • សម្រាប់អ្នកអភិវឌ្ឍន៍ Unreal សូមមើលការណែនាំនេះ។

3.1.6 គុណភាពអាដាប់ធ័រ
ដើម្បីសន្សំសំចៃថ្ម និងរក្សាដំណើរការបង្ហាញរបស់ឧបករណ៍ មុខងារនេះកែតម្រូវកម្រិតដំណើរការនៃនាឡិកា CPU/GPU ដោយស្វ័យប្រវត្តិដោយផ្អែកលើការប្រើប្រាស់របស់វា។ លើសពីនេះ យុទ្ធសាស្ត្រផ្សេងទៀតអាចត្រូវបានអនុវត្តដើម្បីបង្កើនប្រសិទ្ធភាពដូចជា បើក/បិទដោយស្វ័យប្រវត្តិ Foveation ឬមាតិកាអាចកែតម្រូវខ្លួនឯងបាន ប្រសិនបើទទួលបានព្រឹត្តិការណ៍ផ្ទុកខ្ពស់/ទាប។

  • សម្រាប់អ្នកអភិវឌ្ឍន៍ដើម សូមមើលការណែនាំនេះ។
  • សម្រាប់អ្នកអភិវឌ្ឍន៍ Unity សូមមើលការណែនាំនេះ។ នៅក្នុងកម្មវិធីជំនួយ Unity របស់យើង ទំហំទ្រនាប់ភ្នែកអាចត្រូវបានកែតម្រូវដោយស្វ័យប្រវត្តិដោយផ្អែកលើការអនុវត្តបច្ចុប្បន្ន។ ទំហំអត្ថបទនឹងត្រងចេញនូវតម្លៃមាត្រដ្ឋានដែលតូចពេកនៅក្នុងបញ្ជីដំណោះស្រាយ។ យើងណែនាំអត្ថបទដែលមានទំហំយ៉ាងតិច 20 dmm ឬធំជាងនេះ។
  • សម្រាប់អ្នកអភិវឌ្ឍន៍ Unreal សូមមើលការណែនាំនេះ។

3.1.7 សមាសធាតុចលនាអាដាប់ធ័រ
លក្ខណៈពិសេសនេះគឺជាលក្ខណៈពិសេសពិសោធន៍ដែលរួមបញ្ចូល UMC និង PMC ។ UMC នឹងកាត់បន្ថយអត្រាស៊ុមដោយពាក់កណ្តាល ហើយបន្ថែមស៊ុមថ្មីក្នុងពេលវេលាជាក់ស្តែង ដើម្បីរក្សាភាពរលោងដែលមើលឃើញ។ ទោះយ៉ាងណាក៏ដោយ វាភ្ជាប់មកជាមួយភាពយឺតយ៉ាវ វត្ថុបុរាណ និងការផ្ទុក GPU ។
PMC ជាចម្បងប្រើ Depth Buffer ដើម្បីអនុញ្ញាតឱ្យ ATW បញ្ចូលគណនីសម្រាប់ការបកប្រែ HMD ពង្រីកដល់ 6-dof សំណង។ មុខងារនេះអាចកាត់បន្ថយភាពយឺតនៃការបកប្រែបាន 1~2 ស៊ុម ប៉ុន្តែបង្កើនការផ្ទុក GPU ។

  • សម្រាប់អ្នកអភិវឌ្ឍន៍ដើម សូមមើលការណែនាំនេះ។
  • សម្រាប់អ្នកអភិវឌ្ឍន៍ Unity សូមមើលការណែនាំនេះ។
  • សម្រាប់អ្នកអភិវឌ្ឍន៍ Unreal សូមមើលការណែនាំនេះ។

3.1.8 Render Mask [មិនគាំទ្រមិនពិត]
ភីកសែលនៅគែមស្ទើរតែមើលមិនឃើញបន្ទាប់ពីការបង្ខូចទ្រង់ទ្រាយ របាំងបង្ហាញកែប្រែតម្លៃសតិបណ្ដោះអាសន្នជម្រៅនៃភីកសែលដែលមើលមិនឃើញទាំងនេះ។ ប្រសិនបើអ្នកបើកការសាកល្បងជម្រៅ ដោយសារដំបូង-z ភីកសែលមើលមិនឃើញទាំងនេះនឹងមិនត្រូវបានបង្ហាញទេ ដោយហេតុនេះកាត់បន្ថយការផ្ទុក GPU ។ លក្ខណៈពិសេសនេះមានប្រយោជន៍ប្រសិនបើមានវត្ថុបង្ហាញដែលផ្ទុកធ្ងន់នៅក្នុងតំបន់ដែលមើលមិនឃើញទាំងនេះ។ បើមិនដូច្នេះទេ ប្រសិនបើមិនមានវត្ថុបង្ហាញនៅក្នុងតំបន់ទាំងនេះទេ សូមផ្តល់អនុសាសន៍ឱ្យបិទវាព្រោះវានឹងប្រើប្រាស់ GPU តិចតួច។.

  • សម្រាប់អ្នកអភិវឌ្ឍន៍ដើម សូមមើលការណែនាំនេះ។ អ្នកត្រូវតែចងសតិបណ្ដោះអាសន្នជម្រៅ មុនពេលហៅ RenderMask; បើមិនដូច្នោះទេវានឹងគ្មានប្រសិទ្ធភាព។
  • សម្រាប់អ្នកអភិវឌ្ឍន៍ Unity សូមមើលការណែនាំនេះ។
  • សម្រាប់អ្នកអភិវឌ្ឍន៍ Unreal បច្ចុប្បន្នមិនគាំទ្រមុខងារ Render Mask ទេ។

3.2 មាតិកា MR
3.2.1 កែតម្រូវគុណភាពឆ្លងកាត់
មាន 3 កម្រិតសម្រាប់គុណភាពរូបភាពឆ្លងកាត់:
➢ WVR_PassthroughImageQuality_DefaultMode – សមរម្យសម្រាប់មាតិកា MR ដោយគ្មានតម្រូវការជាក់លាក់។
➢ WVR_PassthroughImageQuality_PerformanceMode – សមរម្យសម្រាប់មាតិកា MR ដែលត្រូវការធនធាន GPU បន្ថែមទៀតសម្រាប់ការបង្ហាញឈុតនិម្មិត។
➢ WVR_PassthroughImageQuality_QualityMode – ស័ក្តិសមសម្រាប់មាតិកា MR ដែលអនុញ្ញាតឱ្យអ្នកប្រើប្រាស់មើលឃើញបរិយាកាសជុំវិញយ៉ាងច្បាស់ ប៉ុន្តែទិដ្ឋភាពនិម្មិតនៃខ្លឹមសារត្រូវតែមានការកែតម្រូវបន្ថែមទៀតសម្រាប់ដំណើរការ។
អ្នកអាចកែតម្រូវគុណភាព Passthrough ទៅ PerformanceMode ដើម្បីកាត់បន្ថយការប្រើប្រាស់ GPU ។

  • សម្រាប់អ្នកអភិវឌ្ឍន៍ដើម Uunity ឬ Unreal សូមមើលការណែនាំនេះ។

3.2.2 លៃតម្រូវអត្រាស៊ុមឆ្លងកាត់
ដូចជាអត្រាធ្វើឱ្យស្រស់អេក្រង់ អត្រាស៊ុមឆ្លងកាត់ខ្ពស់ផ្តល់នូវរូបភាពកាន់តែរលូន ប៉ុន្តែមកជាមួយតម្លៃនៃការបង្កើនការផ្ទុកប្រព័ន្ធ។ ផ្ទុយទៅវិញ អត្រាធ្វើឱ្យស្រស់ទាបកាត់បន្ថយការផ្ទុកប្រព័ន្ធ ប៉ុន្តែនាំឱ្យរូបភាពកាន់តែរលូនតិច។ មាន 2 របៀបនៃការឆ្លងកាត់ស៊ុម: ជំរុញនិងធម្មតា។

  • សម្រាប់អ្នកអភិវឌ្ឍន៍ដើម អាចកែតម្រូវគុណភាពឆ្លងកាត់ដោយប្រើ WVR_SetPassthroughImageRate ។
  • សម្រាប់អ្នកអភិវឌ្ឍន៍ Unity អាចផ្លាស់ប្តូរតាមរយៈកូដ ឧampការកំណត់មានដូចខាងក្រោម // C#
    Interop.WVR_SetPassthroughImageQuality(WVR_PassthroughImageQuality.PerformanceMode);
  • សម្រាប់អ្នកអភិវឌ្ឍន៍ Unreal វិធីសាស្ត្រកំណត់សូមមើលថ្នាំងប្លង់មេនៅក្នុងរូបភាព 3-2-2 ។

ការអនុវត្តការបង្ហាញ VIVE VR - រូបភាពទី 4

ការកំណត់ VIVE OpenXR

OpenXR គឺជាស្តង់ដារបើកចំហដែលផ្តល់នូវសំណុំ APIs ទូទៅសម្រាប់បង្កើតកម្មវិធី XR ដែលដំណើរការលើឧបករណ៍ VR ជាច្រើនដែលបង្កើតឡើងដោយ Khronos Group ។ VIVE Focus 3 និង VIVE XR Elite ក៏គាំទ្រ OpenXR ផងដែរ VIVE OpenXR SDK ផ្តល់នូវការគាំទ្រយ៉ាងទូលំទូលាយសម្រាប់ឧបករណ៍ HTC VR ដែលអនុញ្ញាតឱ្យអ្នកអភិវឌ្ឍន៍បង្កើត Allin-One និងមាតិកាជាមួយម៉ាស៊ីន Unity និង Unreal នៅលើឧបករណ៍ HTC VR ។ យើងបន្តបង្កើនប្រសិទ្ធភាព និងដោះស្រាយកំហុសផ្សេងៗ ដូច្នេះវាត្រូវបានណែនាំឱ្យអ្នកអភិវឌ្ឍន៍ធ្វើបច្ចុប្បន្នភាពកំណែ FOTA របស់ឧបករណ៍របស់ពួកគេ ដើម្បីរក្សាវាឱ្យទាន់សម័យ។ បច្ចុប្បន្ន VIVE OpenXR SDK គាំទ្រ OpenGL ES និង Vulkan ។

4.1 មាតិកា VR
4.1.1 បង្ហាញអត្រាធ្វើឱ្យស្រស់
គោលគំនិតនៅទីនេះគឺស្រដៀងទៅនឹង 3.1.1 Display Refresh Rate។

  • សម្រាប់អ្នកអភិវឌ្ឍន៍ដើម សូមមើល XrEventDataDisplayRefreshRateChangedFB។
  • សម្រាប់អ្នកអភិវឌ្ឍន៍ Unity សូមមើលការណែនាំនេះ។
  • សម្រាប់អ្នកអភិវឌ្ឍន៍ Unreal សូមមើលការណែនាំនេះ។

4.1.2 ដំណោះស្រាយ Eyebuffer
គោលគំនិតនៅទីនេះគឺស្រដៀងទៅនឹង 3.1.2 Eyebuffer Resolution។ យើងសូមណែនាំកុំឱ្យកាត់បន្ថយកត្តាមាត្រដ្ឋានខាងក្រោម 0.7 ព្រោះវាអាចបណ្តាលឱ្យមានគុណភាពរូបភាពដែលមិនអាចទទួលយកបាន។

  • សម្រាប់អ្នកអភិវឌ្ឍន៍ដើម សូមមើល xrCreateSwapchain ។ នៅពេលកែតម្រូវទំហំ អ្នកគួរតែគុណទទឹង និងកម្ពស់ដោយសមាមាត្រមួយ។ ,
  • សម្រាប់អ្នកអភិវឌ្ឍន៍ Unity សូមមើលឧampឡេ // C#
    XRSettings.eyeTextureResolutionScale = 0.7f; // បានណែនាំ 1.0f ~ 0.7f
  • សម្រាប់ការកំណត់មិនពិត សូមមើលការណែនាំនេះ។

4.1.3 ពហុView ការបង្ហាញ
គំនិតនៅទីនេះគឺស្រដៀងទៅនឹង 3.1.3 Multi-View ការបង្ហាញ។ មុខងារនេះកាត់បន្ថយការផ្ទុកនៅលើ CPU GPU ក៏មានអត្ថប្រយោជន៍មួយចំនួនផងដែរ។ យើងស្នើឱ្យបើកមុខងារនេះ។

  • សម្រាប់អ្នកអភិវឌ្ឍន៍ដើម KhronosGroup ផ្តល់នូវ OpenXR Multi-View example, យោងទៅការណែនាំនេះ។
  • សម្រាប់អ្នកអភិវឌ្ឍន៍ Unity យោងទៅលើ Render Mode, single pass គឺ multi-view លក្ខណៈ។
  • សម្រាប់អ្នកអភិវឌ្ឍន៍ Unreal ដូចជាការកំណត់ VIVE Wave សូមមើលការណែនាំនេះ។

4.1.4 Foveation [មិនគាំទ្រមិនពិត]
គំនិតនៅទីនេះគឺស្រដៀងគ្នាទៅនឹង 3.1.4 Foveation ។ ការបង្ហាញ Foveated ត្រូវបានរចនាឡើងជាចម្បងដើម្បីកាត់បន្ថយការផ្ទុក GPU ប៉ុន្តែការបើកដំណើរការវានឹងទទួលរងនូវការចំណាយលើការអនុវត្ត GPU ថេរ ហើយប្រសិនបើ foveation ត្រូវបានកំណត់ទាបពេក ហើយសម្ភារៈ ឬវាយនភាពមួយចំនួនត្រូវបានប្រើប្រាស់ វាអាចក្លាយជាខ្លាំងណាស់។
គួរឱ្យកត់សម្គាល់ចំពោះអ្នកប្រើប្រាស់។ ដូច្នេះ វាត្រូវបានណែនាំឱ្យបើក ឬបិទមុខងារដោយផ្អែកលើតម្រូវការជាក់លាក់របស់អ្នក និងការពិចារណាលើការអនុវត្ត បច្ចុប្បន្នមុខងារ Foveated ត្រូវបានគាំទ្រតែនៅក្នុង OpenGL ES នៅលើ VIVE OpenXR SDK ប៉ុណ្ណោះ។

  • សម្រាប់អ្នកអភិវឌ្ឍន៍ដើម មុខងារនេះអាចប្រើបាន ប៉ុន្តែបច្ចុប្បន្នមិនមានអតីតទេ។amples ត្រូវបានផ្តល់ជូន។
  • សម្រាប់អ្នកអភិវឌ្ឍន៍ Unity សូមមើលការណែនាំនេះ។
  • សម្រាប់អ្នកអភិវឌ្ឍន៍ Unreal មិនគាំទ្រមុខងារនេះនៅពេលនេះទេ។

4.1.5 Render Mask [មិនគាំទ្រមិនពិត]
គំនិតនៅទីនេះគឺស្រដៀងទៅនឹង 3.1.8 Render Mask ។

  • សម្រាប់អ្នកអភិវឌ្ឍន៍ដើម សូមប្រើ XrVisibilityMaskKHR ដើម្បីទទួលបាន Mesh ។ មុននឹងបង្ហាញឈុតនេះ ប្រើ Mesh នេះដើម្បីបញ្ចូលតម្លៃសតិបណ្ដោះអាសន្នជម្រៅ មុនពេលបង្ហាញឈុត។
  • សម្រាប់អ្នកអភិវឌ្ឍន៍ Unity មុខងារ Render Mask ត្រូវបានបើកតាមលំនាំដើមសម្រាប់ OpenGL ES ហើយអាចត្រូវបានបិទដោយប្រើកូដខាងក្រោម។ បច្ចុប្បន្ន Vulkan មិនគាំទ្រមុខងារនេះទេ។ //C# UnityEngine.XR.XRSettings.occlusionMaskScale = 0.0f;
  • សម្រាប់អ្នកអភិវឌ្ឍន៍ Unreal បច្ចុប្បន្នមិនគាំទ្រមុខងារ Render Mask ទេ។

4.2 មាតិកា MR
បច្ចុប្បន្ន OpenXR មិនគាំទ្រការកំណត់កម្រិត Passthrough Quality និង Frame Rate ទេ។ យើងនឹងបន្តបង្កើនប្រសិទ្ធភាព និងជួសជុលមុខងារ 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 is an anti-aliasing technique used to smooth out jagged edges, usually is accelerated through hardware, which incurs GPU performance cost. We recommend not setting MSAA higher than 2x because more hight value will consume more gpu usage.

  • សម្រាប់អ្នកអភិវឌ្ឍន៍ដើម MSAA OpenGL ES exsampលេអាចយោងទៅនេះ; MSAA Vulkan អតីតampឡឺអាចយោងទៅលើរឿងនេះ។
    Adreno GPU ផ្តល់នូវផ្នែកបន្ថែមដែលបង្កើនប្រសិទ្ធភាព MSAA ។
  • សម្រាប់អ្នកអភិវឌ្ឍន៍ Unity សូមមើល Guild នេះ។
  • For Unreal developer, refer to this guild. Unreal also has provide post processing anti-aliasing, refer to this guild.

5.3 ការផ្ទុក/ហាង GMEM
នៅក្នុងស្ថាបត្យកម្ម Adreno GPU មានលក្ខណៈពិសេសមួយដែលនៅពេលដែលចង Render Target ប្រសិនបើ Render Target មិនច្បាស់ ឬមិនត្រឹមត្រូវ រាល់ពេលដែល Render កើតឡើង តម្លៃនៅក្នុង Render Target ត្រូវបានផ្ទុកទៅក្នុង Graphics Memory ដែលត្រូវបានគេហៅថា GMEM Load ។ ប្រសិនបើតម្លៃពីមុនមិនត្រូវបានគេត្រូវការ សម្អាត ឬធ្វើឱ្យមិនត្រឹមត្រូវ ការបង្ហាញគោលដៅដែលបង្ហាញឱ្យឃើញ អាចជៀសវាងស្ថានភាពនេះ ដើម្បីកែលម្អដំណើរការ GPU ។
អ្នកអាចជៀសវាងការផ្ទុក GMEM ដោយប្រើវិធីសាស្រ្តខាងក្រោម។ នៅក្នុង OpenGL ES បន្ទាប់ពីការភ្ជាប់ FBO អ្នកអាចហៅទៅ glClear និង glClearDepth ដើម្បីសម្អាតពណ៌ ជម្រៅ និងស្តង់ស្តង់ ឬហៅទៅ glInvalidateFramebuffer ដើម្បីធ្វើឱ្យមានសុពលភាពនៃគោលដៅបង្ហាញដែលបានបញ្ជាក់។ នៅក្នុង Vulkan ការណែនាំបន្ថែមមិនចាំបាច់ទេ។ អ្នកអាចកំណត់យ៉ាងច្បាស់ថាតើត្រូវសម្អាតឯកសារភ្ជាប់មុនពេលប្រើនៅក្នុង VkAttachmentDescription.loadOp ។
ស្រដៀងគ្នានេះដែរ ការរក្សាទុកលទ្ធផលនៃ Tile Render ត្រឡប់ទៅ Main Memory ពី Graphics Memory ត្រូវបានគេហៅថា GMEM Store។ ប្រតិបត្តិការនេះមានតម្លៃថ្លៃសម្រាប់ 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
នៅពេលដែលការផ្ទុកស៊ីភីយូកាន់តែធ្ងន់ ដំណើរការផ្ទៃខាងក្រោយមួយចំនួនដែលខ្សែស្រឡាយមានអាទិភាពខ្ពស់ វាអាចរំខានដល់ការប្រតិបត្តិដើម។ យើងមិនអាចធានាបានថាកម្មវិធីមាតិកានឹងមិនត្រូវបានរំខានដោយខ្សែស្រឡាយផ្សេងទៀតទេ។
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 សូមមើលមុខងារកំណត់រចនាសម្ព័ន្ធខ្សែស្រឡាយ Android ។ ប្រសិនបើអ្នកកំពុងប្រើ VIVE Wave SDK យើងមានលក្ខណៈពិសេសមួយនៅក្នុង WaveXRSettings ដែលអនុញ្ញាតឱ្យអ្នកកែតម្រូវអាទិភាពដូចបង្ហាញក្នុងរូបភាព 5-5-2។ តម្លៃតូចជាងតំណាងឱ្យអាទិភាពខ្ពស់ជាង។

ការអនុវត្តការបង្ហាញ VIVE VR - រូបភាពទី 7

  • Unreal គ្មានវិធីសាស្រ្តដើម្បីផ្លាស់ប្តូរខ្សែស្រលាយហ្គេម ខ្សែបង្ហាញ និងអាទិភាពខ្សែស្រឡាយ RHI តាមរយៈការកំណត់ខាងក្រៅទេ លុះត្រាតែអ្នកកែប្រែលេខកូដម៉ាស៊ីន។

រក្សាសិទ្ធិ © 2024 HTC Corporation ។ រក្សាសិទ្ធិគ្រប់យ៉ាងនិមិត្តសញ្ញា VIVE

ឯកសារ/ធនធាន

ការអនុវត្ត​ការ​បង្ហាញ VIVE VR [pdf] ការណែនាំអ្នកប្រើប្រាស់
ការអនុវត្តការបង្ហាញ VR, ការសម្តែងការបង្ហាញ, ការអនុវត្ត

ឯកសារយោង

ទុកមតិយោបល់

អាសយដ្ឋានអ៊ីមែលរបស់អ្នកនឹងមិនត្រូវបានផ្សព្វផ្សាយទេ។ វាលដែលត្រូវការត្រូវបានសម្គាល់ *