forked from BilalY/Rasagar
41 lines
1.5 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|