Gambar batching panggilan
batching dinamis

batching statis

batching statis adalah metode draw call batching yang menggabungkan jala yang tidak bergerak untuk mengurangi draw calls. Ini mengubah mesh gabungan menjadi ruang dunia dan membangun satu simpul bersama dan penyangga indeks untuk mereka. Kemudian, untuk mesh yang terlihat, Unity melakukan serangkaian panggilan penarikan sederhana, dengan hampir tidak ada perubahan negara antara masing-masing. Static batchingTeknik Unity menggunakan untuk menggambar GameObjects di layar yang menggabungkan static (non-moving) GameObjects ke Big Meshes, dan render mereka dengan cara yang lebih cepat. More info
Lihat di Glossary
tidak mengurangi jumlah panggilan penarikan, tetapi alih-alih mengurangi jumlah perubahan state render antara mereka.

batching statis lebih efisien daripada batching dinamisProses Unity otomatis yang mencoba untuk membuat beberapa jala seolah-olah mereka adalah satu mesh untuk kinerja grafis yang dioptimalkan. Teknik mengubah semua simpul GameObject pada CPU dan kelompok banyak simpul serupa bersama. More info
Lihat di Glossary
karena batching statis tidak mengubah simpul pada CPU. Untuk informasi lebih lanjut tentang implikasi kinerja untuk batching statis, lihat Performance implications.

Persyaratan dan kompatibilitas

Bagian ini mencakup informasi tentang kompatibilitas render pipelineRangkaian operasi yang mengambil isi dari Adegan, dan menampilkannya di layar. Unity memungkinkan Anda memilih dari pipa render yang dibangun sebelumnya, atau menulis sendiri. More info
Lihat di Glossary
statis batching.

Kompatibilitas pipa Render

Feature Built-in Render Pipeline Universal Render Pipeline (URP) High Definition Render Pipeline (HDRP) Custom Scriptable Render Pipeline (SRP)
Static Batching Yes Yes Yes Yes

Menggunakan batching statis

Unity dapat melakukan batching statis pada waktu build dan pada runtime. Sebagai aturan umum, jika GameObjectsObjek mendasar dalam adegan Unity, yang dapat mewakili karakter, props, pemandangan, kamera, waypoints, dan banyak lagi. Fungsi GameObject didefinisikan oleh Komponen yang melekat padanya. More info
Lihat di Glossary
ada dalam 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
sebelum Anda membangun aplikasi Anda, gunakan Editor untuk batch GameObjects Anda pada waktu membangun. Jika Anda membuat GameObjects dan jala mereka pada runtime, gunakan API.

Ketika Anda menggunakan API runtime, Anda dapat mengubah sifat transformasi akar batch statis. Ini berarti bahwa Anda dapat bergerak, memutar, atau mengukur seluruh kombinasi jala yang membuat batch statis. Anda tidak dapat mengubah sifat transformasi dari jala individu.

Untuk menggunakan batching statis untuk satu set GameObjects, GameObjects harus memenuhi syarat untuk batching statis. Selain kriteria yang dijelaskan dalam informasi penggunaan umum, pastikan bahwa:

  • GameObject aktif.
  • GameObject memiliki komponen Filter MeshKomponen jala yang mengambil mesh dari aset Anda dan melewatinya ke Mesh Renderer untuk rendering di layar. More info
    Lihat di Glossary
    , dan komponen tersebut diaktifkan.
  • Komponen Filter Mesh memiliki referensi ke 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
    .
  • Jaring dibaca / menulis diaktifkan.
  • Mesh memiliki jumlah vertex lebih besar dari 0.
  • Mesh belum dikombinasikan dengan Mesh lain.
  • GameObject memiliki komponen Mesh RendererKomponen mesh yang mengambil geometri dari Filter Mesh dan render di posisi yang ditentukan oleh komponen Transform objek. More info
    Lihat di Glossary
    , dan komponen tersebut diaktifkan.
  • Komponen Mesh Renderer tidak menggunakan Material dengan shaderProgram yang berjalan di GPU. More info
    Lihat di Glossary
    yang memiliki tag DisableBatching yang ditetapkan untuk benar.
  • Mesh yang ingin Anda batch bersama menggunakan atribut simpul yang sama. Misalnya Unity dapat batch mesh yang menggunakan posisi simpul, vertex normal, dan satu UV dengan satu sama lain, tetapi tidak dengan jala yang menggunakan posisi simpul, vertex normal, UV0, UV1, dan tangensi simpul.

Untuk informasi tentang implikasi kinerja untuk batching statis, lihat Performance implications.

batching statis pada waktu membangun

Anda dapat mengaktifkan batching statis pada waktu build di Editor.

Untuk melakukan batching statis pada waktu membangun:

  1. Edit > Project Settings > Player.
  2. Di Other Settings, memungkinkan Static Batching.
  3. Dalam pandangan Adegan atau Hierarchy, pilih GameObject yang ingin Anda batch dan melihatnya di Inspector.
    Tip: Anda dapat memilih beberapa GameObjects pada saat yang sama untuk mengaktifkan batching statis untuk semua dari mereka.
  4. Pada Bendera Editor Statis GameObject, aktifkan Batching Static.

Unity secara otomatis mengedepankan jala statis tertentu ke panggilan penarikan yang sama jika mereka memenuhi kriteria yang dijelaskan dalam informasi penggunaan umum.

The Static Editor Flags checkbox in the Inspector for a GameObject.
Kotak centang Bendera Editor Statis di Inspektur untuk GameObject.

Note: Jika Anda melakukan batching statis pada waktu membangun, Unity tidak menggunakan sumber daya CPU kapan saja untuk menghasilkan data mesh untuk batch statis.

batching statis pada runtime

Untuk batch static meshes pada runtime, Unity menyediakan kelas StaticBatchingUtility. Metode static StatisBatchingUtility.Combine menggabungkan GameObjects yang Anda lewatkan dan menyiapkannya untuk batching statis. Ini sangat berguna untuk jala yang Anda hasilkan pada waktu yang runtime.

Tidak seperti batching statis pada waktu membangun, batching pada runtime tidak memerlukan Anda untuk mengaktifkan Pengaturan Pemain Static Batching. Untuk informasi tentang cara menggunakan API ini, lihat StaticBatchingUtility.

Performance implications

Menggunakan batching statis memerlukan memori CPU tambahan untuk menyimpan geometri gabungan. Jika beberapa GameObjects menggunakan mesh yang sama, Unity membuat salinan mesh untuk setiap GameObject, dan masukkan setiap salinan ke dalam mesh gabungan. Ini berarti bahwa geometri yang sama muncul dalam mesh gabungan beberapa kali. Unity melakukan ini terlepas dari apakah Anda menggunakan editor atau API untuk menyiapkan GameObjects untuk batching statis. Jika Anda ingin menyimpan jejak memori yang lebih kecil, Anda mungkin harus mengorbankan kinerja rendering dan menghindari batching statis untuk beberapa GameObjects. Misalnya, menandai pohon sebagai statis di lingkungan hutan padat dapat memiliki dampak memori yang serius.

Note: Ada batasan jumlah vertik batch statis dapat mencakup. Setiap batch statis dapat mencakup hingga 64000 vertik. Jika ada lebih, Unity menciptakan batch lain.

Gambar batching panggilan
batching dinamis