Rasagar/Library/PackageCache/com.unity.shadergraph/Editor/Data/Interfaces/IMayRequireScreenPosition.cs
2024-08-26 23:07:20 +03:00

41 lines
1.5 KiB
C#

using UnityEditor.Graphing;
namespace UnityEditor.ShaderGraph
{
interface IMayRequireScreenPosition
{
bool RequiresScreenPosition(ShaderStageCapability stageCapability = ShaderStageCapability.All);
}
interface IMayRequireNDCPosition
{
bool RequiresNDCPosition(ShaderStageCapability stageCapability = ShaderStageCapability.All);
}
interface IMayRequirePixelPosition
{
bool RequiresPixelPosition(ShaderStageCapability stageCapability = ShaderStageCapability.All);
}
static class MayRequireScreenPositionExtensions
{
public static bool RequiresScreenPosition(this MaterialSlot slot, ShaderStageCapability stageCapability = ShaderStageCapability.All)
{
var mayRequireScreenPosition = slot as IMayRequireScreenPosition;
return mayRequireScreenPosition?.RequiresScreenPosition(stageCapability) ?? false;
}
public static bool RequiresNDCPosition(this MaterialSlot slot, ShaderStageCapability stageCapability = ShaderStageCapability.All)
{
var mayRequireNDCPosition = slot as IMayRequireNDCPosition;
return mayRequireNDCPosition?.RequiresNDCPosition(stageCapability) ?? false;
}
public static bool RequiresPixelPosition(this MaterialSlot slot, ShaderStageCapability stageCapability = ShaderStageCapability.All)
{
var mayRequirePixelPosition = slot as IMayRequirePixelPosition;
return mayRequirePixelPosition?.RequiresPixelPosition(stageCapability) ?? false;
}
}
}