added Smoothstep and Step material nodes
This commit is contained in:
@@ -441,6 +441,35 @@ namespace FlaxEditor.Surface.Archetypes
|
|||||||
NodeElementArchetype.Factory.Output(0, string.Empty, typeof(Float3), 2),
|
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."),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -417,6 +417,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);
|
value = writeLocal(ValueType::Float3, String::Format(TEXT("QuatRotateVector({0}, {1})"), quaternion.Value, vector.Value), node);
|
||||||
break;
|
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:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user