using System; using UnityEngine; using UnityEngine.Rendering.PostProcessing; [Serializable] [PostProcess(typeof(GrayscaleRenderer), PostProcessEvent.AfterStack, "Custom/Grayscale")] public sealed class Grayscale : PostProcessEffectSettings { [Range(0, 1), Tooltip("Grayscale effect intensity")] public FloatParameter blend = new FloatParameter { value = .5f }; } public sealed class GrayscaleRenderer : PostProcessEffectRenderer { public override void Render(PostProcessRenderContext context) { var sheet = context.propertySheets.Get(Shader.Find("Hidden/Custom/Grayscale")); sheet.properties.SetFloat("_Blend", settings.blend); context.command.BlitFullscreenTriangle(context.source, context.destination, sheet, 0); } }