添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
爱健身的啄木鸟  ·  overflow-y: auto ...·  4 月前    · 
发财的蛋挞  ·  中国新闻网·  6 月前    · 
腼腆的松球  ·  Could not determine ...·  8 月前    · 

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);