docs.unity3d.com
    Show / Hide Table of Contents

    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);
    
      }
    
    }
    
    Back to top Copyright © 2023 Unity Technologies — Terms of use
    Generated by DocFX
    on 02 June 2023