keywordSpace
The local keyword space of this shader.
Read time 1 minuteLast updated 13 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.
keywordSpace- All keywords declared in the source file. For more information, see Declaring shader keywords.
- All keywords declared in dependencies of that source file. This means all Shaders that are included via the Fallback command, and all Passes that are included via the UsePass command.
- All keywords that Unity adds automatically. For more information, see Unity's predefined shader keywords.
This example iterates over the local shader keywords in the local keyword space for a graphics shader. It determines whether they are overridden by a global shader keyword, and prints their state.
using UnityEngine;using UnityEngine.Rendering;public class KeywordExample : MonoBehaviour{ public Material material; void Start() { CheckShaderKeywordState(); } void CheckShaderKeywordState() { // Get the instance of the Shader class that the material uses var shader = material.shader; // Get all the local keywords that affect the Shader var keywordSpace = shader.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 = material.IsKeywordEnabled(localKeyword) ? "enabled" : "disabled"; Debug.Log("Local keyword with name of " + localKeyword.name + " is " + state); } } }}