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.
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 |
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.
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.
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);
}
}