using Sandbox.Rendering; namespace Sandbox; /// /// Applies a pixelate effect to the camera /// [Title( "Pixelate" )] [Category( "Post Processing" )] [Icon( "apps" )] public sealed class Pixelate : BasePostProcess { [Range( 0, 1 )] [Property] public float Scale { get; set; } = 0.25f; public override void Render() { var shader = Material.FromShader( "shaders/postprocess/pp_pixelate.shader" ); float scale = GetWeighted( x => x.Scale ); if ( scale.AlmostEqual( 0.0f ) ) return; Attributes.Set( "scale", scale ); var blit = BlitMode.WithBackbuffer( shader, Stage.AfterPostProcess, 10000, true ); Blit( blit, "Pixelate" ); } }