Foto & Video
SDK

Waktu bingkai VR

Waktu bingkai dalam mode VR bekerja persis seperti dalam mode non-VR VSync-enabled (lihat dokumentasi pada Pelaksanaan urutan fungsi acara). Satu-satunya perbedaan adalah bahwa Unity tidak tergantung pada VSyncSinkronisasi vertikal (VSync) adalah pengaturan tampilan yang menangkap tingkat bingkai permainan untuk mencocokkan tingkat refresh monitor, untuk mencegah robek gambar.
Lihat di Glossary
SDK 3D yang mendasarinya, tetapi bukan SDK VR mana pun saat ini render dengan. Tidak ada manfaat untuk membuat lebih cepat dari tampilan dapat menyegarkan. Sebagai gantinya, Unity berfokus pada memanfaatkan waktu yang paling efisien.

Dalam rendering multithreaded, Unity menyinkronkan benang simulasi dan benang rendering pada CPU. Ini mengurangi latensi. Benang simulasi terutama mengeksekusi scriptsSepotong kode yang memungkinkan Anda untuk membuat Komponen Anda sendiri, memicu peristiwa permainan, memodifikasi sifat komponen dari waktu ke waktu dan menanggapi input pengguna dengan cara apa pun yang Anda sukai. More info
Lihat di Glossary
, suara, AI, dan tugas lain yang diperlukan untuk simulasi untuk dijalankan. Benang render berfokus pada mengirimkan panggilan ke driver grafis, yang pada gilirannya memvalidasi mereka dan mengirim mereka ke GPU. Untuk mencapai paralelisme terbesar antara benang, Unity mengeksekusi perintah grafis karena mereka datang, dan mensimulasikan bingkai berikutnya pada saat yang sama.

Unity menunggu GPU untuk benar-benar render dan menampilkan bingkai terakhir, kemudian mengirimkan perintah rendering untuk bingkai berikutnya.

Kisi rendah mungkin

Sebelum Unity dapat mengirimkan perintah rendering pertama yang tergantung pada tampilan matriks transformasi, harus terlebih dahulu mendapatkan tampilan matriks dari SDK VR. Untuk menjaga latency serendah mungkin, VR SDK memprediksi kepala mengubah dua kali per bingkai:

  • Satu prediksi untuk membuat bingkai saat ini. prediksi ini sesuai dengan tempat kepala Anda sebenarnya, di ruang nyata, ketika bingkai tiba di layar.

  • Satu prediksi untuk mensimulasikan bingkai berikut.

Unity menerapkan prediksi rendering untuk bingkai saat ini ke camerasKomponen yang menciptakan gambar sudut pandang tertentu di tempat kejadian Anda. Output ditarik ke layar atau ditangkap sebagai tekstur. More info
Lihat di Glossary
, controller, dan apa pun yang membutuhkan informasi untuk rendering SceneAdegan berisi lingkungan dan menu permainan Anda. Pikirkan setiap file Adegan unik sebagai tingkat yang unik. Di setiap Adegan, Anda menempatkan lingkungan, hambatan, dan dekorasi, pada dasarnya merancang dan membangun permainan Anda dalam potongan-potongan. More info
Lihat di Glossary
. Unity menggunakan prediksi simulasi untuk bingkai berikut jika tidak bisa membuat bingkai berikut.

Untuk informasi lebih lanjut tentang bagaimana pegangan hardware rendering, lihat dokumentasi produsen untuk tampilan yang dipasang di kepala Anda.

Apa yang terjadi ketika Unity menjatuhkan bingkai?

Jika Unity tidak menyerahkan bingkai yang diberikan penuh tepat waktu untuk siap untuk tampilan berikutnya menyegarkan, beberapa hal mungkin terjadi, tergantung pada SDK VR mana aktif. SDK VR mungkin:

  • Tampilkan bingkai yang sebelumnya diajukan. Ini terlihat seperti judder, dan sangat mengurangi kualitas pengalaman.

  • Secara rotasi mengubah bingkai yang sebelumnya diajukan berdasarkan pos kepala saat ini. Ini adalah perkiraan kasar yang bekerja serta fallback untuk konten statis, tetapi konten apa pun dengan gerakan animasi atau posisi tidak terlihat benar.

  • Menerapkan beberapa bentuk proyeksi posisi. Ini mungkin temporal untuk mengisi rincian yang hilang.

Untuk informasi lebih lanjut tentang reproyeksi (kadang kali disebut warping waktu), lihat masuk wiki XinReality pada Timewarp.

Semua ini terjadi secara otomatis. Pada titik ini, biasanya terlalu terlambat untuk Unity untuk berhasil menyelesaikan bingkai berikutnya yang seharusnya sudah rendering. Sebagai gantinya, SDK VR mengambil bingkai terakhir yang diterima dan memproyeksikannya ke pose terprediksi terbaru, dan menunggu Unity sampai kesempatan berikutnya untuk membuat bingkai penuh untuk kembali di trek. Jika aplikasi Anda terus-menerus menjatuhkan bingkai, Unity hanya membuat setiap bingkai lainnya.

Untuk informasi lebih lanjut tentang bagaimana pegangan hardware rendering, lihat dokumentasi produsen untuk tampilan yang dipasang di kepala Anda.

GPU-bound vs. CPU-bound di VR

Setiap tampilan memiliki tingkat refresh khusus yang Unity terikat. Anda bisa mendapatkan ini pada waktu berjalan dengan VRDevice.refreshRate. Nilai 1 dibagi oleh refreshRate memberi Anda waktu yang dialokasikan untuk satu bingkai.

Misalnya, ini mungkin 11.1 mili detik dalam kasus refresh rate 90 hz.

  • Jika aplikasi Anda adalah GPU-bound, Unity ProfilerJendela yang membantu Anda untuk mengoptimalkan permainan Anda. Ini menunjukkan berapa banyak waktu yang dihabiskan di berbagai bidang permainan Anda. Sebagai contoh, dapat melaporkan persentase waktu yang dihabiskan rendering, aimating, atau dalam logika permainan Anda. More info
    Lihat di Glossary
    menampilkan XR.WaitForGPU dalam waktu lebih dari satu bingkai dalam mili detik.

  • Jika aplikasi Anda adalah CPU-bound, bingkai memakan waktu lebih lama dari waktu bingkai yang ditunjuk, tetapi Unity Profileer menampilkan XR.WaitForGPU lebih pendek dari satu bingkai.

Foto & Video
SDK