ShaderLab: menetapkan nama ke Pass
ShaderLab: Tag Pass yang telah ditentukan di Pipeline Render Built-in

ShaderLab: menetapkan tag ke Pass

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.

Overview

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:

Kompatibilitas pipa Render

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

Menggunakan blok Tag

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:

  • Untuk menentukan tag Pass, letakkan blok Tags di dalam blok Pass.
  • Untuk menentukan tag SubShader, letakkan blok 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.

Menggunakan tag Pass dengan skrip C#

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

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.

Syntax dan nilai yang valid

Signature Function
"CahayaMode" = "[value]" Mengatur nilai LightMode untuk Pass ini.

Nilai valid untuk tag ini tergantung pada pipa render.

Menggunakan tag LightMode dengan skrip C#

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.

Examples

Shader "Examples/ExampleLightMode"
{
    SubShader
    {
        Pass
        {    
              Tags { "LightMode" = "Always" }
            
              // The rest of the code that defines the Pass goes here.
        }
    }
}
ShaderLab: menetapkan nama ke Pass
ShaderLab: Tag Pass yang telah ditentukan di Pipeline Render Built-in