Unity dapat memuat tekstur dan data meshGrafik utama primitif Unity. Mesh membuat sebagian besar dunia 3D Anda. Unity mendukung mesh poligon triangulat atau Quadrangulasi. Nurbs, Nurms, permukaan Subdiv harus dikonversi ke poligon. More info
Lihat di Glossary dari disk dan mengunggahnya ke GPU dalam dua cara yang berbeda: sinkron atau asinkron. Dua proses ini disebut pipa unggah sinkron dan pipa unggah asinkron.
Ketika Unity menggunakan pipa unggah sinkron, tidak dapat melakukan tugas lain sementara beban dan mengunggah data. Ini dapat menyebabkan jeda yang terlihat dalam aplikasi Anda. Ketika Unity menggunakan pipa unggah asinkron, dapat melakukan tugas lain sementara beban dan mengunggah data di latar belakang.
Jika tekstur atau mesh memenuhi syarat untuk pipa unggah asinkron, Unity menggunakan pipa unggah asin secara otomatis. Jika tekstur atau mesh tidak bertanggung jawab untuk pipa unggah asinkron, Unity menggunakan pipa unggah sinkron secara otomatis.
Perbedaan utama antara pipa unggah sinkron dan asinkron adalah di mana Unity menyimpan data pada membangun waktu, yang mempengaruhi bagaimana Unity memuatnya pada runtime.
Dalam pipa unggah sinkron, Unity harus memuat metadata (data kepala) dan data texel atau vertex (data dasar) untuk tekstur atau mesh dalam satu bingkai. Dalam pipa unggah asinkron, Unity harus memuat hanya data header dalam satu bingkai, dan dapat merampingkan data biner ke GPU atas bingkai berikutnya.
Dalam pipa unggah sinkron:
Dalam pipa unggah asinkron:
Tekstur memenuhi syarat untuk pipa unggah asinkron jika kondisi berikut dipenuhi:
Perhatikan bahwa jika Anda memuat tekstur menggunakan LoadImage(byte[] data)
, kekuatan ini Bersatu untuk menggunakan pipa unggah sinkron, bahkan jika kondisi di atas terpenuhi.
Mesh memenuhi syarat untuk pipa unggah asinkron jika kondisi berikut dipenuhi:
Dalam semua keadaan lain, tekstur beban Unity dan jala secara serentak.
Anda dapat menggunakan alat 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 atau profil lainnya untuk mengidentifikasi ketika Unity menggunakan pipa unggah asin, dengan mengamati aktivitas benang dan profiler markersDitempatkan dalam kode untuk menggambarkan acara CPU atau GPU yang kemudian ditampilkan di jendela Unity Profileer. Ditambahkan ke kode Unity secara default, atau Anda dapat menggunakan untuk menambahkan penanda kustom Anda sendiri. More info
Lihat di Glossary.
Berikut ini menunjukkan bahwa Unity menggunakan pipa unggah asinkron untuk mengunggah tekstur atau jala:
AsyncUploadManager.ScheduleAsyncRead
, AsyncReadManager.ReadFile
, dan penanda profiler Async.DirectTextureLoadBegin
.AsyncRead
.Jika Anda tidak melihat aktivitas ini, maka Unity tidak menggunakan pipa unggah asinkron.
Perhatikan bahwa penanda profiler berikut tidak menunjukkan bahwa Unity menggunakan pipa unggah asinkron; Unity menyebutnya untuk memeriksa apakah setiap pekerjaan unggah asinkron perlu terjadi:
Initialization.AsyncUploadTimeSlicedUpdate
AsyncUploadManager.AsyncResourceUpload
AsyncUploadManager.ScheduleAsyncCommands
Anda dapat mengkonfigurasi pengaturan ini untuk pipa unggah asinkron. Perhatikan bahwa Anda tidak dapat mengkonfigurasi pengaturan untuk pipa unggah sinkron.
Unity menggunakan penyangga cincin tunggal untuk merampingkan tekstur dan jaring data ke GPU. Ini mengurangi jumlah alokasi memori yang diperlukan.
Async Upload Buffer menentukan ukuran penyangga cincin ini dalam megabyte. Memiliki ukuran minimal 2, dan ukuran maksimum 512.
Unity secara otomatis mengubah penyangga agar sesuai dengan tekstur atau mesh terbesar yang saat ini memuat. Ini bisa menjadi operasi yang lambat, terutama jika Unity harus melakukan lebih dari sekali; misalnya, jika Anda memuat banyak tekstur yang lebih besar dari ukuran penyangga default. Untuk mengurangi jumlah kali Unity harus mengubah ukuran penyangga, set nilai ini agar sesuai dengan nilai terbesar yang Anda harapkan. Ini biasanya tekstur terbesar di 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.
Anda dapat mengkonfigurasi nilai ini di jendela pengaturan kualitas, atau menggunakan API QualitySettings.asyncUploadBufferSize.
Async Upload Time Slice adalah jumlah waktu CPU menghabiskan unggah tekstur atau jaring data ke GPU, dalam mili detik per bingkai.
Nilai yang lebih besar berarti data akan siap di GPU lebih cepat, tetapi CPU akan menghabiskan lebih banyak waktu pada operasi unggah selama bingkai tersebut. Perhatikan bahwa Unity hanya menggunakan waktu ini untuk meng-upload jika ada data yang menunggu dalam penyangga untuk diunggah ke GPU; jika tidak ada data yang menunggu, Unity dapat menggunakan waktu ini untuk operasi lain.
Anda dapat mengkonfigurasi nilai ini di jendela pengaturan kualitas, atau menggunakan API QualitySettings.asyncUploadTimeSlice.
Untuk informasi lebih lanjut tentang mengunggah tekstur dan data mesh secara asinkron, lihat posting blog Unity.