Unity 6.3
0 онлайн 88 гостей 3 в системе
Вход

RayTracingShader.IsKeywordEnabled

Declaration

public bool IsKeywordEnabled(string keyword);
public bool IsKeywordEnabled(ref Rendering.LocalKeyword keyword);

Параметры

Параметр Описание
ключевое слово Локальное ключевое слово для проверки.

Возвращаемое значение

логическое Возвращает true, если указанные LocalKeyword включены для данного шейдера трассирования лучей. В противном случае возвращает false.

Описание

Проверяет, включено ли ключевое слово локального шейдера для данного шейдера для трассирования лучей.

Ключевые слова шейдера определяют, какие варианты шейдера использует Unity. ключевые слова локального шейдера и глобальные ключевые слова шейдера и как они взаимодействуют, см. Использование ключевых слов шейдера со скриптами C#.

Если вы проходите в LocalKeyword и не существует в международном праве. keywordSpace, эта функция возвращает false. Если вы передаете строку и LocalKeyword с этим name не существует в keywordSpace, эта функция возвращает false.

Версия этой функции, которая принимает строку в качестве параметра, медленнее версии, которая принимает строку в качестве параметра. LocalKeyword. Если вы вызываете эту функцию более одного раза, то лучше всего создать LocalKeyword структуру, кэшируйте её и используйте.

Примечание: A LocalKeyword является специфическим для одного Shader, ComputeShader или RayTracingShader Вы не можете использовать его с другими Shader, ComputeShader или RayTracingShader экземпляры, даже если они объявляют ключевые слова с одинаковым названием.

Этот пример перебирает локальные ключевые слова шейдера в локальном пространстве ключевых слов шейдера трассировки лучей. Он определяет, переопределены ли они глобальным ключевым словом шейдера, и выводит их состояние.

using UnityEngine;
using UnityEngine.Rendering;

public class Example : MonoBehaviour { public RayTracingShader rayTracingShader;

void Start() { CheckShaderKeywordState(); }

void CheckShaderKeywordState() { // Get all the local keywords that affect the RayTracingShader var keywordSpace = rayTracingShader.keywordSpace;

// Iterate over the local keywords foreach (var localKeyword in keywordSpace.keywords) { // If the local keyword is overridable, // and a global keyword with the same name exists and is enabled, // then Unity uses the global keyword state if (localKeyword.isOverridable && Shader.IsKeywordEnabled(localKeyword.name)) { Debug.Log("Local keyword with name of " + localKeyword.name + " is overridden by a global keyword, and is enabled"); } // Otherwise, Unity uses the local keyword state else { var state = rayTracingShader.IsKeywordEnabled(localKeyword) ? "enabled" : "disabled"; Debug.Log("Local keyword with name of " + localKeyword.name + " is " + state); } } } }

Дополнительные ресурсы: Варианты шейдеров и ключевые слова, LocalKeyword, GlobalKeyword, EnableKeyword, DisableKeyword, SetKeyword, keywordSpace, enabledKeywords, shaderKeywords.