Single-pass stereo rendering untuk Android
Pengujian dan debugging

orientasi framebuffer

Jika orientasi kerangka aplikasi Anda tidak cocok dengan orientasi tampilan asli perangkat (portrait, untuk sebagian besar perangkat), Android memutar kerangka aplikasi untuk mencocokkan tampilan perangkat setiap bingkai. Tergantung pada kemampuan perangkat keras, rotasi tambahan ini dapat mempengaruhi kinerja secara negatif. Jika aplikasi Anda menggunakan API documentation dan perangkat mendukung Vulkan, Unity dapat menerapkan rotasi ini selama rendering yang mengurangi dampak kinerja rotasi. Ini disebutpra-rotasi.

Menggunakan pra-rotasi dalam Unity

Untuk membuat Unity menerapkan pra-rotasi, Anda dapat menggunakan C # 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
atau editor Unity:

Bagaimana Unity menerapkan pra-rotasi

Unity menerapkan pra-rotasi ketika render langsung ke backbuffer perangkat, bukan ketika render ke Render TeksturJenis Tekstur khusus yang diciptakan dan diperbarui pada runtime. Untuk menggunakannya, pertama membuat Tekstur Render baru dan menunjuk salah satu Kamera Anda untuk membuatnya. Kemudian Anda dapat menggunakan Tekstur Render dalam Bahan seperti Tekstur biasa. More info
Lihat di Glossary
. Untuk menerapkan rotasi, Unity memodifikasi matriks proyeksi yang mempengaruhi UNITY_MATRIX_MVP dan UNITY_MATRIX_P Variabel naungan internal. Ini berarti bahwa Unity menerapkan rotasi di vertex shaderProgram yang berjalan di GPU. More info
Lihat di Glossary
.

Menggunakan pra-rotasi tidak mempengaruhi perilaku C # API Unity. Misalnya, Anda masih dapat menggunakan Screen.width untuk mengakses lebar layar. Hal yang sama berlaku untuk viewportsArea tampilan pengguna aplikasi di layar mereka.
Lihat di Glossary
dan gunting rects. Unity menyesuaikan ini sesuai kebutuhan, dan juga menangani operasi membaca dari backbuffer seperti Grab Pass, BacaPixel, atau Screenshot.

Unity menyediakan makro utilitas untuk menangani kasus khusus di naungan (untuk informasi lebih lanjut, lihat bagian Limitations di bawah).

makro UNITY_PRETRANSFORM_TO_DISPLAY_ORIENTASI hanya didefinisikan jika semua kondisi berikut benar (jika tidak, tidak ditentukan):

  • preTransform diaktifkan dalam Pengaturan Pemain
  • platform diatur ke Android
  • API grafis diatur ke Vulkan

UNITY_DISPLAY_ORIENTATION_PRETRANSFORM adalah konstan yang diatur ke rotasi preTransform saat ini. Nilainya adalah salah satu berikut:

  • UNITY_DISPLAY_ORIENTASI_0
  • UNITY_DISPLAY_ORIENTATION_90
  • UNITY_DISPLAY_ORIENTATION_180
  • UNITY_DISPLAY_ORIENTATION_270.

Jika UNITY_PRETRANSFORM_TO_DISPLAY_ORIENTATION tidak ditentukan, atau ketika membuat Tekstur Render, nilai UNITY_DISPLAY_ORIENTATION_PRETRANSFORM adalah UNITY_DISPLAY_ORIENTATION_0.

UNITY_DISPLAY_ORIENTATION_PRETRANSFORM diterjemahkan ke dalam konstanta spesialisasi Vulkan, yang membuatnya efisien untuk digunakan jika atau mengubah pernyataan.

Limitations

Dalam kasus berikut, kemungkinannya yang memungkinkan preTransform membutuhkan modifikasi tambahan untuk Proyek Unity Anda sebelum Anda dapat menggunakannya:

  • Shaders yang tidak menggunakan matriks proyeksi Unity
  • Naungan yang tergantung pada posisi pixelUnit terkecil dalam gambar komputer. Ukuran piksel tergantung pada resolusi layar Anda. Pencahayaan pixel dihitung pada setiap piksel layar. More info
    Lihat di Glossary
    saat ini dalam naungan fragmen (SV_Position)
  • Shaders yang menggunakan derivatif ruang layar (ddx, ddy)
  • Plugin rendering asli yang menggunakan gambar Vulkan swapchain mungkin perlu dimodifikasi
  • Penggunaan backbuffer dengan API Unity RenderPass dalam pengaturan MRT bersama dengan Tekstur Render lainnya

Kasus-kasus ini hanya berlaku ketika rendering langsung ke backbuffer.

Pembacaan lebih lanjut

Single-pass stereo rendering untuk Android
Pengujian dan debugging