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

ComputeShader.IsKeywordEnabled

Declaration

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

Параметры

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

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

логическое Возвращает 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 ComputeShader computeShader;

void Start() { CheckShaderKeywordState(); }

void CheckShaderKeywordState() { // Get all the local keywords that affect the Compute Shader var keywordSpace = computeShader.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 = computeShader.IsKeywordEnabled(localKeyword) ? "enabled" : "disabled"; Debug.Log("Local keyword with name of " + localKeyword.name + " is " + state); } } } }

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