AcademySoftwareFoundation / OpenPBR

Specification and reference implementation for the OpenPBR Surface shading model
Apache License 2.0
459 stars 18 forks source link

MaterialX: implement bump mapping for fuzz #234

Open portsmouth opened 1 month ago

portsmouth commented 1 month ago

In the spec we say:

The fuzz shading normal is assumed to inherit from that of the substrate layer, the physical picture being that the fuzz volume settles and conforms to the geometry of the substrate. The substrate is generally a mixture of coat and uncoated base. Thus physically the fuzz model should be evaluated with each of the geometry_coat_normal and geometry_normal separately (if they differ), and the final result blended according to the coat_weight. As a practical approximation, it may be more convenient and efficient to instead approximate the fuzz normal by interpolating the coat and base normal according to coat_weight.

Thus a fuzzy surface on top of a bumped base and/or coat, should also show the bump effect in the fuzz lobe itself.

The MaterialX implementation currently doesn't attempt this.