rokojori_action_library/Runtime/Cameras/Adjustments/AdjustmentsMask.cs

63 lines
1.0 KiB
C#

using Rokojori;
using Godot;
namespace Rokojori;
[GlobalClass,Tool]
public abstract partial class AdjustmentsMask: Resource
{
public enum Mode
{
Add,
Subtract,
Multiply,
Divide,
Max,
Min
}
[Export]
public Mode mode = Mode.Multiply;
public abstract float GetMask( Color rgb );
public static float Blend( AdjustmentsMask bottom, float bottomMask, AdjustmentsMask top, float topMask )
{
if ( bottom == null )
{
return bottomMask;
}
if ( Mode.Add == top.mode )
{
return bottomMask + topMask;
}
if ( Mode.Subtract == top.mode )
{
return bottomMask - topMask;
}
if ( Mode.Multiply == top.mode )
{
return bottomMask * topMask;
}
if ( Mode.Divide == top.mode )
{
return bottomMask / topMask;
}
if ( Mode.Max == top.mode )
{
return Mathf.Max( bottomMask, topMask );
}
if ( Mode.Min == top.mode )
{
return Mathf.Min( bottomMask, topMask );
}
return 0;
}
}