31 lines
965 B
C#
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);
|
|
}
|
|
}
|
|
}
|
|
} |