keywordSpace
The local keyword space of this compute shader.
Read time 1 minuteLast updated 10 days ago
Definition
- Type: Property
- Namespace: UnityEngine
- Assembly: UnityEngine.CoreModule
public LocalKeywordSpace keywordSpace { get; }
Remarks
Shader keywords determine which shader variants Unity uses. For information on working with local shader keywords and global shader keywords and how they interact, see Using shader keywords with C# scripts.
keywordSpaceThis example iterates over the local shader keywords in the local keyword space for a compute shader. It determines whether they are overridden by a global shader keyword, and prints their state.
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); } } }}
Additional Resources: Shader variants and keywords, LocalKeyword, GlobalKeyword, ComputeShader.EnableKeyword, ComputeShader.DisableKeyword, ComputeShader.SetKeyword, ComputeShader.IsKeywordEnabled, ComputeShader.enabledKeywords, ComputeShader.shaderKeywords.