| 648 | } |
| 649 | |
| 650 | static HnMaterialParameter GetTransform2dParam( |
| 651 | const pxr::HdMaterialNetwork2& Network, |
| 652 | const pxr::HdMaterialNode2& Node, |
| 653 | const pxr::SdfPath& NodePath, |
| 654 | const pxr::TfToken& ParamName) |
| 655 | { |
| 656 | HnMaterialParameter Tr2dParam; |
| 657 | Tr2dParam.Type = HnMaterialParameter::ParamType::Transform2d; |
| 658 | Tr2dParam.Name = ParamName; |
| 659 | Tr2dParam.FallbackValue = GetParamFallbackValue(Network, Node, HnMaterialPrivateTokens->in); |
| 660 | |
| 661 | // Find the input connection to the transform2d node |
| 662 | auto in_it = Node.inputConnections.find(HnMaterialPrivateTokens->in); |
| 663 | if (in_it != Node.inputConnections.end()) |
| 664 | { |
| 665 | if (!in_it->second.empty()) |
| 666 | { |
| 667 | const pxr::HdMaterialConnection2& Conn = in_it->second.front(); |
| 668 | |
| 669 | const auto pn_it = Network.nodes.find(Conn.upstreamNode); |
| 670 | const pxr::HdMaterialNode2& PrimvarNode = pn_it->second; |
| 671 | pxr::SdrRegistry& ShaderReg = pxr::SdrRegistry::GetInstance(); |
| 672 | if (pxr::SdrShaderNodeConstPtr PrimvarSdr = ShaderReg.GetShaderNodeByIdentifierAndType(PrimvarNode.nodeTypeId, pxr::HioGlslfxTokens->glslfx)) |
| 673 | { |
| 674 | auto PrimvarParam = GetPrimvarReaderParam(Network, PrimvarNode, Conn.upstreamNode, in_it->first); |
| 675 | Tr2dParam.SamplerCoords = std::move(PrimvarParam.SamplerCoords); |
| 676 | } |
| 677 | } |
| 678 | } |
| 679 | else |
| 680 | { |
| 681 | // See if input value was directly authored as value. |
| 682 | auto it = Node.parameters.find(HnMaterialPrivateTokens->in); |
| 683 | if (it != Node.parameters.end()) |
| 684 | { |
| 685 | if (it->second.IsHolding<pxr::TfToken>()) |
| 686 | { |
| 687 | const pxr::TfToken& SamplerCoord = it->second.UncheckedGet<pxr::TfToken>(); |
| 688 | Tr2dParam.SamplerCoords.push_back(SamplerCoord); |
| 689 | } |
| 690 | } |
| 691 | } |
| 692 | |
| 693 | pxr::VtValue RotationVal = GetParamFallbackValue(Network, Node, HnTokens->rotation); |
| 694 | if (RotationVal.IsHolding<float>()) |
| 695 | { |
| 696 | Tr2dParam.Transform2d.Rotation = RotationVal.UncheckedGet<float>(); |
| 697 | } |
| 698 | |
| 699 | pxr::VtValue ScaleVal = GetParamFallbackValue(Network, Node, HnTokens->scale); |
| 700 | if (ScaleVal.IsHolding<pxr::GfVec2f>()) |
| 701 | { |
| 702 | Tr2dParam.Transform2d.Scale = ScaleVal.UncheckedGet<pxr::GfVec2f>(); |
| 703 | } |
| 704 | |
| 705 | pxr::VtValue TranslationVal = GetParamFallbackValue(Network, Node, HnTokens->translation); |
| 706 | if (TranslationVal.IsHolding<pxr::GfVec2f>()) |
| 707 | { |
no test coverage detected