Files
2026-11-01 23:39:55 +02:00

52 lines
2.0 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);
}
interface IMayRequireClipPosition
{
bool RequiresClipPosition(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;
}
public static bool RequiresClipPosition(this MaterialSlot slot, ShaderStageCapability stageCapability = ShaderStageCapability.All)
{
var mayRequireClipPosition = slot as IMayRequireClipPosition;
return mayRequireClipPosition?.RequiresClipPosition(stageCapability) ?? false;
}
}
}