Modifying HDRP Materials in C#
When you change a
Material’s properties
in the Inspector, HDRP automatically validates a material when you change its properties in the inspector. This means that HDRP automatically sets up material properties, keywords, and passes.
However, if you use a script to change the properties of a material made from an HDRP Shader, or a ShaderGraph that has an HDRP target, HDRP doesn’t validate the material automatically.
When a material in your scene isn't valid, it might make a property change have no effect or cause the material to fail to render.
To do this, when you modify an HDRP material in C#:
Use the HDMaterial API
to change a property and validate it if it includes a method for the property the shader uses.
Use ValidateMaterial
after you change a property manually to validate the material. Use this method when
HDMaterial
doesn't include a method for the property the shader uses.
You can find more information about Material properties in Unity in the
Material section of the Unity Manual
. For more information about shader variants, shader keywords, and access in standalone builds, see
Branching, variants, and keywords
.
Modify a Material with the HDMaterial API
To modify a Material property, use the methods in the
HDMaterial
class. When you use a method in
HDMaterial
to change a property, it automatically validates the Material.
The
HDMaterial
class contains methods that correspond to certain material properties. For a full list of
HDMaterial
methods, see the
HDMaterial API documentation
.
The following example script:
Creates a Material with the
HDRP/Lit
shader.
Uses
HDmaterial.SetAlphaClipping
to enable alpha clipping.
Uses
HDmaterial.SetAlphaCutoff
to set the cutoff value to 0.2.
Automatically sets keywords appropriately because it uses the
HDmaterial
API.
using UnityEngine.Rendering.HighDefinition;
public class CreateCutoutMaterial : MonoBehaviour
void Start()
var material = new Material(Shader.Find("HDRP/Lit"));
HDMaterial.SetAlphaClipping(material, true);
HDMaterial.SetAlphaCutoff(material, 0.2f);
Modify and validate a Material with ValidateMaterial
To validate a Material property which isn’t included in HDMaterial
, use the ValidateMaterial
method to force HDRP to validate the material.
The following example script:
Creates a Material with the HDRP/Lit shader.
Uses _AlphaCutoffEnable
to enable alpha clipping.
Uses "_AlphaCutoff" to set the cutoff value to 0.2.
Uses the ValidateMaterial
function to validate this Material.
using UnityEngine.Rendering.HighDefinition;
public class CreateCutoutMaterial : MonoBehaviour
void Start()
var material = new Material(Shader.Find("HDRP/Lit"));
material.SetFloat("_AlphaCutoffEnable", 1.0f);
material.SetFloat("_AlphaCutoff", 0.2f);
HDMaterial.ValidateMaterial(material);