Code/PostProcessing/SimpleFog.cs
using Sandbox;
using Sandbox.Rendering;

namespace RedSnail.WaterTool;

[Title("Simple Fog")]
[Category("Post Processing")]
[Icon("foggy")]
public sealed class SimpleFog : BasePostProcess<SimpleFog>
{
	[Property] private Color Color { get; set; } = Color.White;
	[Property, Range(0, 1)] private float Intensity { get; set; } = 0.01f;
	[Property, Range(0, 1)] private float Opacity { get; set; } = 0.5f;



	public override void Render()
	{
		float opacity = GetWeighted(x => x.Opacity);

		if (opacity.AlmostEqual(0.0f))
			return;

		Attributes.Set("Color", GetWeighted(x => x.Color));
		Attributes.Set("Intensity", GetWeighted(x => x.Intensity));
		Attributes.Set("Opacity", opacity);

		Material shader = Material.FromShader("pp_simplefog");
		BlitMode blit = BlitMode.WithBackbuffer(shader, Stage.BeforePostProcess, 60);
		Blit(blit, "Simple Fog");
	}
}