版本: Unity 6 (6000.0)
语言英语
  • C#

ComputeShader.keywordSpace

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交内容,但我们确实会阅读用户提出的每项建议,并在适用的情况下进行更新。

关闭

提交失败

由于某些原因,您的建议更改无法提交。请 <a>稍后再试</a>。感谢您花时间帮助我们提高 Unity 文档的质量。

关闭

取消

切换到手册
public Rendering.LocalKeywordSpace keywordSpace;

描述

此计算着色器的局部关键字空间。

着色器关键字决定 Unity 使用哪些着色器变体。有关使用 局部着色器关键字全局着色器关键字 以及它们如何交互的信息,请参见 使用 C# 脚本的着色器关键字

keywordSpace 表示在计算着色器源文件中声明的所有关键字。有关在着色器源文件中声明和使用着色器关键字的信息,请参见 着色器关键字

此示例迭代计算着色器局部关键字空间中的局部着色器关键字。它确定它们是否被全局着色器关键字覆盖,并打印它们的状态。

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