revival/game/Assets/Scripts/Rendering/BlendPass.cs

48 lines
1.6 KiB
C#

using UnityEngine;
using UnityEngine.Rendering;
using UnityEngine.Rendering.Universal;
public class BlendPass : ScriptableRenderPass
{
private GlitchFeature.Settings _settings;
private RenderTargetIdentifier _src;
private RenderTargetIdentifier _dest;
private int _temporaryRTID = Shader.PropertyToID("_TempRT");
private RenderTargetIdentifier _temp;
public BlendPass(GlitchFeature.Settings settings)
{
_settings = settings;
_src = new RenderTargetIdentifier(_settings.stencilTex);
_dest = new RenderTargetIdentifier(_settings.blendTex);
_temp = new RenderTargetIdentifier(_temporaryRTID);
}
public override void Execute(ScriptableRenderContext context, ref RenderingData renderingData)
{
var cmd = CommandBufferPool.Get();
cmd.GetTemporaryRT(_temporaryRTID, _settings.blendTex.descriptor);
// set properties on material
var blend = _settings.blendMat;
blend.SetFloat("_Sample", _settings.sample * Time.deltaTime);
blend.SetTexture("_BlendTex", _settings.blendTex);
// blend.SetFloat("_DeltaTime", Time.deltaTime);
// blend.SetTexture("_GlitchTex", Settings.glitchTex);
// blend.SetTexture("_BlendTex", Settings.blendTex);
cmd.Blit(_src,_temporaryRTID,blend);
cmd.Blit(_temporaryRTID, _dest);
context.ExecuteCommandBuffer(cmd);
}
public override void FrameCleanup(CommandBuffer cmd)
{
cmd.ReleaseTemporaryRT(_temporaryRTID);
}
}