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); } }