public override Vector4 EvalCPU() { int cc = Mathf.Max(GetInputCon("A").GetCompCount(), GetInputCon("B").GetCompCount()); float dot = SF_Tools.Dot(GetInputData("A").dataUniform, GetInputData("B").dataUniform, cc); switch (dotType) { case DotType.Positive: dot = Mathf.Max(0f, dot); break; case DotType.Negative: dot = Mathf.Min(0f, dot); break; case DotType.Abs: dot = Mathf.Abs(dot); break; case DotType.Normalized: dot = 0.5f * dot + 0.5f; break; } return(dot * Vector4.one); }
public override Vector4 EvalCPU() { Color i = GetInputData("A").dataUniform; Color n = GetInputData("B").dataUniform; int cc = Mathf.Max(GetInputCon("A").GetCompCount(), GetInputCon("B").GetCompCount()); float dot = SF_Tools.Dot(i, n, cc); return(i - 2 * n * dot); }
public override Vector4 EvalCPU() { Vector4 a = GetInputData("A").dataUniform; Vector4 b = GetInputData("B").dataUniform; int cc = Mathf.Max(GetInputCon("A").GetCompCount(), GetInputCon("B").GetCompCount()); float dotLeft = SF_Tools.Dot(a, b, cc); float dotRight = SF_Tools.Dot(b, b, cc); Vector4 retVec = a - (dotLeft / dotRight) * b; return(retVec); }