63 lines
2.4 KiB
C#
63 lines
2.4 KiB
C#
using UnityEngine;
|
|
using UnityEngine.Rendering;
|
|
using UnityEngine.Rendering.Universal;
|
|
|
|
[System.Serializable, VolumeComponentMenu("Post-processing/Mobile Fog")]
|
|
public class MobileFog : VolumeComponent, IPostProcessComponent
|
|
{
|
|
[Header("深度雾设置")]
|
|
[Tooltip("深度雾密度")]
|
|
public ClampedFloatParameter fogDensity = new ClampedFloatParameter(0f, 0f, 1f);
|
|
|
|
[Tooltip("深度雾开始距离")]
|
|
public FloatParameter fogStart = new FloatParameter(0f);
|
|
|
|
[Tooltip("深度雾结束距离")]
|
|
public FloatParameter fogEnd = new FloatParameter(100f);
|
|
|
|
[Header("高度雾设置")]
|
|
[Tooltip("高度雾密度")]
|
|
public ClampedFloatParameter heightFogDensity = new ClampedFloatParameter(0f, 0f, 1f);
|
|
|
|
[Tooltip("高度雾基础高度")]
|
|
public FloatParameter heightFogBase = new FloatParameter(0f);
|
|
|
|
[Tooltip("高度雾影响范围")]
|
|
public FloatParameter heightFogRange = new FloatParameter(50f);
|
|
|
|
[Header("噪波设置")]
|
|
[Tooltip("噪波缩放")]
|
|
public FloatParameter noiseScale = new FloatParameter(0.01f);
|
|
|
|
[Tooltip("噪波强度")]
|
|
public ClampedFloatParameter noiseIntensity = new ClampedFloatParameter(5f, 0f, 20f);
|
|
|
|
[Tooltip("噪波动画速度")]
|
|
public FloatParameter noiseSpeed = new FloatParameter(0.1f);
|
|
|
|
[Header("雾效外观")]
|
|
[Tooltip("是否启用渐变色")]
|
|
public BoolParameter useGradientColor = new BoolParameter(false);
|
|
|
|
[Tooltip("雾的固定颜色(不使用渐变时)")]
|
|
public ColorParameter fogColor = new ColorParameter(Color.gray);
|
|
|
|
[Tooltip("近处雾的颜色")]
|
|
public ColorParameter fogColorNear = new ColorParameter(new Color(0.8f, 0.9f, 1f, 1f)); // 偏蓝的近景色
|
|
|
|
[Tooltip("远处雾的颜色")]
|
|
public ColorParameter fogColorFar = new ColorParameter(new Color(0.6f, 0.7f, 0.9f, 1f)); // 偏紫的远景色
|
|
|
|
[Tooltip("渐变过渡距离")]
|
|
public FloatParameter gradientDistance = new FloatParameter(100f);
|
|
|
|
[Tooltip("雾效强度")]
|
|
public ClampedFloatParameter intensity = new ClampedFloatParameter(1f, 0f, 1f);
|
|
|
|
[Header("移动端优化")]
|
|
[Tooltip("使用快速模式(降低质量提升性能)")]
|
|
public BoolParameter useFastMode = new BoolParameter(true);
|
|
|
|
public bool IsActive() => (fogDensity.value > 0f || heightFogDensity.value > 0f) && intensity.value > 0f;
|
|
public bool IsTileCompatible() => false;
|
|
} |