Kata kunci Shader memungkinkan Anda untuk menggunakan kode perilaku kondisional dalam kode shaderProgram yang berjalan di GPU. More info
Lihat di Glossary Anda. Anda dapat membuat naungan yang berbagi beberapa kode umum, tetapi memiliki fungsi yang berbeda ketika diberikan keyword diaktifkan atau dinonaktifkan.
Anda dapat menggunakan kata kunci naungan dengan dynamic branching, atau dengan Varietas ShaderSebuah verion dari program naungan yang Unity menghasilkan sesuai dengan kombinasi khusus kata kunci naungan dan status mereka. Objek Shader dapat mengandung beberapa varian naungan. More info
Lihat di Glossary. Sebelum Anda menggunakan kata kunci naungan, penting untuk memahami bagaimana teknik ini bekerja, dan mana yang tepat untuk proyek Anda.
Halaman ini berisi informasi berikut:
Anda menyatakan kata kunci naungan dalam set. Satu set berisi kata kunci eksklusif bersama.
Misalnya, set berikut berisi tiga kata kunci:
Sitemap Dalam Shader Graph, terminologi berbeda: satu set kata kunci disebut Note:, dan kata kunci dalam satu set disebut Keyword. Secara internal, fungsinya sama: Unity mengkompilasi mereka dengan cara yang sama, Anda bekerja dengan mereka cara yang sama dengan C # states, dan sebagainya.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, and so on.
Cara yang Anda deklarasikan kata kunci naungan mempengaruhi sejumlah hal:
Ketika Anda menyatakan satu set kata kunci, Anda memilih apakah untuk menggunakannya dengan varian warna atau dengan dynamic branching. Jika Anda memilih varian naungan, Anda juga harus memilih bagaimana Unity mendefinisikan kata kunci secara internal; ini mempengaruhi jumlah varian yang disatukan.
#define
.
Apakah memilih fitur "multi compile" atau "shader" tergantung pada bagaimana Anda menggunakan kata kunci. Jika Anda menggunakan kata kunci untuk mengkonfigurasi materi dalam proyek Anda dan tidak mengubah nilai mereka dari skrip C # pada runtime, maka Anda harus menggunakan "fitur bentuk" untuk mengurangi jumlah kata kunci naungan dan varian dalam proyek Anda. Jika Anda mengaktifkan dan menonaktifkan kata kunci pada runtime menggunakan skrip C #, maka Anda harus menggunakan "multi compile" untuk mencegah varian dilucuti dalam kesalahan. Untuk informasi lebih lanjut tentang pengupasan warna, lihat Varietas Shader.
Sitemap Jika Anda menambahkan naungan ke daftar Note: di jendela pengaturan Grafis, Unity mencakup semua kata kunci dari semua set dalam build, bahkan jika mereka dinyatakan dengan fitur "shader".Always Included Shaders in the Graphics settings window, Unity includes all keywords from all sets in the build, even if they were declared with “shader feature”.
Untuk mengatur nilai ini, lihat dokumentasi berikut:
Ketika Anda menyatakan satu set kata kunci, Anda memilih apakah kata kunci di set memiliki scope lokal atau global. Ini menentukan apakah Anda dapat menimpa keadaan kata kunci ini pada runtime menggunakan kata kunci naungan global.
Secara default, Anda menyatakan kata kunci dengan lingkup global. Ini berarti bahwa Anda dapat menimpa keadaan kata kunci ini pada runtime menggunakan kata kunci naungan global. Jika Anda menyatakan kata kunci dengan lingkup lokal, ini berarti bahwa Anda tidak dapat menimpa keadaan kata kunci ini pada runtime menggunakan kata kunci naungan global. Untuk informasi lebih lanjut dan contoh kode, lihat Menggunakan kata kunci naungan dengan skrip C#.
Sitemap Jika kata kunci dengan nama yang sama ada dalam file sumber naungan dan ketergantungannya, ruang lingkup kata kunci dalam file sumber menimpa ruang lingkup dalam ketergantungan. Dependencies terdiri dari semua Shaders yang disertakan melalui Note:, dan Passes yang disertakan melalui Fallback command.UsePass command.
Untuk mengatur nilai ini, lihat dokumentasi berikut:
Secara default, Unity menghasilkan varian kata kunci untuk setiap tahap naungan Anda. Misalnya, jika naungan Anda mengandung tahap simpul dan tahap fragmen, Unity menghasilkan varian untuk setiap kombinasi kata kunci untuk kedua simpul dan program naungan fragmen. Jika satu set kata kunci hanya digunakan dalam satu tahap tersebut, hasil ini dalam varian identik untuk tahap lain. Unity secara otomatis mengidentifikasi dan varian identik deduplicates sehingga mereka tidak meningkatkan ukuran build, tetapi mereka masih mengakibatkan waktu kompilasi, meningkatkan waktu pemuatan naungan, dan meningkatkan penggunaan memori runtime.
Untuk menghindari masalah ini, ketika Anda menyatakan satu set kata kunci dalam naungan berkode tangan, Anda dapat menginstruksikan Unity untuk mengkompilasi mereka hanya untuk tahap naungan yang diberikan. Anda kemudian bertanggung jawab untuk memastikan bahwa kata kunci hanya digunakan dalam tahap naungan yang ditentukan.
Sitemap API grafis berikut tidak mendukung kata kunci spesifik tahap. Dalam OpenGL dan Vulkan, pada waktu kompilasi, Unity secara otomatis mengubah semua arah kata kunci spesifik untuk kata kunci langsung secara teratur. Di Logam, setiap tahap simpul penargetan kata kunci juga mempengaruhi tahap pengujianselilasi, dan sebaliknya.Note: The following graphics APIs do not fully support stage-specific keywords. In OpenGL and Vulkan, at compile time, Unity automatically converts all stage-specific keyword directives to regular keyword directives. In Metal, any keyword targeting vertex stages also affects tessellation stages, and vice versa.
Untuk mengatur nilai ini:
Anda dapat menggunakan kata kunci naungan untuk membuat bagian dari kondisi naungan Anda, sehingga perilaku tertentu hanya mengeksekusi ketika kata kunci yang diberikan dalam keadaan tertentu.
Untuk melakukan ini:
Anda dapat mengaktifkan atau menonaktifkan kata kunci naungan. Ketika Anda mengaktifkan atau menonaktifkan kata kunci naungan, naungan menampilkan perilaku kondisional yang sesuai. Tergantung pada apakah pekerjaan kata kunci dengan varian naungan atau percabangan dinamis, ini berarti bahwa kedua Unity membuat varian naungan yang tepat, atau GPU mengeksekusi cabang yang tepat.
Ada dua cara untuk mengaktifkan dan menonaktifkan kata kunci naungan:
Unity menggunakan set awal kata kunci naungan untuk menghasilkan varian naungan yang memungkinkan fungsi umum.
Unity menambahkan set berikut kata kunci varian naungan pada waktu kompilasi:
Unity dapat menggunakan hingga 4,294,967,294 kata kunci naungan global. Para naungan individu dan naungan compute dapat menggunakan hingga 65,534 kata kunci naungan lokal. Total ini termasuk kata kunci yang digunakan untuk varian, dan kata kunci yang digunakan untuk bercabang dinamis.
Setiap kata kunci dinyatakan dalam file sumber naungan dan jumlah dependensinya terhadap batas ini. Ketergantungan termasuk Passes bahwa naungan termasuk dengan UsePass, dan fallbacks.
Jika Unity menemukan kata kunci naungan dengan nama yang sama beberapa kali, itu hanya menghitung ke batas sekali.
Jika seorang naungan menggunakan lebih dari 128 kata kunci secara total, itu mengeluarkan hukuman kinerja runtime kecil; oleh karena itu, yang terbaik adalah menjaga jumlah kata kunci rendah. Unity selalu cadangan 4 kata kunci per naungan.