Cabang adalah salah satu cara memperkenalkan perilaku kondisional menjadi kode shaderProgram yang berjalan di GPU. More info
Lihat di Glossary.
Halaman ini berisi informasi tentang teknik berikut:
Untuk gambaran umum dari kondisional dalam kode naungan dan ketika menggunakan teknik mana, lihat Kondisi dalam kode naungan.
Ketika program naungan mencakup kondisional yang dievaluasi pada waktu kompilasi, itu menggunakan cabang statis. Kompiler tidak termasuk kode dari cabang yang tidak digunakan, sehingga tidak muncul dalam program naungan yang disusun.
Secara internal, Unity menggunakan percabangan statis ketika menciptakan varian naungan; Namun, percabangan statis sendiri tidak memiliki kelemahan kinerja dari varian naungan.
Keuntungan utama dari percabangan statis adalah bahwa tidak memiliki dampak negatif pada kinerja runtime. Kerugian utama percabangan statis adalah bahwa Anda hanya dapat menggunakannya pada waktu kompilasi.
Percabangan statis berarti bahwa kompiler tidak ada kode yang tidak diinginkan dari program naungan. Ini menghasilkan program naungan kecil, khusus yang hanya mengandung kode yang diperlukan. Tidak ada biaya kinerja runtime ke percabangan statis; pada kenyataannya, program yang lebih kecil cenderung menghasilkan waktu beban yang lebih cepat dan penggunaan memori runtime yang lebih rendah.
Untuk menggunakan percabangan statis, kondisi harus konstan pada waktu kompilasi. Ini berarti bahwa Anda tidak dapat menggunakannya untuk mengeksekusi kode untuk kondisi yang berbeda pada runtime.
Anda dapat menggunakan percabangan statis dalam naungan Anda dengan cara-cara berikut:
if
juga dapat digunakan untuk cabang dinamis, kompiler mendeteksi nilai konstan waktu kompilasi dan menciptakan cabang statis sebagai gantinya.Sitemap Cabang statis hanya tersedia di naungan yang dikodekan tangan. Anda tidak dapat membuat cabang statis di Shader Graph.Note: Static branching is available only in hand-coded shaders. You cannot create static branches in Shader Graph.
Ketika program naungan mencakup kondisional yang dievaluasi pada runtime, itu menggunakan percabangan dinamis.
Ada dua jenis percabangan dinamis: percabangan dinamis berdasarkan variabel seragam, dan percabangan dinamis berdasarkan nilai runtime lainnya. Percabangan berbasis seragam biasanya lebih efisien, karena nilai seragam konstan untuk seluruh panggilan menggambar.
Anda dapat menggunakan kata kunci warna untuk percabangan dinamis. Ini memungkinkan Anda untuk 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 dan Bahan InspectorJendela Unity yang menampilkan informasi tentang Pengaturan GameObject yang dipilih saat ini, aset atau proyek, memungkinkan Anda untuk memeriksa dan mengedit nilai. More info
Lihat di Glossary untuk mengkonfigurasi perilaku percabangan runtime untuk naungan Anda. Hasil ini adalah percabangan berbasis seragam; ketika Anda melakukan ini, Unity menyusun kata kunci naungan sebagai seragam.
Keuntungan utama dari percabangan dinamis adalah bahwa memungkinkan Anda untuk menggunakan kondisi pada runtime tanpa meningkatkan jumlah varian naungan dalam proyek Anda. Kerugian utama dari percabangan dinamis adalah bahwa dampak kinerja GPU.
Dampak kinerja GPU bervariasi oleh perangkat keras, dan dengan kode naungan. Alasannya adalah:
Secara umum, jika cabang kode Anda pada nilai-nilai seragam dan kedua cabang memiliki beban kerja yang mirip secara kira-kira, maka dampak pada kinerja GPU cenderung kecil. Namun, Anda harus selalu memberi profil aplikasi Anda dan mempertimbangkan kelebihan dan kekurangan kasus.
Percabangan dinamis Note: juga dapat menyebabkan program naungan yang besar, karena kode untuk semua kondisi disusun ke dalam program naungan yang sama. Namun, efek dari file yang lebih besar ini pada waktu beban dan penggunaan memori biasanya kurang signifikan dari dampak varian naungan.
Untuk informasi tentang cara lain menggunakan kondisional dalam naungan, dan bagaimana memutuskan teknik mana yang tepat untuk kasus penggunaan Anda, lihat Kondisi dalam naungan.
Anda dapat menggunakan percabangan dinamis dengan cara berikut: