ShaderLab: mendefinisikan Pass
ShaderLab: menetapkan tag ke Pass

ShaderLab: menetapkan nama ke Pass

Halaman ini berisi informasi tentang menggunakan blok Name pada kode ShaderLabBahasa Unity untuk mendefinisikan struktur benda-benda Shader. More info
Lihat di Glossary
Anda untuk menetapkan nama ke Pass. Untuk informasi tentang menentukan Passes, lihat ShaderLab: mendefinisikan Pass. 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.

Pass dapat memiliki nama. Anda harus merujuk Lulus dengan nama dalam perintah UsePass, dan dalam beberapa API C #. Nama Pass terlihat pada alat Bingkai Debugger.

Kompatibilitas pipa Render

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
ShaderLab: Name block Yes Yes Yes Yes

Menggunakan blok nama

Untuk menetapkan nama ke Pass di ShaderLab, Anda menempatkan blok Name di dalam blok Pass.

Signature Function
Name "<name>" Mengatur nama Pass.

Secara internal, Unity mengubah nama menjadi huruf besar. Ketika Anda merujuk nama dalam kode ShaderLab, Anda harus menggunakan varian huruf besar; misalnya, jika nilainya “contoh”, Anda harus merujuk sebagai EXAMPLE.

Jika lebih dari satu Pass di SubShader yang sama memiliki nama yang sama, Unity menggunakan Pass pertama dalam kode.

Menggunakan nama Pass dengan skrip C#

Untuk mengakses nama 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 seperti Bahan.FindPass, Bahan.GetPassName, atau ShaderData.Pass.Name.

Note: Bahan.GetShaderPassEnabled dan Bahan.SetShaderPassEnabled tidak merujuk Lulus berdasarkan nama; bukan, mereka referensi Lulus menggunakan nilai Tag LightMode.

Examples

Kode contoh ini menciptakan objek Shader yang disebut BerisiNamedPass, yang berisi Pass yang disebut ContohNamedPass.

Shader "Examples/ContainsNamedPass"
{
    SubShader
    {
        Pass
        {    
              Name "ExampleNamedPass"
            
              // The rest of the code that defines the Pass goes here.
        }
    }
}

Anda kemudian dapat menggunakan kode C# berikut untuk meminta nama Pass ini:

using UnityEngine;

public class GetPassName : MonoBehaviour
{
    // Place this script on a GameObject with a MeshRenderer component
    
    void Start() {
        // Get the material
        var material = GetComponent<MeshRenderer>().material;

        // Get the name of the first Pass in the active SubShader
        // of the Shader object assigned to the material
        var passName = material.GetPassName(0);

        // Print the name to the console
        Debug.Log(passName);
    }
}

ShaderLab: mendefinisikan Pass
ShaderLab: menetapkan tag ke Pass