kompilasi Asynchronous shaderProgram yang berjalan di GPU. More info
Lihat di Glossary adalah fitur Editor-only yang dapat meningkatkan alur kerja Anda ketika Anda memiliki kompleks Shader objectsContoh kelas Shader, objek Shader adalah wadah untuk program naungan dan instruksi GPU, dan informasi yang memberi tahu Unity bagaimana menggunakannya. Gunakan mereka dengan bahan untuk menentukan penampilan adegan Anda. More info
Lihat di Glossary dengan banyak varian naungan.
Halaman ini berisi informasi berikut:
Objek shader dapat mengandung ratusan atau ribuan varian warnaSebuah 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. Jika Editor disusun semua varian saat memuat objek Shader, proses impor akan sangat lambat. Alih-alih, Editor menyusun varian naungan atas permintaan, pertama kali itu bertemu mereka.
Mengkombinasikan varian naungan ini dapat menyebabkan editor untuk bergergaul atau bahkan detik, tergantung pada API grafis dan kompleksitas objek Shader. Untuk menghindari kios-kios ini, Anda dapat menggunakan kompilasi naungan asinkron untuk mengkompilasi varian naungan di latar belakang, dan menggunakan benda-benda Shader placeholder dalam waktu maksud.
kompilasi naungan asinkron bekerja seperti ini:
Pengecualian berikut berlaku:
DrawProcedural
atau CommandBuffer.DrawProcedural
, Editor tidak menggunakan naungan placeholder. Sebagai gantinya, editor hanya melewatkan rendering geometri ini sampai telah menyusun varian warna.kompilasi naungan asinkron diaktifkan secara default.
Untuk mengaktifkan atau menonaktifkan kompilasi naungan asinkron:
Sitemap Mengaktifkan dan menonaktifkan kompilasi naungan asinkron dengan cara ini hanya mempengaruhi pandangan Note: dan Game secara default. Jika Anda ingin menggunakannya di bagian lain dari Editor, lihat 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.Alat Editor Kustom dan kompilasi naungan asinkron.
Anda dapat mengaktifkan atau menonaktifkan kompilasi naungan asinkron untuk perintah rendering tertentu di 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 Anda.
Instruksi berikut menunjukkan cara mengaktifkan atau menonaktifkan fitur di ruang lingkup langsung, dan ruang lingkup CommandBuffer.
Di ruang lingkup langsung, Anda dapat menggunakan ShaderUtil.allowAsyncCompilation
.
Untuk melakukan ini:
ShaderUtil.allowAsyncCompilation
dalam variabel.ShaderUtil.allowAsyncCompilation
ke false
.ShaderUtil.allowAsyncCompilation
kembali ke state sebelumnya.Berikut adalah contoh kode pseudo:
// Store the current state
bool oldState = ShaderUtil.allowAsyncCompilation;
// Disable async compilation
ShaderUtil.allowAsyncCompilation = false;
// Enter your rendering code that should never use the placeholder shader
Graphics.DrawMesh(...);
// Restore the old state
ShaderUtil.allowAsyncCompilation = oldState;
Dalam lingkup CommandBuffer
, Anda dapat menggunakan ShaderUtil.SetAsyncCompilation
dan ShaderUtil.RestoreAsyncCompilation
.
ShaderUtil.SetAsyncCompilation
, dan atur ke false
. Subsequent perintah di CommandBuffer tidak akan memungkinkan kompilasi asinkron.Shader.Util.RestoreAsyncCompilation
untuk mengembalikan keadaan kompilasi naungan asinkron.Berikut ini adalah contoh:
// Create the CommandBuffer
CommandBuffer cmd = new CommandBuffer();
// Disable async compilation for subsequent commands
ShaderUtil.SetAsyncCompilation(cmd, false);
/// Enter your rendering commands that should never use the placeholder shader
cmd.DrawMesh(...);
// Restore the old state
ShaderUtil.RestoreAsyncCompilation(cmd);
Anda dapat menonaktifkan kompilasi naungan asinkron untuk objek Shader tertentu dengan memaksakan Editor untuk selalu mengkompilasi mereka secara serentak. Ini adalah pilihan yang baik untuk menghasilkan objek Shader yang selalu hadir pada awal rendering Anda, dan yang relatif cepat untuk dikompilasi. Anda kemungkinan besar perlu ini jika Anda melakukan rendering canggih.
Untuk memaksa kompilasi sinkron untuk objek Shader, tambahkan #pragma editor_sync_compilation
directive ke kode sumber naungan Anda.
Sitemap Anda tidak boleh memaksa kompilasi sinkron untuk benda-benda Shader kompleks yang menemukan varian naungan baru selama rendering; ini dapat kios rendering di Editor.Note: You should not force synchronous compilation for complex Shader objects that encounter new shader variants during rendering; this can stall rendering in the Editor.
Anda dapat menggunakan C# API untuk memantau keadaan kompilasi naungan asinkron, dan melakukan operasi ketika perubahan keadaan ini.
Ini paling mungkin berguna dalam rendering canggih; jika placeholder shader mencemari data yang dihasilkan Anda, Anda dapat menunggu sampai kompilasi selesai, membuang data yang tercemar, dan menggenerasi set baru dengan varian warna yang benar.
Jika Anda sudah tahu bahan mana yang Anda minati, Anda dapat menggunakan ShaderUtil.IsPassCompiled
untuk memeriksa status kompilasi dari varian naungan. Ketika status berubah Uncompiled ke Compiled, kompilasi selesai.
Jika Anda tidak tahu bahan mana yang Anda minati, atau jika Anda tertarik dengan lebih dari satu materi, Anda dapat menggunakan ShaderUtil.anythingCompiling
untuk mendeteksi apakah Unity membandingkan varian naungan secara asinkron. Ketika perubahan ini dari true
hingga false
, semua kompilasi saat ini selesai.
Solusi rendering canggih mengandalkan menghasilkan data sekali dan menggunakannya dalam bingkai nanti. Jika Editor menggunakan naungan placeholder selama proses ini, mungkin mencemari data yang dihasilkan. Jika ini terjadi, Anda dapat melihat warna cyan atau artefak rendering lainnya di tempat kejadian Anda, bahkan setelah varian naungan telah menyelesaikan compiling.
Untuk menghindari ini, Anda dapat:
Secara default, kompilasi Shader asinkron bekerja di Game dan Scene viewsTampilan interaktif ke dunia yang Anda buat. Anda menggunakan Adegan Lihat untuk memilih dan posisi pemandangan, karakter, kamera, lampu, dan semua jenis lain dari Game Object. More info
Lihat di Glossary. Jika Anda ingin menggunakannya dalam alat Editor kustom, Anda dapat mengaktifkannya melalui C# untuk alat kustom Anda.
Untuk melakukan ini, Anda dapat mengaktifkan kompilasi naungan asinkron untuk panggilan rendering tertentu.
Anda dapat membuat alat kustom Anda menarik sesuatu selain naungan placeholder untuk setiap bahan. Cara ini, Anda dapat menghindari rendering di cyan polos, dan bukan menggambar sesuatu yang lain sementara varian warna kompilasi.
Untuk memeriksa apakah varian naungan tertentu telah dikompilasi, lihat Mendeteksi kompilasi naungan asinkron.
Untuk memicu kompilasi secara manual, Anda dapat menggunakan ShaderUtil.CompilePass
. Cara ini, Anda dapat menghindari rendering dengan placeholder cyan, dan menarik sesuatu yang lain sementara varian naungan kompilasi.