Files
Northbound/Assets/FlatKit/[Render Pipeline] URP/RenderFeatures/Common/RendererFeatureUtils.cs
2026-01-25 11:27:33 +09:00

31 lines
965 B
C#

using UnityEngine;
using UnityEngine.Rendering;
namespace FlatKit {
public static class RendererFeatureUtils {
public static void SetKeyword(Material material, string keyword, bool enabled) {
if (material == null) {
return;
}
#if UNITY_2021_2_OR_NEWER
if (material.shader != null) {
// Unity 2021.2+ lets us query the shader's keyword space; only call SetKeyword when the symbol is actually declared
// to avoid "keyword doesn't exist" errors on Unity 6.3.
var keywordSpace = material.shader.keywordSpace;
LocalKeyword localKeyword = keywordSpace.FindKeyword(keyword);
if (localKeyword.isValid) {
material.SetKeyword(localKeyword, enabled);
return;
}
}
#endif
if (enabled) {
material.EnableKeyword(keyword);
} else {
material.DisableKeyword(keyword);
}
}
}
}