Halaman ini berisi informasi tentang menggunakan blok Tags
pada kode ShaderLabBahasa Unity untuk mendefinisikan struktur benda-benda Shader. More info
Lihat di Glossary Anda untuk menetapkan tag ke Pass. Ini juga berisi informasi tentang menggunakan tag LightMode
.
Untuk informasi tentang bagaimana objek ShaderProgram yang berjalan di GPU. More info
Lihat di Glossary bekerja, dan hubungan antara 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, SubShaders dan Passes, lihat Dasar objek Shader.
Tag adalah pasangan nilai kunci dari data yang dapat Anda berikan kepada Pass. Unity menggunakan tag dan nilai yang telah ditentukan untuk menentukan bagaimana dan ketika membuat Pass yang diberikan. Anda juga dapat membuat tag Pass kustom Anda sendiri dengan nilai kustom, dan mengaksesnya dari kode C#.
Tag Pass yang paling umum digunakan adalah tag LightMode
; ini digunakan dalam semua pipa render. Tag Pass lainnya bervariasi oleh 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. Untuk informasi lebih lanjut, lihat halaman berikut:
Feature name | Built-in Render Pipeline | Universal Render Pipeline (URP) | High Definition Render Pipeline (HDRP) | Custom SRP |
---|---|---|---|---|
ShaderLab: Pass Tags block | Yes | Yes | Yes | Yes |
ShaderLab: LightMode Pass tag | Yes | Yes | Yes | Yes |
Untuk menetapkan Tag ke Pass di ShaderLab, Anda menempatkan blok Tags
di dalam blok Pass
.
Perhatikan bahwa kedua SubShaders dan Passes menggunakan blok Tags
, tetapi mereka bekerja berbeda. Menetapkan tag SubShader ke Pass tidak berpengaruh, dan sebaliknya. Perbedaannya adalah di mana Anda menempatkan blok Tags
:
Tags
di dalam blok Pass
.Tags
di dalam blok SubShader
tetapi di luar blok Pass
.Untuk informasi tentang menetapkan tag ke SubShader, lihat Menetapkan tag ke SubShader.
Signature | Function |
---|---|
Tags {"<name1>" = "<value1>" "<name2>" = "<value2>"} |
Berlaku tag yang diberikan ke Pass. Anda dapat mendefinisikan banyak tag yang Anda sukai. |
Untuk mengakses nilai label Pass dari 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 dapat menggunakan API Shader.FindPassTagValue. Ini bekerja untuk Tag Pass yang telah ditentukan Unity, dan untuk Tag Pass kustom yang telah Anda buat.
Sitemap Ada beberapa API yang bekerja langsung dengan tag LightMode Pass. Untuk informasi lebih lanjut, lihat Note:.Menggunakan tag LightMode dengan skrip C#.
Tag LightMode
adalah tag Pass yang telah ditentukan yang digunakan Unity untuk menentukan apakah untuk mengeksekusi Pass selama bingkai tertentu, ketika selama bingkai Unity mengeksekusi Pass, dan apa yang dilakukan Unity dengan output.
Sitemap Tag Note: tidak terkait dengan LightMode
enum, yang berkaitan dengan pencahayaan.LightMode enum, which relates to lighting.
Setiap render pipa menggunakan tag LightMode
, tetapi nilai yang telah ditentukan dan maknanya bervariasi. Untuk informasi lebih lanjut, lihat Syntax dan nilai yang valid.
Di Pipeline Render Built-in, jika Anda tidak mengatur tag LightMode
, Unity membuat Pass tanpa pencahayaan atau bayangan; ini pada dasarnya sama dengan memiliki nilai LightMode
Always
. Dalam Render Pipeline Alkitab, Anda dapat menggunakan nilai SRPDefaultUnlit
untuk referensi Passes tanpa tag LightMode.
Signature | Function |
---|---|
"CahayaMode" = "[value]" | Mengatur nilai LightMode untuk Pass ini. |
Nilai valid untuk tag ini tergantung pada pipa render.
Bahan.SetShaderPassEnabled dan ShaderTagId menggunakan nilai tag LightMode
untuk menentukan bagaimana Unity menangani Pass yang diberikan.
Dalam Render Pipeline Alkitab, Anda dapat membuat nilai kustom untuk tag LightMode
. Anda kemudian dapat menggunakan nilai-nilai kustom ini untuk menentukan yang Passes untuk menggambar selama panggilan yang diberikan ke ScriptableRenderContext.DrawRenderers, dengan mengkonfigurasi bangunan DrawingSettings. Untuk informasi lebih lanjut dan contoh kode, lihat Membuat loop render sederhana di Pipa Render Scriptable kustom.
Shader "Examples/ExampleLightMode"
{
SubShader
{
Pass
{
Tags { "LightMode" = "Always" }
// The rest of the code that defines the Pass goes here.
}
}
}