Principled BSDF - Why is Clearcoat added instead of mixed in?

In the original Disney implementation, the clearcoat layer is just added ontop of the material without properly “mixing” it in by also substracting energy from the underlying shader.

“This layer, even though it has a largevisual impact, represents a relatively small amount of energy so we don’t subtract any energy from thebase layer.” (Physically-Based Shading at Disney 5.4 P16)

In their implementation, this is done for performance reasons. Is there a performance benefit for doing it in Cycles too though? The problem is, that the Principled BSDF allows pushing up the Clearcoat value to > 1.0, which makes it obvious that the Clearcoat specular is added instead of mixed and breaks energy conservation.

extreme example

I know you shouldn’t do that anyway, but in this case the value should be either clamped at 1.0 or mixed instead of being added to make the result less incorrect and keep energy conservation.

1 Like

Good question, clearcoat behavious should be exactly like a clear coat, but instead it’s behaviour is weird and for it to have a real visual impact you have to go over 1, which makes it incorrect, and in the end it does not behaves like a clear coat.

There may be a better solution to this.


Compatibility with other software is part of the reason, but we’ll likely give the user a choice at some point to choose accuracy or compatibility.

1 Like

Yes please :slight_smile: