diff --git a/Source/Editor/Surface/Archetypes/Packing.cs b/Source/Editor/Surface/Archetypes/Packing.cs index f5b466ab3..95f503338 100644 --- a/Source/Editor/Surface/Archetypes/Packing.cs +++ b/Source/Editor/Surface/Archetypes/Packing.cs @@ -579,6 +579,20 @@ namespace FlaxEditor.Surface.Archetypes NodeElementArchetype.Factory.Output(0, "YZ", typeof(Vector2), 1) } }, + new NodeArchetype + { + TypeID = 47, + Title = "Mask ZW", + Description = "Unpack ZW components from Vector", + Flags = NodeFlags.AllGraphs, + ConnectionsHints = ConnectionsHint.Vector, + Size = new Vector2(110, 30), + Elements = new[] + { + NodeElementArchetype.Factory.Input(0, "Value", true, null, 0), + NodeElementArchetype.Factory.Output(0, "ZW", typeof(Vector2), 1) + } + }, // Mask XYZ new NodeArchetype diff --git a/Source/Engine/Visject/ShaderGraph.cpp b/Source/Engine/Visject/ShaderGraph.cpp index c8a8782e9..57c4d7746 100644 --- a/Source/Engine/Visject/ShaderGraph.cpp +++ b/Source/Engine/Visject/ShaderGraph.cpp @@ -534,6 +534,12 @@ void ShaderGenerator::ProcessGroupPacking(Box* box, Node* node, Value& value) Value v = tryGetValue(node->GetBox(0), Vector4::Zero).AsVector4(); value = Value(ValueType::Vector2, v.Value + TEXT(".yz")); break; + } + case 47: + { + Value v = tryGetValue(node->GetBox(0), Vector4::Zero).AsVector4(); + value = Value(ValueType::Vector2, v.Value + TEXT(".zw")); + break; } // Mask XYZ case 70: diff --git a/Source/Engine/Visject/VisjectGraph.cpp b/Source/Engine/Visject/VisjectGraph.cpp index 939013ebd..aafc4e9c9 100644 --- a/Source/Engine/Visject/VisjectGraph.cpp +++ b/Source/Engine/Visject/VisjectGraph.cpp @@ -533,6 +533,12 @@ void VisjectExecutor::ProcessGroupPacking(Box* box, Node* node, Value& value) const Vector4 v = (Vector4)tryGetValue(node->GetBox(0), Vector4::Zero); value = Vector2(v.Y, v.Z); break; + } + case 47: + { + const Vector4 v = (Vector4)tryGetValue(node->GetBox(0), Vector4::Zero); + value = Vector2(v.Z, v.W); + break; } // Mask XYZ case 70: