Files
Cielonos/Assets/Shaders/ScriptablePostProcessor/PostProcessing/RGBSplitGlitch.cs
SoulliesOfficial f7af60351b 阶段性完成
2025-12-08 05:27:53 -05:00

37 lines
1.4 KiB
C#

using Echovoid.Runtime.Behavior.Rendering;
using UnityEngine;
using UnityEngine.Rendering;
using UnityEngine.Rendering.Universal;
namespace SLSFramework.Rendering.PostProcessing
{
[System.Serializable, VolumeComponentMenu("Custom/RGBSplitGlitch")]
public class RGBSplitGlitch : ScriptablePostProcessorVolume
{
public override CustomPostProcessInjectionPoint InjectionPoint => CustomPostProcessInjectionPoint.BeforePostProcess;
public override int OrderInInjectionPoint => 0;
public ClampedFloatParameter intensity = new(0f, 0f, 1f);
public ClampedFloatParameter speed = new(10f, 0f, 100f);
protected override string GetShaderName() => "Hidden/Custom/RGBSplitGlitch";
private float elapsedTime = 1.0f;
public override void Render(CommandBuffer cmd, ref RenderingData renderingData, RTHandle source, RTHandle destination)
{
if (material == null) return;
elapsedTime += Time.unscaledDeltaTime;
if (elapsedTime > 100)
{
elapsedTime = 0;
}
cmd.SetGlobalVector(InternalShaderHelpers.ID._RGBSplitGlitchParams,
new Vector4(intensity.value * 0.01f, Mathf.Floor(elapsedTime * speed.value)));
Blitter.BlitCameraTexture(cmd, source, destination, material, 0);
}
public override bool IsActive() => intensity.value > 0f;
}
}