Varietas Shader
Menggunakan kata kunci naungan dengan skrip C#

Kata kunci Shader

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:

Menggunakan kata kunci naungan

Mengatur kata kunci naungan

Anda menyatakan kata kunci naungan dalam set. Satu set berisi kata kunci eksklusif bersama.

Misalnya, set berikut berisi tiga kata kunci:

  • WARNA_RED
  • WARNA_GREEN
  • WARNA_BLUE

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:

  • type mempengaruhi apakah dan bagaimana Unity menggunakan kata kunci untuk menghasilkan varian naungan, atau apakah itu menggunakannya untuk percabangan dinamis.
  • scope mempengaruhi apakah kata kunci lokal atau global. Ini menentukan perilaku mereka saat berjalan.
  • stage mempengaruhi tahap naungan kata kunci mempengaruhi (di mana berlaku).

Jenis Definisi: "multi kompilasi", "fitur fader", atau "cabang dinamis"

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.

  • “ branch dinamis”: Gunakan ini untuk membuat satu set kata kunci untuk digunakan dengan percabangan dinamis. Secara internal, Unity menggunakan kata kunci ini untuk membuat variabel seragam.
  • "multi kompilasi" atau "fitur bentuk": Gunakan ini untuk membuat satu set kata kunci untuk digunakan dengan varian warna. Secara internal, Unity menggunakan kata kunci ini untuk membuat verifikasi preprocessor #define.
    • “multi compile” menyatakan satu set kata kunci untuk digunakan dengan varian naungan.

      Unity mengkompilasi varian naungan untuk semua kata kunci dalam set.
    • “berkisah fitur” menyatakan satu set kata kunci untuk digunakan dengan varian warna, dan juga menginstruksikan kompiler untuk menyusun varian di mana tidak ada kata kunci ini diaktifkan.

      Unity memeriksa keadaan proyek Anda pada waktu membangun, dan hanya menyusun varian untuk kata kunci yang digunakan. Kata kunci digunakan jika materi yang disertakan dalam build memiliki kata kunci yang diaktifkan.

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:

  • Dalam naungan yang dikodekan tangan, lihat Mengatur dan menggunakan kata kunci naungan di HLSL
  • Di Shader Graph, lihat. Login Opsi “cabang dinamis” tidak tersedia di Shader Graph. Anda hanya dapat menggunakan kata kunci naungan dengan varian naungan di Shader Graph.Note: The “dynamic branch” option is not available in Shader Graph. You can only use shader keywords with shader variants in Shader Graph.

Ruang lingkup lokal atau global

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:

Kata kunci spesifik tahap

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:

Membuat kondisi perilaku dengan kata kunci naungan

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:

Mengaktifkan dan menonaktifkan kata kunci naungan

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:

Kata kunci naungan yang telah ditentukan oleh Unity

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:

  • Secara default, Unity menambahkan set kata kunci ini ke semua program warna grafis: STEREO_INSTANCING_ON, STEREO_MULTIVIEW_ON, STEREO_CUBEMAP_RENDER_ON, UNITY_SINGLE_PASS_STEREO. Anda dapat melucuti kata kunci ini menggunakan script Editor. Untuk informasi lebih lanjut, lihat Varietas Shader.
  • Secara default, Unity menambahkan set kata kunci ini ke Shader Standar: LIGHTMAP_ON, DIRLIGHTMAP_COMBINED, DYNAMICLIGHTMAP_ON, LIGHTMAP_SHADOW_MIXING, SHADOWS_SHADOWMASK. Anda dapat melucuti kata kunci ini menggunakan jendela Pengaturan grafis.
  • Dalam 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
    Built-in, jika proyek Anda menggunakan pengaturan tingkat yang berbeda dari satu sama lain, Unity menambahkan set kata kunci ini untuk semua naungan grafis: UNITY_HARDWARE_TIER1, UNITY_HARDWARE_TIER2, UNITY_HARDWARE_TIER3. Untuk informasi lebih lanjut, lihat Grafik: Grafik tiers dan varian naungan.

Batas kata kunci Shader

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.

Varietas Shader
Menggunakan kata kunci naungan dengan skrip C#