Shader assets
Kompilasi naungan asinkron

Shader kompilasi

Overview

Setiap kali Anda membangun proyek Anda, Editor Unity mengkompilasi semua naungan yang Anda buat: setiap varian shaderProgram yang berjalan di GPU. More info
Lihat di Glossary
yang diperlukan, untuk setiap API grafis yang diperlukan.

Ketika Anda bekerja di Editor Unity, Editor tidak mengumpulkan semuanya di muka. Ini karena membandingkan setiap varian untuk setiap API grafis dapat mengambil waktu yang sangat lama.

Sebagai gantinya, Editor Unity melakukan ini:

  • Ketika mengimpor aset naungan, ia melakukan beberapa pemrosesan minimal (seperti generasi Shader Permukaan).
  • Ketika perlu menunjukkan varian naungan, itu memeriksa folder Library/ShaderCache.
  • Jika menemukan varian naungan sebelumnya yang menggunakan kode sumber identicial, itu menggunakan itu.
  • Jika tidak menemukan pertandingan, itu mengkompilasi varian naungan yang diperlukan dan menyimpan hasilnya ke cache.
    • Sitemap Jika Anda mengaktifkan Note:, itu melakukan ini di latar belakang dan menunjukkan naungan placeholder dalam waktu maksud.Kompilasi naungan asinkron, it does this in the background and shows a placeholder shader in the meantime.

kompilasi Shader dilakukan menggunakan proses yang disebut UnityShaderCompiler. Beberapa proses UnityShaderCompiler dapat dimulai (hanya satu per inti CPU di mesin Anda), sehingga pada pemain membangun kompilasi warna waktu dapat dilakukan sejajar. Meskipun Editor tidak mengkompensasi naungan, proses kompiler tidak melakukan apa-apa dan tidak mengkonsumsi sumber daya komputer.

Folder cache naungan dapat menjadi cukup besar, jika Anda memiliki banyak naungan yang berubah sering. Aman untuk menghapus folder ini; itu hanya menyebabkan Unity untuk mengulangi varian naungan.

Pada pemain membangun waktu, semua varian naungan "tidak dikompilasi" dikompilasi, sehingga mereka berada dalam data game bahkan jika editor tidak terjadi untuk menggunakannya.

Penyaring naungan yang berbeda

Platform yang berbeda menggunakan kompiler naungan yang berbeda untuk kompilasi program warna sebagai berikut:

  • Platform yang menggunakan Direct X menggunakan kompilasi FXC HLSL Microsoft.
  • Platform yang menggunakan OpenGL (Core & ES) menggunakan kompilasi FXC HLSL Microsoft, diikuti dengan terjemahan bytecode ke GLSL menggunakan HLSLcc.
  • Platform yang menggunakan Metal menggunakan compiler FXC HLSL Microsoft, diikuti dengan terjemahan bytecode ke Metal, menggunakan HLSLcc.
  • Platform yang menggunakan Vulkan menggunakan compiler FXC HLSL Microsoft, diikuti dengan terjemahan bytecode ke SPIR-V, menggunakan HLSLcc.
  • Platform lain, seperti platform konsol, gunakan kompiler masing-masing.
  • Permukaan ShaderCara merampingkan naungan menulis untuk Pipeline Render Built-in. More info
    Lihat di Glossary
    menggunakan HLSL dan MojoShader untuk langkah analisis generasi kode.

Anda dapat mengkonfigurasi berbagai pengaturan kompilasi naungan menggunakan pragma directives.

Preprocessor Caching

kompilasi Shader melibatkan beberapa langkah. Salah satu langkah pertama adalah preprocessing. Selama langkah ini, program yang disebut preprocessor menyiapkan kode sumber naungan untuk kompiler.

Dalam versi sebelumnya Unity, Editor menggunakan preprocessor yang disediakan oleh compiler naungan untuk platform saat ini. Sekarang, Unity menggunakan preprocessor sendiri, juga disebut Caching Shader Preprocessor.

The Caching Shader Preprocessor dioptimalkan untuk impor dan kompilasi warna yang lebih cepat. Ini bekerja dengan caching data preprocessing menengah, sehingga Editor hanya perlu parse termasuk file ketika konten mereka berubah, yang membuat membandingkan beberapa varian dari naungan yang sama lebih efisien.

Untuk informasi rinci tentang perbedaan antara Preprocessor Caching Shader dan perilaku sebelumnya, lihat forum Unity: .

Membangun waktu pengupasan

Sementara membangun permainan, Unity dapat mendeteksi bahwa beberapa varian naungan internal tidak digunakan oleh permainan, dan mengecualikan (“strip”) mereka dari membangun data. Untuk informasi lebih lanjut, lihat 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
.

Shader assets
Kompilasi naungan asinkron