ict.xunfei/Assets/Scripts/temp_mat_script.cs

82 lines
2.7 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class temp_mat_script : MonoBehaviour
{
public MeshRenderer uav_lighter_meshrenderer;//无人机灯光渲染器
public Material uav_lighter_mat;//无人机灯光材质
public Shader _uav_lighter_shader;
// Start is called before the first frame update
void Start()
{
//if (uav_lighter_meshrenderer != null)
// uav_lighter_mat = uav_lighter_meshrenderer.material;
}
[Space(10), Range(0, 1)]
public int use_emission_intensity = 1;
public string color_value = "#FF0000";
public Color color;
[Range(0, 1000)]
public float emission_intensity = 200;
[Range(0, 1)]
public float exposure_weight = 0.3f;
[Range(0,1)]
public float metallic = 0;
[Range(0, 1)]
public float smoothness = 0;
[Range(0,100)]
public float albedo_affect_emissive;
[Range(0,100) ]
public float emissive_intensity_unit;
// Update is called once per frame
void Update()
{
uav_lighter_meshrenderer.material.SetColor("_BaseColor", color);
//uav_lighter_meshrenderer.material.SetFloat("_Metallic", metallic);
//uav_lighter_meshrenderer.material.SetFloat("_Smoothness", smoothness);
//uav_lighter_meshrenderer.material.SetFloat("_UseEmissiveIntensity", use_emission_intensity);
uav_lighter_meshrenderer.material.SetColor("_MColor", color);
//uav_lighter_meshrenderer.material.SetFloat("_AlbeoAffectEmissive", albedo_affect_emissive);
//uav_lighter_meshrenderer.material.SetFloat("_EmissiveIntensityUnit", emissive_intensity_unit);
uav_lighter_meshrenderer.material.SetFloat("_Intensity", emission_intensity);
uav_lighter_meshrenderer.material.SetFloat("_ExposureWeight", (1 - exposure_weight));
}
[ContextMenu("Light")]
public void OpenLighter()
{
//uav_lighter_mat = new Material(_uav_lighter_shader);
var uav_lighter_mat = new Material(Shader.Find("HDRP/Lit"));
string _color = color_value;
float _intensity = exposure_weight;
_intensity = Mathf.Clamp01(_intensity);
ColorUtility.TryParseHtmlString(_color, out Color __color);
uav_lighter_mat.color = __color;
uav_lighter_mat.SetFloat("_UseEmissiveIntensity", 1);
uav_lighter_mat.SetColor("_EmissiveColorLDR", __color);
uav_lighter_mat.SetFloat("_EmissiveIntensity", 200);
uav_lighter_mat.SetFloat("_EmissiveExposureWeight", (1 - _intensity));
uav_lighter_meshrenderer.material = uav_lighter_mat;
}
[ContextMenu("Close")]
public void CloseLighter()
{
uav_lighter_mat.SetFloat("_EmissiveIntensity", 1);
}
}