I have seen this code that is using to create custom ScriptableRenderPass
private class CCTVLinePass : ScriptableRenderPass
{
private RenderTargetIdentifier src, dest;
private int destId = Shader.PropertyToID("_temp");
public CCTVLinePass()
{
renderPassEvent = RenderPassEvent.BeforeRenderingPostProcessing;
}
public override void OnCameraSetup(CommandBuffer cmd, ref RenderingData renderingData)
{
src = renderingData.cameraData.renderer.cameraColorTargetHandle;
cmd.GetTemporaryRT(destId, renderingData.cameraData.cameraTargetDescriptor, FilterMode.Bilinear);
dest = new RenderTargetIdentifier(destId);
}
public override void OnCameraCleanup(CommandBuffer cmd)
{
cmd.ReleaseTemporaryRT(destId);
}
#region ScriptableRenderPass
public override void Execute(ScriptableRenderContext context, ref RenderingData renderingData)
{
var volumes = VolumeManager.instance.stack;
var cctvPost = volumes.GetComponent<CCTVLinePost>();
if (!cctvPost.IsActive())
return;
if (cctvPost.cctvMaterial == null)
{
Debug.LogWarning("You need to set the material");
return;
}
var cb = CommandBufferPool.Get("CCTVRenderFeature");
Blit(cb, src, dest, cctvPost.cctvMaterial.value, 0);
Blit(cb, dest, src);
context.ExecuteCommandBuffer(cb);
CommandBufferPool.Release(cb);
}
#endregion
}
I get a warning that Blit
is been obsolete and needs to be replaced with RTHandle
s.
Would appreciate of any help.