Merge branch 'MaterialNodes' of https://github.com/whocares77/FlaxEngine into whocares77-MaterialNodes

This commit is contained in:
Wojtek Figat
2022-07-15 20:25:05 +02:00
2 changed files with 46 additions and 0 deletions

View File

@@ -441,6 +441,35 @@ namespace FlaxEditor.Surface.Archetypes
NodeElementArchetype.Factory.Output(0, string.Empty, typeof(Float3), 2),
}
},
new NodeArchetype
{
TypeID = 50,
Title = "Smoothstep",
Description = "Returns a smooth Hermite interpolation between 0 and 1, if value is in the range [min, max].",
Flags = NodeFlags.MaterialGraph,
Size = new Float2(110, 60),
ConnectionsHints = ConnectionsHint.Numeric,
IndependentBoxes = new[]
{
0,
1,
2
},
DependentBoxes = new[] { 3 },
DefaultValues = new object[]
{
0.0f,
1.0f,
},
Elements = new[]
{
NodeElementArchetype.Factory.Input(0, "Min", true, null, 0),
NodeElementArchetype.Factory.Input(1, "Max", true, null, 1),
NodeElementArchetype.Factory.Input(2, "Value", true, null, 2, 1),
NodeElementArchetype.Factory.Output(0, "Result", null, 3)
},
},
Op2(51, "Step", "Compares two values, returning 0 or 1 based on which value is greater."),
};
}
}

View File

@@ -413,6 +413,23 @@ void ShaderGenerator::ProcessGroupMath(Box* box, Node* node, Value& value)
value = writeLocal(ValueType::Float3, String::Format(TEXT("QuatRotateVector({0}, {1})"), quaternion.Value, vector.Value), node);
break;
}
// Smoothstep
case 50:
{
Value v1 = tryGetValue(node->GetBox(0), Value::Zero);
Value v2 = tryGetValue(node->GetBox(1), Value::Zero);
Value v3 = tryGetValue(node->GetBox(2), Value::Zero);
value = writeFunction3(node, v1, v2, v3, TEXT("smoothstep"), v1.Type);
break;
}
// Step
case 51:
{
Value v1 = tryGetValue(node->GetBox(0), Value::Zero);
Value v2 = tryGetValue(node->GetBox(1), Value::Zero);
value = writeFunction2(node, v1, v2, TEXT("step"));
break;
}
default:
break;
}