protected override VFXExpression[] BuildExpression(VFXExpression[] inputExpression) { //round(frac(x*F)) var expression = inputExpression[0] * inputExpression[1]; return(new[] { VFXOperatorUtility.Round(VFXOperatorUtility.Frac(expression)) }); }
protected override sealed VFXExpression[] BuildExpression(VFXExpression[] inputExpression) { // abs(frac(x*F)) var res = new VFXExpressionAbs(VFXOperatorUtility.Frac(inputExpression[0] * inputExpression[1])); return(new[] { VFXOperatorUtility.Lerp(inputExpression[2], inputExpression[3], res) }); }
protected override VFXExpression[] BuildExpression(VFXExpression[] inputExpression) { VFXExpression[] output = new VFXExpression[] { VFXOperatorUtility.Lerp(inputExpression[1].x, inputExpression[1].y, VFXOperatorUtility.Frac(VFXBuiltInExpression.TotalTime / inputExpression[0])), }; return(output); }
protected override sealed VFXExpression[] BuildExpression(VFXExpression[] inputExpression) { //round(frac(x*F)) var expression = inputExpression[0] * inputExpression[1]; var res = VFXOperatorUtility.Round(VFXOperatorUtility.Frac(expression)); return(new[] { VFXOperatorUtility.Lerp(inputExpression[2], inputExpression[3], res) }); }
protected override VFXExpression[] BuildExpression(VFXExpression[] inputExpression) { // 2 * abs(round(frac(x*F)) - frac(x*F)) var expression = inputExpression[0] * inputExpression[1]; var dX = VFXOperatorUtility.Frac(expression); var slope = VFXOperatorUtility.Round(dX); var two = VFXOperatorUtility.TwoExpression[expression.valueType]; return(new[] { two *(new VFXExpressionAbs(slope - dX)) }); }
public void ProcessOperatorFrac() { var a = -1.5f; var b = 0.2f; var resultA = a - Mathf.Floor(a); var resultB = b - Mathf.Floor(b); var value_a = new VFXValue <float>(a); var value_b = new VFXValue <float>(b); var expressionA = VFXOperatorUtility.Frac(value_a); var expressionB = VFXOperatorUtility.Frac(value_b); var context = new VFXExpression.Context(VFXExpressionContextOption.CPUEvaluation); var resultExpressionA = context.Compile(expressionA); var resultExpressionB = context.Compile(expressionB); Assert.AreEqual(resultA, resultExpressionA.Get <float>()); Assert.AreEqual(resultB, resultExpressionB.Get <float>()); }
protected override sealed VFXExpression[] BuildExpression(VFXExpression[] inputExpression) { return(new[] { VFXOperatorUtility.Frac(inputExpression[0]) }); }
protected override VFXExpression[] BuildExpression(VFXExpression[] inputExpression) { // abs(frac(x*F)) return(new[] { new VFXExpressionAbs(VFXOperatorUtility.Frac(inputExpression[0] * inputExpression[1])) }); }