Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

ShaderLab: присвоение имени по паролю

Эта страница содержит информацию об использовании блока Name в вашей ShaderLab Язык Unity для определения структуры объектов Shader. Подробнее
См. в коде Словарь
присвоение имени проходу . Для получения информации об определении проходов см. ShaderLab: определение прохода. Для получения информации о том, как Shaderпрограмма работает на GPU. Подробнее
См. в Словарь
работы объектов и отношения между объектами шейдеров, субшейдерами и проходами. , см. основные сведения об объекте шейдера.

Паспорт может иметь имя. Вам необходимо ссылаться на Pass по имени в команде UsePass и в некоторых API C#. Имя прохода отображается в инструменте Frame Debugger.

Совместимость конвейера рендеринга

Название функции Встроенный конвейер рендеринга Универсальный конвейер рендеринга (URP) Конвейер рендеринга высокого разрешения (HDRP) Пользовательская SRP
ShaderLab: Name block Да Да Да Да

Использование блока имени

Чтобы присвоить имя пропуску в ShaderLab, вы помещаете блок Name внутрь блока Pass.

Подпись Функции
Name "<name>" Устанавливает имя прохода.

Внутренне Unity преобразует имя в верхний регистр. Когда вы ссылаетесь на имя в коде ShaderLab, вы должны использовать вариант в верхнем регистре; например, если значение «example», вы должны указать его как EXAMPLE.

Если несколько проходов в одном и том же подшейдере имеют одно и то же имя, Unity использует первый проход в коде.

Использование имени Pass в сценариях C#

Чтобы получить доступ к имени прохода из скриптов C#фрагмента кода, позволяющего создавать собственные компоненты, триггер игровые события, изменяйте свойства компонентов с течением времени и реагируйте на действия пользователя любым удобным для вас способом. Подробнее
См. в Словарь
, вы можете использовать такие API, как Material.FindPass, Material.GetPassName или ShaderData.Pass.Name.

Примечание. Material.GetShaderPassEnabled и Material.SetShaderPassEnabled не ссылаются на проходы по имени; вместо этого они ссылаются на проходы, используя значение тега LightMode.

Примеры

В этом примере кода создается объект Shader с именем ContainsNamedPass, который содержит Pass с именем ExampleNamedPass.

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

Затем вы можете использовать следующий код C# для запроса имени этого прохода:

using UnityEngine; public class GetPassName : MonoBehaviour { // Place this script on a GameObject with a MeshRenderer component void Start() { // Get the material var material = GetComponent().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); } }
Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
Руководство Unity 2021.3