keywordSpace
The local keyword space of this ray tracing shader.
Read time 1 minuteLast updated 4 days ago
Definition
- Type: Property
- Namespace: UnityEngine.Rendering
- 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 ray tracing 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 RayTracingShader rayTracingShader; void Start() { CheckShaderKeywordState(); } void CheckShaderKeywordState() { // Get all the local keywords that affect the ray tracing shader 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); } } }}
Additional Resources: Shader variants and keywords, LocalKeyword, GlobalKeyword, RayTracingShader.EnableKeyword, RayTracingShader.DisableKeyword, RayTracingShader.SetKeyword, RayTracingShader.IsKeywordEnabled, RayTracingShader.enabledKeywords, RayTracingShader.shaderKeywords.