Files
2026-03-10 20:36:07 +08:00

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