Fix cross error in Material if input is not Float3

This commit is contained in:
Wojciech Figat
2022-06-15 19:04:21 +02:00
parent cf1f8487e7
commit 0d3ecd6dd2

View File

@@ -200,16 +200,22 @@ void ShaderGenerator::ProcessGroupMath(Box* box, Node* node, Value& value)
value = writeLocal(ValueType::Float, text, node); value = writeLocal(ValueType::Float, text, node);
break; break;
} }
// Cross, Max, Min, Pow // Cross
case 18: case 18:
{
Value v1 = tryGetValue(node->GetBox(0), 0, Value::Zero).Cast(VariantType::Float3);
Value v2 = tryGetValue(node->GetBox(1), 1, Value::Zero).Cast(VariantType::Float3);
const Char* function = _mathFunctions[node->TypeID - 7];
value = writeFunction2(node, v1, v2, function);
break;
}
// Max, Min, Pow
case 21: case 21:
case 22: case 22:
case 23: case 23:
{ {
Box* b1 = node->GetBox(0); Value v1 = tryGetValue(node->GetBox(0), 0, Value::Zero);
Box* b2 = node->GetBox(1); Value v2 = tryGetValue(node->GetBox(1), 1, Value::Zero);
Value v1 = tryGetValue(b1, 0, Value::Zero);
Value v2 = tryGetValue(b2, 1, Value::Zero);
const Char* function = _mathFunctions[node->TypeID - 7]; const Char* function = _mathFunctions[node->TypeID - 7];
value = writeFunction2(node, v1, v2, function); value = writeFunction2(node, v1, v2, function);
break; break;