ID 120620 - [RenderOutputUtils] getFlattenedMaterialAttr() omits port names in return value when merging multiple networks

Follow

Problem Summary
RenderOutputUtils::getFlattenedMaterialAttr() is supposed to return a "collapsed" material attribute derived from the material attribute at the given location and all of its parents.


When the location passed to getFlattenedMaterialAttr() has at least one parent location with a material attribute, getFlattenedMaterialAttr() returns incorrect results. Specifically, it returns a material attribute whose "terminals" attribute is incomplete.

For any terminal, it should include the name of the node that provides it, as well as the name of the port on the node. However the names of the ports are missing.
 
This can be reproduced by assigning a network material to some location and its parent. Call getFlattenedMaterialAttr() at both the child and the parent locations.
You'll observe that at the child, the port information is missing from the "terminals" attribute. (It should be present at the parent location).
 
i.e. `getChildByName("terminals")` should give something like:

> {>   arnoldDisplacement = StringAttribute("Noise"),>   arnoldDisplacementPort = StringAttribute("out"),> }
But at the child location, it only gives the name of the node:

> {>   arnoldDisplacement = StringAttribute("Noise"),> }

 

Customer reported version
katanaunsure/unknown

 

Reproduced by support

This bug has been reproduced in:

Katana1.6v3 
Katana2.0v1 
Katana2.0v2

 

Earliest version tested
- This issue appears to be in all versions of the product

 

Expected behaviour
i.e. `getChildByName("terminals")` should give something like:


> {>   arnoldDisplacement = StringAttribute("Noise"),>   arnoldDisplacementPort = StringAttribute("out"),> }

Actual behaviour

But at the child location, it only gives the name of the node:

> {>   arnoldDisplacement = StringAttribute("Noise"),> }

    We're sorry to hear that

    Please tell us why