Files
2025-05-15 15:37:45 +08:00

50 lines
1.4 KiB
C#

using UnityEngine;
using UnityEngine.Rendering;
// VolFx © NullTale - https://x.com/NullTale
namespace VolFx.Tools
{
public class RenderTarget
{
public RTHandle Handle;
public int Id;
private bool _allocated;
// =======================================================================
public RenderTarget Allocate(RenderTexture rt, string name)
{
Handle = RTHandles.Alloc(rt, name);
Id = Shader.PropertyToID(name);
return this;
}
public RenderTarget Allocate(string name)
{
Handle = RTHandles.Alloc(name, name: name);
Id = Shader.PropertyToID(name);
return this;
}
public void Get(CommandBuffer cmd, in RenderTextureDescriptor desc)
{
_allocated = true;
cmd.GetTemporaryRT(Id, desc);
}
public void Get(CommandBuffer cmd, in RenderTextureDescriptor desc, FilterMode mode)
{
_allocated = true;
cmd.GetTemporaryRT(Id, desc, mode);
}
public void Release(CommandBuffer cmd)
{
if (_allocated == false)
return;
_allocated = false;
cmd.ReleaseTemporaryRT(Id);
}
public static implicit operator RTHandle(RenderTarget rt) => rt.Handle;
}
}