Fix crash on invalid unpack node usage in shader graph

#4030
This commit is contained in:
2026-04-01 16:55:28 +02:00
parent cabae8142d
commit 9a7abd751f
+12 -21
View File
@@ -493,35 +493,26 @@ void ShaderGenerator::ProcessGroupPacking(Box* box, Node* node, Value& value)
// Unpack // Unpack
case 30: case 30:
{ {
Box* b = node->GetBox(0); value = tryGetValue(node->GetBox(0), Float2::Zero).AsFloat2();
Value v = tryGetValue(b, Float2::Zero).AsFloat2(); const int32 subIndex = box->ID - 1;
if (subIndex >= 0 && subIndex < 2)
int32 subIndex = box->ID - 1; value = Value(ValueType::Float, value.Value + _subs[subIndex]);
ASSERT(subIndex >= 0 && subIndex < 2);
value = Value(ValueType::Float, v.Value + _subs[subIndex]);
break; break;
} }
case 31: case 31:
{ {
Box* b = node->GetBox(0); value = tryGetValue(node->GetBox(0), Float3::Zero).AsFloat3();
Value v = tryGetValue(b, Float3::Zero).AsFloat3(); const int32 subIndex = box->ID - 1;
if (subIndex >= 0 && subIndex < 3)
int32 subIndex = box->ID - 1; value = Value(ValueType::Float, value.Value + _subs[subIndex]);
ASSERT(subIndex >= 0 && subIndex < 3);
value = Value(ValueType::Float, v.Value + _subs[subIndex]);
break; break;
} }
case 32: case 32:
{ {
Box* b = node->GetBox(0); value = tryGetValue(node->GetBox(0), Float4::Zero).AsFloat4();
Value v = tryGetValue(b, Float4::Zero).AsFloat4(); const int32 subIndex = box->ID - 1;
if (subIndex >= 0 && subIndex < 4)
int32 subIndex = box->ID - 1; value = Value(ValueType::Float, value.Value + _subs[subIndex]);
ASSERT(subIndex >= 0 && subIndex < 4);
value = Value(ValueType::Float, v.Value + _subs[subIndex]);
break; break;
} }
case 33: case 33: