Unity URP lit shader: один материал отличается от «тонированных» объектов

#unity3d #shader

#unity3d #шейдер

Вопрос:

Я очень новичок в программировании шейдеров, и мне было бы интересно модифицировать urp lit shader для поддержки настройки свойств в объектах с помощью MaterialPropertyBlock во время выполнения.

Цель состоит в том, чтобы несколько объектов из одного и того же материала были «тонированы» в разные цвета для каждого.

Спасибо!

Ответ №1:

Я не разбираюсь в программировании шейдеров, но если вы хотите, чтобы несколько объектов, совместно использующих материал, были окрашены в разные цвета, может сработать такой сценарий :

 public class Tint : MonoBehaviour
{
    public Color TintColor;

    [Range(0,1)]
    public float TintIntensity = 0.5f;
        
    private void OnEnable()
    {
        Material material = GetComponent<MeshRenderer>().material;
        material.color = Color.Lerp(material.color,TintColor,TintIntensity);
    }

}
  

Комментарии:

1. Это приведет к утечке одного материального объекта за вызов. Вы должны использовать MaterialPropertyBlocks: docs.unity3d.com/ScriptReference/MaterialPropertyBlock.html