📜  hdrp lit 改变发射值 - C# (1)

📅  最后修改于: 2023-12-03 15:01:07.607000             🧑  作者: Mango

使用C#改变HDRP Lit的发射值

在HDRP(高清晰渲染管线)中,Lit材质是一种非常常见的材质类型,可以产生高度逼真的渲染效果。其中,发射值(Emissive)是调整光源的亮度和颜色的主要参数之一。在本文中,我们将介绍如何使用C#编写代码来修改HDRP Lit的发射值。

1. 获取Lit材质

在代码中,我们需要先获取到当前游戏对象的Lit材质,才能对其属性进行修改。可以使用以下代码获取Lit材质:

using UnityEngine;
using UnityEngine.Rendering.HighDefinition;

public class ChangeEmissive : MonoBehaviour
{
    private Material litMaterial;

    private void Start()
    {
        litMaterial = GetComponent<Material>();
    }
}

在Start()方法中,我们通过GetComponent()方法来获取当前游戏对象的Material组件,然后将其转换为Lit材质(HighDefinitionMaterial类型)。

2. 修改发射颜色

接下来,我们可以使用以下代码修改Lit材质的发射颜色:

    private void ChangeEmissiveColor(Color emissiveColor)
    {
        if (litMaterial != null)
        {
            litMaterial.SetVector("_EmissiveColor", emissiveColor);
        }
    }

其中,SetVector()方法可以设置Lit材质的发射颜色。需要注意的是,发射颜色是通过一个Vector4类型的变量来表示的,其中RGBA分别对应颜色的四个分量。因此,我们需要将所需的颜色转换为Vector4类型。例如,以下代码可以将发射颜色设置为红色:

    private void Start()
    {
        litMaterial = GetComponent<Material>();
        ChangeEmissiveColor(new Color(1, 0, 0));
    }

在Start()方法中,我们可以调用ChangeEmissiveColor()方法,将发射颜色设置为红色。

3. 修改发射强度

除了修改发射颜色外,我们还可以使用以下代码修改Lit材质的发射强度:

    private void ChangeEmissiveIntensity(float emissiveIntensity)
    {
        if (litMaterial != null)
        {
            litMaterial.SetFloat("_EmissiveIntensity", emissiveIntensity);
        }
    }

其中,SetFloat()方法可以设置Lit材质的发射强度。需要注意的是,发射强度是一个标量值,取值范围为0到正无穷大。因此,我们可以将所需的强度值设置为一个浮点数。例如,以下代码可以将发射强度设置为3:

    private void Start()
    {
        litMaterial = GetComponent<Material>();
        ChangeEmissiveIntensity(3.0f);
    }

在Start()方法中,我们可以调用ChangeEmissiveIntensity()方法,将发射强度设置为3。

4. 结语

通过上述代码,我们可以使用C#来修改HDRP Lit的发射值。需要注意的是,发射颜色和发射强度的修改是相互独立的,因此可以根据实际需要来选择修改方式。此外,我们也可以将以上代码封装成一个更加通用的方法,从而方便在其他代码中调用。