| 445 | } |
| 446 | |
| 447 | void ShaderGenerator::ProcessGroupPacking(Box* box, Node* node, Value& value) |
| 448 | { |
| 449 | switch (node->TypeID) |
| 450 | { |
| 451 | // Pack |
| 452 | case 20: |
| 453 | { |
| 454 | Box* bX = node->GetBox(1); |
| 455 | Box* bY = node->GetBox(2); |
| 456 | Value vX = tryGetValue(bX, node->Values[0]); |
| 457 | Value vY = tryGetValue(bY, node->Values[1]); |
| 458 | value = Value::Float2(vX, vY); |
| 459 | break; |
| 460 | } |
| 461 | case 21: |
| 462 | { |
| 463 | Box* bX = node->GetBox(1); |
| 464 | Box* bY = node->GetBox(2); |
| 465 | Box* bZ = node->GetBox(3); |
| 466 | Value vX = tryGetValue(bX, node->Values[0]); |
| 467 | Value vY = tryGetValue(bY, node->Values[1]); |
| 468 | Value vZ = tryGetValue(bZ, node->Values[2]); |
| 469 | value = Value::Float3(vX, vY, vZ); |
| 470 | break; |
| 471 | } |
| 472 | case 22: |
| 473 | { |
| 474 | Box* bX = node->GetBox(1); |
| 475 | Box* bY = node->GetBox(2); |
| 476 | Box* bZ = node->GetBox(3); |
| 477 | Box* bW = node->GetBox(4); |
| 478 | Value vX = tryGetValue(bX, node->Values[0]); |
| 479 | Value vY = tryGetValue(bY, node->Values[1]); |
| 480 | Value vZ = tryGetValue(bZ, node->Values[2]); |
| 481 | Value vW = tryGetValue(bW, node->Values[3]); |
| 482 | value = Value::Float4(vX, vY, vZ, vW); |
| 483 | break; |
| 484 | } |
| 485 | case 23: |
| 486 | case 24: |
| 487 | case 25: |
| 488 | { |
| 489 | // Not supported |
| 490 | value = Value::Zero; |
| 491 | break; |
| 492 | } |
| 493 | // Unpack |
| 494 | case 30: |
| 495 | { |
| 496 | value = tryGetValue(node->GetBox(0), Float2::Zero).AsFloat2(); |
| 497 | const int32 subIndex = box->ID - 1; |
| 498 | if (subIndex >= 0 && subIndex < 2) |
| 499 | value = Value(ValueType::Float, value.Value + _subs[subIndex]); |
| 500 | break; |
| 501 | } |
| 502 | case 31: |
| 503 | { |
| 504 | value = tryGetValue(node->GetBox(0), Float3::Zero).AsFloat3(); |
nothing calls this directly
no test coverage detected