You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
35 lines
1.6 KiB
35 lines
1.6 KiB
using UnityEngine.Rendering;
|
|
|
|
namespace ArmASR
|
|
{
|
|
/// <summary>
|
|
/// An immutable structure wrapping all the necessary information to bind a specific buffer or attachment of a render target to a compute shader.
|
|
/// </summary>
|
|
public readonly struct ResourceView
|
|
{
|
|
/// <summary>
|
|
/// This value is the equivalent of not setting any value at all; all struct fields will have their default values.
|
|
/// It does not refer to a valid texture, therefore any variable set to this value should be checked for IsValid and reassigned before being bound to a shader.
|
|
/// </summary>
|
|
public static readonly ResourceView Unassigned = new ResourceView(default);
|
|
|
|
/// <summary>
|
|
/// This value contains a valid texture reference that can be bound to a shader, however it is just an empty placeholder texture.
|
|
/// Binding this to a shader can be seen as setting the texture variable inside the shader to null.
|
|
/// </summary>
|
|
public static readonly ResourceView None = new ResourceView(BuiltinRenderTextureType.None);
|
|
|
|
public ResourceView(in RenderTargetIdentifier renderTarget, RenderTextureSubElement subElement = RenderTextureSubElement.Default, int mipLevel = 0)
|
|
{
|
|
RenderTarget = renderTarget;
|
|
SubElement = subElement;
|
|
MipLevel = mipLevel;
|
|
}
|
|
|
|
public bool IsValid => !RenderTarget.Equals(default);
|
|
|
|
public readonly RenderTargetIdentifier RenderTarget;
|
|
public readonly RenderTextureSubElement SubElement;
|
|
public readonly int MipLevel;
|
|
}
|
|
}
|