Dalam Unity, ketika Anda bekerja dengan naungan yang merupakan bagian dari pipa grafis, Anda biasanya bekerja dengan contoh kelas ShaderProgram yang berjalan di GPU. More info
Lihat di Glossary. Contoh kelas Shader
disebut Shader object.
Objek Shader adalah cara yang spesifik untuk bekerja dengan program naungan; itu adalah pembungkus untuk program naungan dan informasi lainnya. Ini memungkinkan Anda mendefinisikan beberapa program naungan dalam file yang sama, dan memberitahukan Unity bagaimana menggunakannya.
Feature name | Built-in Render PipelineA series of operations that take the contents of a Scene, and displays them on a screen. Unity lets you choose from pre-built render pipelines, or write your own. More info See in Glossary |
Universal Render Pipeline (URP) | High Definition Render Pipeline (HDRP) | Custom SRP |
---|---|---|---|---|
Shader objects | Yes | Yes | Yes | Yes |
Objek Shader berisi program naungan, instruksi untuk mengubah pengaturan pada GPU (secara kolektif disebut state render), dan informasi yang memberi tahu Unity bagaimana menggunakannya.
Anda menggunakan objek Shader dengan materialsAset yang menentukan bagaimana permukaan harus diberikan. More info
Lihat di Glossary untuk menentukan penampilan 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 Anda.
Anda dapat membuat benda-benda Shader dalam dua cara. Setiap memiliki jenis aset sendiri:
.shader
.Cara apa pun yang Anda buat Objek Shader, Unity mewakili hasil dalam cara yang sama secara internal.
Objek Shader memiliki struktur bersarang. Ini mengatur informasi ke dalam struktur yang disebut SubShaders dan Passes. Ini mengatur program naungan menjadi shader variants.
Objek Shader mengandung:
Anda juga dapat mendefinisikan informasi tambahan seperti kode naungan bersama, atau apakah untuk menggunakan editor kustom. Untuk informasi tentang mendefinisikan objek Shader, lihat ShaderLab: mendefinisikan objek Shader.
SubShaders memungkinkan Anda memisahkan Objek Shader menjadi bagian yang kompatibel dengan perangkat keras yang berbeda, render pipa, dan pengaturan runtime.
SubShader mengandung:
Anda juga dapat mendefinisikan informasi tambahan, seperti state render yang umum untuk semua Pass. Untuk informasi tentang segala sesuatu yang dapat Anda tentukan dalam SubShader, lihat ShaderLab: mendefinisikan SubShader.
Lulus mengandung:
Anda juga dapat mendefinisikan informasi tambahan seperti nama. Untuk informasi tentang segala sesuatu yang dapat Anda tentukan di Pass, lihat ShaderLab: mendefinisikan Pass.
Program naungan yang Pass mengandung terorganisasi menjadi varian naungan. Varietas Shader berbagi kode umum, tetapi memiliki fungsi yang berbeda ketika kata kunci yang diberikan diaktifkan atau dinonaktifkan.
Jumlah varian naungan di Pass tergantung pada berapa banyak kata kunci yang Anda tentukan dalam kode naungan Anda, dan platform target. Setiap Pass berisi setidaknya satu varian.
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.
Ini adalah deskripsi tingkat tinggi tentang bagaimana Unity menggunakan benda Shader untuk membuat geometri, di semua pipa render.
Sebelum Unity menggunakan objek Shader:
Ketika geometri render pertama Unity menggunakan objek Shader, atau ketika perubahan pipa render warna LOD nilai atau aktif:
Unity dapat mengidentifikasi geometri yang menggunakan varian naungan yang sama dan mengaturnya menjadi batches untuk rendering yang lebih efisien. Setelah per bingkai, untuk setiap batch geometri: