ShaderKeywordSelect a shader keyword from a shader, material or renderer. (Requires Unity 2021.2+)
Parameters:
- [Optional]
string name: the target. Be a property or a callback that returns ashader,materialorrenderer. When omitted, it will try to get theRenderercomponent from the current component. - [Optional]
int index=0: which material index to use when the target is aRenderer.
[ShaderKeyword] public string shaderKeywordString; [ShaderKeyword(0)] public string shaderKeywordIndex; [Separator("By Target")] [GetComponent] public Renderer targetRenderer; [ShaderKeyword(nameof(targetRenderer))] public string shaderKeywordRenderer; private Material GetMat() => targetRenderer.sharedMaterial; [ShaderKeyword(nameof(GetMat))] public string shaderKeywordMat; private Shader GetShader() => targetRenderer.sharedMaterial.shader; [ShaderKeyword(nameof(GetShader))] public string shaderKeywordShader;

It works with ShowInInspector
[ShowInInspector, ShaderKeyword] private string ShowShaderKeywordString { get => shaderKeywordString; set => shaderKeywordString = value; }

It works with ShowInInspector/Button parameters & return value
[ShowInInspector] [ShaderParam] private string ShowShaderParam([ShaderParam] string shaderS) => shaderS; [Button] [ShaderParam] private string ShowShaderParam([ShaderParam] string shaderS) => shaderS;
