
ປະສິດທິພາບການສະແດງຜົນ VR
Tunning ແລະການເພີ່ມປະສິດທິພາບ
ແນະນຳ
ການບັນລຸປະສົບການ VR ທີ່ດີທີ່ສຸດໃນຮາດແວທີ່ຈຳກັດຊັບພະຍາກອນແມ່ນກຸນແຈສຳຄັນໃນການສະໜອງປະສົບການຂອງຜູ້ໃຊ້ທີ່ລຽບງ່າຍ ແລະສະດວກສະບາຍ. ຖ້າອັດຕາເຟຣມຂອງການສະແດງເນື້ອຫາຫຼຸດລົງຫຼືບໍ່ຄົງທີ່ຕໍ່າກວ່າອັດຕາການໂຫຼດຫນ້າຈໍຄືນຂອງອຸປະກອນ, ມັນຈະນໍາໄປສູ່ການຕັດກອບແລະ stutting, ພະຍາດການເຄື່ອນໄຫວ, ແລະອື່ນໆ. ສຸດທ້າຍສົ່ງຜົນກະທົບທາງລົບຕໍ່ປະສົບການຂອງຜູ້ໃຊ້. ດັ່ງນັ້ນ, ການເພີ່ມປະສິດທິພາບເນື້ອຫາແມ່ນມີຄວາມສໍາຄັນຫຼາຍສໍາລັບການຮັບປະກັນປະສົບການທີ່ມີຄວາມສຸກ.
ກ່ອນທີ່ຈະເລີ່ມການປັບປະສິດທິພາບ, ມັນເປັນສິ່ງສໍາຄັນທີ່ຈະເຂົ້າໃຈວ່າຂໍ້ບົກພ່ອງຂອງການປະຕິບັດແມ່ນຢູ່ບ່ອນໃດເພື່ອຫຼີກເວັ້ນການປັບປະສິດທິພາບ. ເອກະສານນີ້ຖືກອອກແບບມາເພື່ອຊ່ວຍໃຫ້ຜູ້ພັດທະນາກໍານົດຂໍ້ບົກຜ່ອງດ້ານການປະຕິບັດແລະສະເຫນີວິທີແກ້ໄຂເພື່ອແກ້ໄຂບັນຫາການປະຕິບັດການສະແດງຜົນ.
ເອກະສານໄດ້ຖືກຈັດເປັນພາກສ່ວນດັ່ງຕໍ່ໄປນີ້:
- ບົດທີ 2: ກໍານົດຄໍຂວດ – ພາກນີ້ຊ່ວຍນັກພັດທະນາໃນການກໍານົດບ່ອນທີ່ຄໍຂວດຢູ່.
- ບົດທີ 3 ແລະ 4: ການຕັ້ງຄ່າ VIVE Wave ແລະ VIVE OpenXR - ພາກສ່ວນເຫຼົ່ານີ້ອະທິບາຍການຕັ້ງຄ່າສະເພາະທີ່ອາດຈະສົ່ງຜົນກະທົບຕໍ່ການເຮັດວຽກຂອງ CPU/GPU ສໍາລັບແອັບ VIVE Wave ແລະ OpenXR. ນັກພັດທະນາສາມາດທົດລອງການເປີດຫຼືປິດຄຸນສົມບັດເຫຼົ່ານີ້ໂດຍອີງໃສ່ຂໍ້ບົກຜ່ອງດ້ານການປະຕິບັດທີ່ພົບເພື່ອກໍານົດວ່າມີການປັບປຸງໃດໆ.
- ບົດທີ 5: ການເພີ່ມປະສິດທິພາບທົ່ວໄປ - ພາກນີ້ແບ່ງປັນບາງການປະຕິບັດການເພີ່ມປະສິດທິພາບທົ່ວໄປ ແລະປະສົບການ.
ກໍານົດຄໍຂວດ
ເມື່ອ HMD ກໍາລັງເຄື່ອນຍ້າຍ, ຖ້າແອັບ VR/MR ມີອາການສັ່ນສະເທືອນຂອງກອບຫຼືຂອບສີດໍາ, ແລະອື່ນໆ, ມັນມັກຈະເກີດຈາກບັນຫາການປະຕິບັດທີ່ບໍ່ດີ. ໂດຍປົກກະຕິ, ບັນຫາການປະຕິບັດສາມາດແບ່ງອອກເປັນ 2 ປະເພດ: CPU-bound ຫຼື GPU-bound. ເຂົ້າໃຈວ່າປະເພດຂອງການຜູກມັດສໍາລັບ app ຂອງທ່ານແມ່ນສໍາຄັນຫຼາຍໃນຕອນເລີ່ມຕົ້ນເພື່ອຫຼີກເວັ້ນການ tunning ທີ່ບໍ່ມີປະສິດທິພາບ.
ໃນບົດນີ້, ພວກເຮົາສະຫນອງຂັ້ນຕອນງ່າຍໆທີ່ຊ່ວຍໃຫ້ທ່ານສາມາດກໍານົດໄດ້ໄວວ່າບັນຫາການປະຕິບັດຢູ່ໃສ.
2.1 ກວດສອບການໃຫ້ເນື້ອຫາ FPS
ຫນ້າທໍາອິດ, ພວກເຮົາເລີ່ມຕົ້ນໂດຍການກວດສອບ FPS ເນື້ອໃນທີ່ເປັນຈໍານວນຂອງກອບເນື້ອໃນ con renders ຕໍ່ວິນາທີ. ມັນຄວນຈະຖືກຮັກສາໄວ້ກັບກອບການສະແດງຜົນແລະຮັກສາຄວາມຫມັ້ນຄົງ. ຖ້າບໍ່ດັ່ງນັ້ນ, ມັນອາດຈະເຮັດໃຫ້ເກີດການສັ່ນສະເທືອນຂອງກອບ.
ຖ້າແອັບພລິເຄຊັນ 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 present” ແລະ “L present” ສະແດງເຖິງການສະແດງ framerate.
ບາງຄັ້ງ, ເນື້ອຫາ 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
ດັ່ງທີ່ເຈົ້າເຫັນໃນຜົນບັນທຶກຂ້າງເທິງ, ການໃຊ້ CPU ແມ່ນ 27% ແລະການໃຊ້ GPU ແມ່ນ 72% ຖ້າ Wave SDK ເວີຊັ່ນຂອງເຈົ້າຕ່ຳກວ່າ 6.0.0, ແນະນຳໃຫ້ອັບເກຣດເປັນເວີຊັນຫຼ້າສຸດເພື່ອເພີ່ມປະສິດທິພາບການສະແດງຜົນ ແລະ ການເພີ່ມປະສິດທິພາບອື່ນໆ.
ສໍາລັບແອັບຯ VIVE OpenXR, ທ່ານສາມາດນໍາໃຊ້ຄໍາສັ່ງຕໍ່ໄປນີ້ເພື່ອກວດສອບການໃຊ້ CPU ແລະ GPU.
# ໃນ linux/ubuntu
$ adb logcat | grep CPU_USAGE
# ໃນ powershell
$ adb logcat | ເລືອກ-String -Pattern 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 (ພາກ 3.1.2, ພາກ 4.1.2) ເພື່ອເບິ່ງວ່າມັນປັບປຸງ FPS. ຖ້າການປັບຕົວນີ້ເຮັດໃຫ້ດີຂຶ້ນ
ການປະຕິບັດ, ພວກເຮົາສາມາດສະຫຼຸບໄດ້ວ່າບັນຫາແມ່ນຜູກມັດ GPU ແລະສຸມໃສ່ຄວາມພະຍາຍາມເພີ່ມປະສິດທິພາບຂອງພວກເຮົາຕາມຄວາມເຫມາະສົມ.
ໃນທາງກົງກັນຂ້າມ, ຖ້າການປັບຄວາມລະອຽດຂອງ Eyebuffer ບໍ່ໄດ້ສົ່ງຜົນໃຫ້ມີການປັບປຸງປະສິດທິພາບທີ່ເຫັນໄດ້ຊັດ, ຄໍຂວດແມ່ນອາດຈະເປັນການຜູກມັດ CPU, ແລະພວກເຮົາຄວນສຸມໃສ່ການເພີ່ມປະສິດທິພາບຂອງ CPU.
ມັນຍັງເປັນໄປໄດ້ວ່າແອັບພລິເຄຊັນແມ່ນທັງ CPU-bound ແລະ GPU-bound ພ້ອມໆກັນ. ໃນກໍລະນີດັ່ງກ່າວ, ຄວາມພະຍາຍາມເພີ່ມປະສິດທິພາບຄວນຈະຖືກນໍາໃຊ້ກັບທັງ CPU ແລະ GPU ເພື່ອບັນລຸການປັບປຸງປະສິດທິພາບທີ່ສົມດູນ.
2.3 GPU-bound
ເມື່ອແອັບ VR ຖືກຜູກມັດ GPU, ມັນ ໝາຍ ຄວາມວ່າ GPU ເປັນຂໍ້ບົກຜ່ອງຕົ້ນຕໍ, ແລະມັນບໍ່ສາມາດຕິດຕາມຄວາມຕ້ອງການການສະແດງຜົນຂອງແອັບພລິເຄຊັນ. ເພື່ອຫຼຸດຜ່ອນບັນຫາທີ່ຜູກມັດ GPU, ພິຈາລະນາຄໍາແນະນໍາຕໍ່ໄປນີ້:
ທໍາອິດ, ໃຊ້ເຄື່ອງມືການສ້າງໂປຣໄຟລ໌ເຊັ່ນ RenderDoc ຫຼື Game Engine profiler (Unity Profiler, Unreal Insights) ເພື່ອວິເຄາະບ່ອນທີ່ GPU ໃຊ້ເວລາສ່ວນໃຫຍ່. ກໍານົດການດໍາເນີນງານທີ່ມີລາຄາຖືກທີ່ສຸດແລະສຸມໃສ່ການເພີ່ມປະສິດທິພາບພວກມັນ.
ສໍາລັບຜູ້ພັດທະນາພື້ນເມືອງ, ທ່ານສາມາດນໍາໃຊ້ RenderDoc ເພື່ອກໍານົດວ່າການດຶງສາຍໃດເຮັດໃຫ້ເກີດການໂຫຼດ GPU ຫຼາຍເກີນໄປ.
ສໍາລັບຜູ້ພັດທະນາ Unity, ທ່ານສາມາດປະຕິບັດຕາມ Unity ເອກະສານນີ້ຫຼືໃຊ້ RenderDoc ເພື່ອວິເຄາະບັນຫາການປະຕິບັດການສະແດງຜົນ, ແລະປະຕິບັດຕາມເອກະສານການເພີ່ມປະສິດທິພາບຮູບພາບ Unity ສໍາລັບຄໍາແນະນໍາເພື່ອເພີ່ມປະສິດທິພາບຄໍາຮ້ອງສະຫມັກຂອງທ່ານ.
ສໍາລັບນັກພັດທະນາ Unreal, ທ່ານສາມາດນໍາໃຊ້ GPU Visualizer ຫຼືໃຊ້ RenderDoc ເພື່ອວິເຄາະບັນຫາການປະຕິບັດການສະແດງຜົນ, ແລະປະຕິບັດຕາມຄໍາແນະນໍາການປະຕິບັດ Unreal ສໍາລັບຄໍາແນະນໍາເພື່ອເພີ່ມປະສິດທິພາບຄໍາຮ້ອງສະຫມັກຂອງທ່ານ.
ອັນທີສອງ, ທ່ານຍັງສາມາດລອງປັບຄຸນສົມບັດຂອງ Wave ຫຼືການຕັ້ງຄ່າບາງຢ່າງເພື່ອຫຼຸດຜ່ອນການໂຫຼດ GPU.
- ກໍານົດອັດຕາການໂຫຼດຫນ້າຈໍຄືນຊ້າລົງ (ພາກ 3.1.1, ພາກ 4.1.1)
- ປັບຄວາມລະອຽດ Eyebuffer (ພາກ 3.1.2, ພາກ 4.1.2), 14.1.1)
- ພະຍາຍາມເປີດໃຊ້ Foveation (ພາກ 3.1.4, ພາກ 4.1.4).
ຖ້າແອັບຯຂອງທ່ານເປັນແອັບຯ MR, ທ່ານສາມາດປັບການຕັ້ງຄ່າ Passthrough ໄດ້ເຊັ່ນກັນ.
- ປັບຄຸນນະພາບຮູບພາບ Passthrough ຕ່ໍາກວ່າ. (ພາກ 3.2.1)
- ປັບຄ່າ Passthrough Framerate ຊ້າລົງ. (ພາກ 3.2.2).
ສໍາລັບການຕັ້ງຄ່າອື່ນໆເພີ່ມເຕີມກ່ຽວກັບປະສິດທິພາບ GPU, ທ່ານສາມາດອ້າງອີງໃນບົດທີ 2.6.
2.4 CPU-bound
ເມື່ອແອັບ VR ຖືກຜູກມັດ CPU, ມັນ ໝາຍ ຄວາມວ່າ CPU ເປັນຂໍ້ບົກຜ່ອງຕົ້ນຕໍ, ພິຈາລະນາຂໍ້ສະ ເໜີ ແນະຕໍ່ໄປນີ້:
ທໍາອິດ, ໃຊ້ເຄື່ອງມືການສ້າງໂປຣໄຟລ໌ເຊັ່ນ Systrace ຫຼື Game Engine profiler (Unity Profiler, Unreal Insights) ເພື່ອວິເຄາະແລະກໍານົດວ່າສ່ວນໃດຂອງລະຫັດຂອງທ່ານແມ່ນໃຊ້ຊັບພະຍາກອນ CPU ຫຼາຍທີ່ສຸດ. ສຸມໃສ່ການເພີ່ມປະສິດທິພາບພື້ນທີ່ເຫຼົ່ານີ້ແລະ refactor ສູດການຄິດໄລ່ທີ່ເຂັ້ມຂຸ້ນຂອງຄອມພິວເຕີ້ເພື່ອຫຼຸດຜ່ອນການໂຫຼດ CPU.
- ສໍາລັບນັກພັດທະນາພື້ນເມືອງ, ທ່ານສາມາດນໍາໃຊ້ Systrace ເພື່ອສົ່ງເສີມfiler ໂຄງການຂອງທ່ານ.
- ສໍາລັບນັກພັດທະນາ Unity, ທ່ານສາມາດນໍາໃຊ້ CPU Usage Profiler ໂມດູນເພື່ອຊອກຫາບັນຫາການປະຕິບັດ CPU.
- ສໍາລັບນັກພັດທະນາ Unreal, ທ່ານສາມາດນໍາໃຊ້ Insights ຂອງ Unreal ເພື່ອຊອກຫາບັນຫາການປະຕິບັດ CPU.
ອັນທີສອງ, ທ່ານຍັງສາມາດລອງປັບຄຸນສົມບັດຂອງ Wave ຫຼືການຕັ້ງຄ່າບາງຢ່າງເພື່ອຫຼຸດຜ່ອນການໂຫຼດ GPU.
- ກໍານົດອັດຕາການໂຫຼດຫນ້າຈໍຄືນຊ້າລົງ (ພາກ 3.1.1, ພາກ 4.1.1)
- ໃຊ້ Multi-View ການສະແດງຜົນ (ພາກ 3.1.4, ພາກ 4.1.4)
ຖ້າແອັບຯຂອງທ່ານເປັນແອັບຯ MR, ທ່ານສາມາດປັບການຕັ້ງຄ່າ Passthrough ໄດ້ເຊັ່ນກັນ.
- ປັບຄ່າ Passthrough Framerate ຊ້າລົງ (ພາກ 3.2.2).
ສໍາລັບການຕັ້ງຄ່າອື່ນໆເພີ່ມເຕີມກ່ຽວກັບປະສິດທິພາບ CPU, ທ່ານສາມາດອ້າງອີງໃນບົດທີ 2.6.
2.5 ບົດສະຫຼຸບ
ສຸດທ້າຍ, ພວກເຮົາໄດ້ຈັດຂັ້ນຕອນການກວດສອບປະສິດທິພາບຂ້າງເທິງນີ້ເຂົ້າໄປໃນຮູບ 2-5-1. ເລີ່ມຕົ້ນໂດຍການກວດສອບ FPS ຂອງເນື້ອຫາ. ຖ້າມັນຕໍ່າກວ່າອັດຕາເຟຣມສະແດງຜົນຫຼືບໍ່ຄົງທີ່, ຫຼັງຈາກນັ້ນໃຫ້ວິເຄາະການໃຊ້ GPU/CPU ເພື່ອກໍານົດວ່າມັນເປັນ GPU-bound ຫຼື CPUbound. ສຸດທ້າຍ, ໃຊ້ profiler ເພື່ອກໍານົດບັນຫາການປະຕິບັດທີ່ອາດຈະເກີດຂຶ້ນຫຼືປັບຄຸນສົມບັດຂອງ Wave ຫຼືການຕັ້ງຄ່າເພື່ອເພີ່ມປະສິດທິພາບຂອງ CPU.

2.6 ການອ້າງອີງດ່ວນການຕັ້ງຄ່າທີ່ສາມາດປັບປຸງການໂຫຼດ CPU/GPU
ບອກການຕັ້ງຄ່າຂອງ SDK ທີ່ກ່ຽວຂ້ອງກັບການໂຫຼດ CPU/GPU ດັ່ງລຸ່ມນີ້. ທ່ານສາມາດອີງໃສ່ຄໍຂວດຂອງແອັບຯເພື່ອກວດເບິ່ງການຕັ້ງຄ່າການເພີ່ມປະສິດທິພາບທີ່ກ່ຽວຂ້ອງ.
ກ່ຽວຂ້ອງກັບ CPU:
- ການຕັ້ງຄ່າ VIVE Wave SDK
o ເນື້ອໃນ VR
▪ 3.1.1 ອັດຕາການໂຫຼດຫນ້າຈໍຄືນ
▪ 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 ອັດຕາການໂຫຼດຫນ້າຈໍຄືນ
▪ 4.1.4 Multi-View ກຳລັງສະແດງຜົນ - ການເພີ່ມປະສິດທິພາບທົ່ວໄປ
o 5.5 CPU Spike
ກ່ຽວຂ້ອງກັບ GPU:
- ການຕັ້ງຄ່າ VIVE Wave SDK
o ເນື້ອໃນ VR
▪ 3.1.1 ອັດຕາການໂຫຼດຫນ້າຈໍຄືນ
▪ 3.1.2 ການແກ້ໄຂ Eyebuffer
▪ 3.1.3 Multi-View ກຳລັງສະແດງຜົນ
▪ 3.1.4 ການລ້ຽງສັດ
▪ 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 ປັບຄຸນນະພາບຜ່ານ
▪ 3.2.2 ປັບຄ່າ Passthrough Frame Rate - ການຕັ້ງຄ່າ VIVE OpenXR SDK
o ເນື້ອໃນ VR
▪ 4.1.1 ອັດຕາການໂຫຼດຫນ້າຈໍຄືນ
▪ 4.1.2 ການແກ້ໄຂ Eyebuffer
▪ 4.1.3 Multi-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 Load/Store
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 ແມ່ນຂະຫນາດໂຄງສ້າງທີ່ເນື້ອຫາ App ທີ່ຈະຖືກສະແດງ, ໂຄງສ້າງທີ່ສະແດງຈະຖືກສົ່ງກັບເວລາແລ່ນເພື່ອເຮັດຂະບວນການປະກາດແລະນໍາສະເຫນີຢູ່ໃນຈໍສະແດງຜົນ HMD.
ໃນຂະນະທີ່ຂະຫນາດ 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.
- ສໍາລັບນັກພັດທະນາພື້ນເມືອງ, ອ້າງອີງ WVR_ObtainTextureQueue. ເມື່ອປັບຂະຫນາດ, ທ່ານຄວນຄູນຄວາມກວ້າງແລະຄວາມສູງໂດຍອັດຕາສ່ວນ.
- ສໍາລັບນັກພັດທະນາ Unity, ເບິ່ງ WaveXRSettings.
ອີກທາງເລືອກ, ທ່ານສາມາດເຮັດການປ່ຽນແປງຜ່ານລະຫັດເປັນ belwoe.
XRSettings.eyeTextureResolutionScale =ResolutionScaleValue; // C# - ສໍາລັບນັກພັດທະນາ Unreal, ເບິ່ງ SetPixelDensity.
3.1.3 ຫຼາຍ-View ກຳລັງສະແດງຜົນ
ໃນການສະແດງແບບດັ້ງເດີມ, ພວກເຮົາແຕ້ມຕາຊ້າຍແລະຂວາແຍກຕ່າງຫາກ, ເຊິ່ງຮຽກຮ້ອງໃຫ້ມີການແຕ້ມຮູບສອງຢ່າງສໍາລັບ scene ດຽວກັນ. ຫຼາຍView Rendering ແກ້ໄຂບັນຫານີ້ໂດຍການດໍາເນີນການພຽງແຕ່ຫນຶ່ງ draw call.
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 ການລ້ຽງສັດ
ການສະແດງຜົນແບບໂຟວີດຖືກອອກແບບຕົ້ນຕໍເພື່ອຫຼຸດຜ່ອນການໂຫຼດ GPU. ມັນຫຼຸດຜ່ອນລາຍລະອຽດຂອງກອບໃນອຸປະກອນຂ້າງຄຽງຂອງຈໍສະແດງຜົນແລະຮັກສາລາຍລະອຽດທີ່ມີຄວາມລະອຽດສູງຢູ່ໃນໃຈກາງຂອງພາກສະຫນາມ. view. ຖ້າ App ມີບັນຫາການຜູກມັດ GPU, ທ່ານສາມາດລອງ eanbling Foveation rendering.

ມີບາງສິ່ງບາງຢ່າງທີ່ຕ້ອງສັງເກດເຫັນໃນຂະນະທີ່ໃຊ້ foveation:
➢ ໂດຍທົ່ວໄປແລ້ວຜູ້ໃຊ້ບໍ່ສັງເກດເຫັນລາຍລະອຽດທີ່ຫຼຸດລົງໃນພື້ນທີ່ຂ້າງຄຽງທີ່ນຳໃຊ້ໂໝດ foveation ເລີ່ມຕົ້ນ. ແຕ່ຖ້າຫາກວ່າຄຸນນະພາບ peripheral ຂອງ foveation ຖືກກໍານົດຕ່ໍາເກີນໄປ, ມັນສາມາດກາຍເປັນທີ່ສັງເກດເຫັນສໍາລັບຜູ້ໃຊ້.
➢ ຜົນກະທົບຂອງ foveation ອາດຈະເຫັນໄດ້ຊັດເຈນກວ່າກັບວັດສະດຸບາງຢ່າງຂອງໂຄງສ້າງ, ເຊິ່ງສາມາດດຶງດູດຄວາມສົນໃຈຂອງຜູ້ໃຊ້ໄດ້. ນັກພັດທະນາຄວນຮູ້ເລື່ອງນີ້ແລະປະເມີນມັນຕາມຄວາມເຫມາະສົມ.
➢ ການເປີດໃຊ້ຄຸນສົມບັດການສະແດງຜົນແບບ foveated ມີຄ່າໃຊ້ຈ່າຍປະສິດທິພາບ GPU ຄົງທີ່, ເຊິ່ງສາມາດແຕກຕ່າງກັນລະຫວ່າງ 1% ຫາ 6% ຂຶ້ນກັບຂະຫນາດຂອງ buffer ຕາ. ເມື່ອໃຊ້ shader ງ່າຍໆໃນ scene, ປະສິດທິພາບທີ່ເພີ່ມຂຶ້ນຈາກການປະຫຍັດຊັບພະຍາກອນອາດຈະຕ່ໍາກວ່າຄ່າໃຊ້ຈ່າຍໃນການປະຕິບັດ GPU ຄົງທີ່, ເຊິ່ງເຮັດໃຫ້ການປະຕິບັດຫຼຸດລົງ.
- ສໍາລັບນັກພັດທະນາພື້ນເມືອງ, ເບິ່ງຄູ່ມືນີ້.
- ສໍາລັບນັກພັດທະນາ Unity, ເບິ່ງຄູ່ມືນີ້. ໂດຍສະເພາະ, ເມື່ອທ່ານເປີດໃຊ້ການປຸງແຕ່ງຫຼັງການປຸງແຕ່ງຫຼື HDR, foveation ບໍ່ສາມາດຖືກນໍາໃຊ້ຢ່າງເຕັມສ່ວນ. ເນື່ອງຈາກວ່າ Unity ຈະ render ວັດຖຸໃສ່ໂຄງສ້າງ render ທີ່ສ້າງຂຶ້ນຂອງຕົນເອງ, ແທນທີ່ຈະເປັນໂຄງສ້າງ render ຂອງ runtime ທີ່ສ້າງຂຶ້ນໃນປະຈຸບັນທີ່ສະຫນັບສະຫນູນ foveation.
- ສໍາລັບນັກພັດທະນາ Unreal, ເບິ່ງຄູ່ມືນີ້. ໂດຍສະເພາະ, foveation ບໍ່ສາມາດຖືກນໍາໃຊ້ຢ່າງເຕັມສ່ວນໃນ Multi-View ການສະແດງຜົນ, ເພາະວ່າ Unreal ບໍ່ສາມາດສະແດງວັດຖຸໂດຍກົງໃສ່ໂຄງສ້າງ render ທີ່ສ້າງຂຶ້ນໂດຍ runtime ທີ່ຮອງຮັບ foveation.
3.1.5 ການປັບປຸງຄວາມຄົມຊັດຂອງກອບ (FSE)
FSE ໃຫ້ຜົນການສະແດງຜົນທີ່ຄົມຊັດໂດຍການແນະນໍາການກັ່ນຕອງ sharpen, ມັນສາມາດເຮັດໃຫ້ເນື້ອຫາມີຄວາມຊັດເຈນຫຼາຍແລະເປັນປະໂຫຍດຫຼາຍສໍາລັບການປັບປຸງຄວາມຊັດເຈນຂອງຂໍ້ຄວາມໃນ scene. ຖ້າ App ມີບັນຫາຜູກມັດ GPU, ທ່ານສາມາດພິຈາລະນາປິດການໃຊ້ງານ FSE ຖ້າມັນບໍ່ຈໍາເປັນ.

- ສໍາລັບນັກພັດທະນາພື້ນເມືອງ, ເບິ່ງຄູ່ມືນີ້.
- ສໍາລັບນັກພັດທະນາ Unity, ເບິ່ງຄູ່ມືນີ້.
- ສໍາລັບນັກພັດທະນາ Unreal, ເບິ່ງຄູ່ມືນີ້.
3.1.6 ຄຸນນະພາບການປັບຕົວ
ເພື່ອປະຢັດແບັດເຕີຣີ ແລະຮັກສາປະສິດທິພາບການສະແດງຜົນຂອງອຸປະກອນ, ຄຸນສົມບັດນີ້ຈະປັບລະດັບປະສິດທິພາບຂອງໂມງ CPU/GPU ໂດຍອັດຕະໂນມັດໂດຍອີງໃສ່ການນຳໃຊ້ຂອງມັນ. ນອກຈາກນັ້ນ, ຍຸດທະສາດອື່ນໆສາມາດຖືກປະຕິບັດເພື່ອເພີ່ມປະສິດຕິພາບ, ເຊັ່ນ: ເປີດ / ປິດການໃຊ້ງານອັດຕະໂນມັດ Foveation ຫຼືເນື້ອຫາສາມາດປັບຕົວມັນເອງຖ້າໄດ້ຮັບເຫດການໂຫຼດສູງ / ຕ່ໍາ.
- ສໍາລັບນັກພັດທະນາພື້ນເມືອງ, ເບິ່ງຄູ່ມືນີ້.
- ສໍາລັບນັກພັດທະນາ Unity, ເບິ່ງຄູ່ມືນີ້. ໃນ plugin Unity ຂອງພວກເຮົາ, ຂະຫນາດ buffer ຕາສາມາດປັບໄດ້ໂດຍອັດຕະໂນມັດໂດຍອີງໃສ່ການປະຕິບັດໃນປະຈຸບັນ; ຂະໜາດຂໍ້ຄວາມຈະກັ່ນຕອງຄ່າຂະໜາດທີ່ນ້ອຍເກີນໄປໃນລາຍການຄວາມລະອຽດອອກ. ພວກເຮົາແນະນໍາຂໍ້ຄວາມທີ່ມີຂະຫນາດຢ່າງຫນ້ອຍ 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 [ບໍ່ຮອງຮັບ Unreal]
pixels ຢູ່ຂອບກາຍເປັນເກືອບເບິ່ງບໍ່ເຫັນຫຼັງຈາກການບິດເບືອນ, ຫນ້າກາກການສະແດງຜົນປັບປຸງແກ້ໄຂຄ່າຂອງກັນຄວາມເລິກຂອງ pixels ທີ່ເບິ່ງບໍ່ເຫັນເຫຼົ່ານີ້. ຖ້າທ່ານເປີດໃຊ້ການທົດສອບຄວາມເລິກ, ເນື່ອງຈາກຕົ້ນ-z, pixels ທີ່ເບິ່ງບໍ່ເຫັນເຫຼົ່ານີ້ຈະບໍ່ຖືກສະແດງ, ດັ່ງນັ້ນການຫຼຸດຜ່ອນການໂຫຼດ GPU. ຄຸນສົມບັດນີ້ມີປະໂຫຍດຖ້າມີວັດຖຸສະແດງຜົນທີ່ໜັກໜ່ວງຢູ່ໃນພື້ນທີ່ເບິ່ງບໍ່ເຫັນເຫຼົ່ານີ້; ຖ້າບໍ່ດັ່ງນັ້ນ, ຖ້າຫາກວ່າບໍ່ມີການ rendering ວັດຖຸຢູ່ໃນພື້ນທີ່ເຫຼົ່ານີ້, ແນະນໍາໃຫ້ປິດການທໍາງານເພາະວ່າມັນຈະກິນການນໍາໃຊ້ GPU ຂະຫນາດນ້ອຍ ..
- ສໍາລັບນັກພັດທະນາພື້ນເມືອງ, ເບິ່ງຄູ່ມືນີ້. ທ່ານຕ້ອງຜູກມັດຄວາມເລິກ buffer ກ່ອນທີ່ຈະໂທຫາ RenderMask; ຖ້າບໍ່ດັ່ງນັ້ນ, ມັນຈະບໍ່ມີປະສິດຕິຜົນ.
- ສໍາລັບນັກພັດທະນາ Unity, ເບິ່ງຄູ່ມືນີ້.
- ສຳລັບນັກພັດທະນາ Unreal, ປະຈຸບັນບໍ່ຮອງຮັບຄຸນສົມບັດ Render Mask.
3.2 ເນື້ອໃນ MR
3.2.1 ປັບຄຸນນະພາບຜ່ານ
ມີ 3 ລະດັບສໍາລັບຄຸນນະພາບຮູບພາບ passthrough:
➢ WVR_PassthroughImageQuality_DefaultMode – ເຫມາະສໍາລັບເນື້ອຫາ MR ໂດຍບໍ່ມີຄວາມຕ້ອງການສະເພາະ.
➢ WVR_PassthroughImageQuality_PerformanceMode – ເຫມາະສໍາລັບເນື້ອຫາ MR ທີ່ຕ້ອງການຊັບພະຍາກອນ GPU ເພີ່ມເຕີມສໍາລັບການສະແດງພາບສະເໝືອນ.
➢ WVR_PassthroughImageQuality_QualityMode – ເຫມາະສໍາລັບເນື້ອຫາ MR ທີ່ອະນຸຍາດໃຫ້ຜູ້ໃຊ້ສາມາດເບິ່ງເຫັນສະພາບແວດລ້ອມອ້ອມຂ້າງໄດ້ຢ່າງຊັດເຈນ, ແຕ່ scene virtual ຂອງເນື້ອຫາຈະຕ້ອງມີການປັບລະອຽດສໍາລັບການປະຕິບັດ.
ທ່ານສາມາດປັບຄຸນນະພາບ Passthrough ເປັນ PerformanceMode ເພື່ອຫຼຸດຜ່ອນການໃຊ້ GPU.
- ສໍາລັບຜູ້ພັດທະນາພື້ນເມືອງ, Uunity ຫຼື Unreal, ເບິ່ງຄູ່ມືນີ້.
3.2.2 ປັບອັດຕາເຟຣມ Passthrough
ເຊັ່ນດຽວກັນກັບອັດຕາການໂຫຼດຫນ້າຈໍຄືນຂອງຈໍສະແດງຜົນ, ອັດຕາເຟຣມ Passthrough ທີ່ສູງຂຶ້ນສະເຫນີພາບທີ່ລຽບກວ່າ, ແຕ່ມາກັບຄ່າໃຊ້ຈ່າຍຂອງການໂຫຼດລະບົບທີ່ເພີ່ມຂຶ້ນ. ໃນທາງກົງກັນຂ້າມ, ອັດຕາການໂຫຼດຫນ້າຈໍຄືນຕ່ໍາຈະຫຼຸດຜ່ອນການໂຫຼດຂອງລະບົບ, ແຕ່ເຮັດໃຫ້ການເບິ່ງເຫັນກ້ຽງຫນ້ອຍລົງ. ມີ 2 ໂຫມດຂອງກອບ passthrough: Boost ແລະ Normal.
- ສໍາລັບນັກພັດທະນາພື້ນເມືອງ, ສາມາດປັບຄຸນນະພາບ passthrough ໂດຍໃຊ້ WVR_SetPassthroughImageRate.
- ສໍາລັບນັກພັດທະນາ Unity, ສາມາດປ່ຽນຜ່ານລະຫັດ, exampການຕັ້ງຄ່າມີດັ່ງນີ້ // C#
Interop.WVR_SetPassthroughImageQuality(WVR_PassthroughImageQuality.PerformanceMode); - ສໍາລັບຜູ້ພັດທະນາ Unreal, ວິທີການຕັ້ງເບິ່ງ blueprint node ໃນຮູບ 3-2-2.

ການຕັ້ງຄ່າ 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 ອັດຕາການໂຫຼດຫນ້າຈໍຄືນ.
- ສໍາລັບນັກພັດທະນາພື້ນເມືອງ, ເບິ່ງ XrEventDataDisplayRefreshRateChangedFB.
- ສໍາລັບນັກພັດທະນາ Unity, ເບິ່ງຄູ່ມືນີ້.
- ສໍາລັບນັກພັດທະນາ Unreal, ເບິ່ງຄູ່ມືນີ້.
4.1.2 ການແກ້ໄຂ Eyebuffer
ແນວຄວາມຄິດໃນທີ່ນີ້ແມ່ນຄ້າຍຄືກັນກັບ 3.1.2 ການແກ້ໄຂ Eyebuffer. ພວກເຮົາແນະນໍາໃຫ້ບໍ່ຫຼຸດຜ່ອນປັດໄຈຂະຫນາດຕ່ໍາກວ່າ 0.7, ເນື່ອງຈາກວ່ານີ້ອາດຈະເຮັດໃຫ້ຄຸນນະພາບສາຍຕາທີ່ຍອມຮັບບໍ່ໄດ້.
- ສໍາລັບນັກພັດທະນາພື້ນເມືອງ, ເບິ່ງ xrCreateSwapchain. ເມື່ອປັບຂະຫນາດ, ທ່ານຄວນຄູນຄວາມກວ້າງແລະຄວາມສູງໂດຍອັດຕາສ່ວນ. ,
- ສໍາລັບນັກພັດທະນາ Unity, ອ້າງອີງເຖິງຕົວຢ່າງຕໍ່ໄປນີ້ample // 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 [ບໍ່ຮອງຮັບ Unreal]
ແນວຄວາມຄິດຢູ່ທີ່ນີ້ແມ່ນຄ້າຍຄືກັນກັບ 3.1.4 Foveation. ການສະແດງຜົນແບບໂຟວີດຖືກອອກແບບຕົ້ນຕໍເພື່ອຫຼຸດຜ່ອນການໂຫຼດ GPU ແຕ່ການເຮັດໃຫ້ມັນມີຄ່າໃຊ້ຈ່າຍໃນການປະຕິບັດ GPU ຄົງທີ່ແລະຖ້າ foveation ຖືກກໍານົດຕໍ່າເກີນໄປແລະວັດສະດຸຫຼືໂຄງສ້າງບາງຢ່າງຖືກນໍາໃຊ້, ມັນສາມາດກາຍເປັນຫຼາຍ.
ສັງເກດເຫັນຜູ້ໃຊ້. ດັ່ງນັ້ນ, ຄວນເປີດຫຼືປິດຄຸນສົມບັດໂດຍອີງໃສ່ຄວາມຕ້ອງການສະເພາະຂອງທ່ານແລະພິຈາລະນາການປະຕິບັດໃນປັດຈຸບັນ, ຟັງຊັນ Foveated ແມ່ນສະຫນັບສະຫນູນພຽງແຕ່ໃນ OpenGL ES ໃນ VIVE OpenXR SDK.
- ສໍາລັບນັກພັດທະນາພື້ນເມືອງ, ຄຸນສົມບັດນີ້ມີໃຫ້, ແຕ່ໃນປັດຈຸບັນ, ບໍ່ມີ examples ແມ່ນສະຫນອງໃຫ້.
- ສໍາລັບນັກພັດທະນາ Unity, ເບິ່ງຄູ່ມືນີ້.
- ສຳລັບນັກພັດທະນາ Unreal, ບໍ່ຮອງຮັບຄຸນສົມບັດນີ້ໃນເວລານີ້.
4.1.5 Render Mask [ບໍ່ຮອງຮັບ Unreal]
ແນວຄວາມຄິດຢູ່ທີ່ນີ້ແມ່ນຄ້າຍຄືກັນກັບ 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 XR Elite ແມ່ນສະແດງຮູບ 5-1-2:

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 exsample ສາມາດອ້າງເຖິງນີ້; MSAA Vulkan exampler ສາມາດອ້າງອີງເຖິງສິ່ງນີ້.
Adreno GPU ສະຫນອງການຂະຫຍາຍທີ່ເພີ່ມປະສິດທິພາບ MSAA. - ສໍາລັບນັກພັດທະນາ Unity, ອ້າງອີງເຖິງເອກະສານອ້າງນີ້.
- For Unreal developer, refer to this guild. Unreal also has provide post processing anti-aliasing, refer to this guild.
5.3 GMEM Load/Store
ໃນສະຖາປັດຕະຍະກໍາ Adreno GPU, ມີຄຸນສົມບັດທີ່, ໃນເວລາທີ່ຜູກມັດ Render Target, ຖ້າ Render Target ບໍ່ຊັດເຈນຫຼືບໍ່ຖືກຕ້ອງ, ແຕ່ລະຄັ້ງທີ່ rendering ເກີດຂຶ້ນ, ຄ່າໃນ Render Target ຈະຖືກໂຫລດເຂົ້າໄປໃນ Graphics Memory, ເຊິ່ງເອີ້ນວ່າ GMEM Load. ຖ້າຄ່າທີ່ຜ່ານມາບໍ່ຈໍາເປັນ, ຊັດເຈນຫຼືບໍ່ຖືກຕ້ອງ render Target befaure rendering, ສາມາດຫຼີກເວັ້ນສະຖານະການນີ້ເພື່ອປັບປຸງການປະຕິບັດ GPU.
ທ່ານສາມາດຫຼີກລ້ຽງການໂຫຼດ GMEM ໂດຍໃຊ້ວິທີຕໍ່ໄປນີ້. ໃນ OpenGL ES, ຫຼັງຈາກຜູກມັດ FBO, ທ່ານສາມາດໂທຫາ glClear ແລະ glClearDepth ເພື່ອລຶບລ້າງ Color, Depth, ແລະ Stencil buffer, ຫຼືໂທຫາ glInvalidateFramebuffer ເພື່ອຍົກເລີກເປົ້າໝາຍ Render ທີ່ລະບຸໄວ້. ໃນ Vulkan, ຄໍາແນະນໍາເພີ່ມເຕີມແມ່ນບໍ່ຈໍາເປັນ; ທ່ານສາມາດກໍານົດຢ່າງຊັດເຈນວ່າຈະລຶບໄຟລ໌ແນບກ່ອນທີ່ຈະໃຊ້ໃນ VkAttachmentDescription.loadOp.
ເຊັ່ນດຽວກັນ, ການເກັບຮັກສາຜົນໄດ້ຮັບຂອງ Tile Render ກັບຄືນໄປບ່ອນ Main Memory ຈາກ Graphics Memory ເອີ້ນວ່າ GMEM Store; ການປະຕິບັດງານນີ້ແມ່ນລາຄາແພງສໍາລັບ GPU. ເພື່ອຫຼີກເວັ້ນການນີ້, ພວກເຮົາແນະນໍາໃຫ້ຜູກມັດພຽງແຕ່ Render Targets ທີ່ຕ້ອງການເພື່ອປ້ອງກັນການດໍາເນີນການ Store ທີ່ບໍ່ຈໍາເປັນ.
5.4 ຊັ້ນອົງປະກອບ (ຫຼາຍຊັ້ນ)
ໂຄງສ້າງທີ່ສະແດງໂດຍໃຊ້ຫຼາຍຊັ້ນມີຄຸນນະພາບສາຍຕາທີ່ດີກວ່າ. ຢ່າງໃດກໍຕາມ, ຄຸນນະສົມບັດນີ້ເພີ່ມຂຶ້ນຢ່າງຫຼວງຫຼາຍປະສິດທິພາບ 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
ເມື່ອການໂຫຼດ CPU ໜັກຂຶ້ນ, ບາງກະທູ້ປະມວນຜົນພື້ນຫຼັງທີ່ມີບູລິມະສິດສູງ, ມັນອາດຈະຂັດຂວາງການປະຕິບັດພື້ນເມືອງ. ພວກເຮົາບໍ່ສາມາດຮັບປະກັນວ່າແອັບພລິເຄຊັນເນື້ອຫາຈະບໍ່ຖືກລົບກວນໂດຍກະທູ້ອື່ນ.
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. ຄ່າທີ່ນ້ອຍກວ່າສະແດງເຖິງຄວາມສຳຄັນທີ່ສູງກວ່າ.

- Unreal ບໍ່ມີວິທີການປ່ຽນກະທູ້ເກມ, ກະທູ້ການສະແດງແລະຄວາມສໍາຄັນຂອງກະທູ້ RHI ຜ່ານການຕັ້ງຄ່າພາຍນອກເວັ້ນເສຍແຕ່ວ່າທ່ານດັດແປງລະຫັດເຄື່ອງຈັກ.
ສະຫງວນລິຂະສິດ © 2024 HTC Corporation. ສະຫງວນລິຂະສິດທັງໝົດ
ເອກະສານ / ຊັບພະຍາກອນ
![]() | ປະສິດທິພາບການສະແດງຜົນ VR |
ເອກະສານອ້າງອີງ
- dev.epicgames.com/community/learning/courses/eER/unreal-engine-technical-guide-to-linear-content-creation-production/k8pB/unreal-engine-performance-profiling-and-debugging?locale=dev.epicgames.com
- Anti Aliasing and Upscaling in Unreal Engine | Unreal Engine 5.5 Documentation | Epic Developer Communitydev.epicgames.com
- dev.epicgames.com/documentation/en-us/unreal-engine/API/Runtime/HeadMountedDisplay/IHeadMountedDisplay/SetPixelDensity?application_version=4.27dev.epicgames.com
- ຄໍາແນະນໍາການປະຕິບັດສໍາລັບອຸປະກອນມືຖືໃນ Unreal Engine | Unreal Engine 5.5 ເອກະສານ | ຊຸມຊົນນັກພັດທະນາ Epicdev.epicgames.com
- dev.epicgames.com/documentation/en-us/unreal-engine/unreal-insights-in-unreal-enginedev.epicgames.com
- ເອກະສານ Qualcommdeveloper.qualcomm.com
- developer.vive.com/resources/openxr/openxr-mobile/tutorials/unity/composition-layer/developer.vive.com
- developer.vive.com/resources/openxr/unity/tutorials/using-foveation-in-your-app/developer.vive.com
- developer.vive.com/resources/openxr/unity/tutorials/using-foveation-in-your-app/#GoldenSampledeveloper.vive.com
- developer.vive.com/resources/openxr/unity/tutorials/using-refreshrate-in-your-app/#GoldenSampledeveloper.vive.com
- ຄູ່ມືຜູ້ໃຊ້manual.tools
