Principled Roughness & Clearcoat Gloss are opposites of each other?
Closed, ResolvedPublic

Description

In the Principled BSDF a Roughness value is used for the shader, yet a Gloss value is used for the Clearcoat.


Most software picks one or the other, since they are opposites of each other and serve no purpose other than what standard was preferred at development.

My concern is that having both terms presents in the same shader presents confusion. At the very least requiring them to know to invert one but not the other.

I know that the original Principled paper uses the same method, so it's technically not a bug. But I inquired about this on stackexchange and it seems there wasn't any good reason for it. So it was possibly a mistake in the original paper that was overlooked.

So I wondered, is there any possibility of changing Clearcoat Gloat to Clearcoat Roughness, so that we don't have two conflicting terms in the shader? It would make it a lot easier for artists, and prevent mistakes in the future.

From a user's POV yes this makes sense but while "Most software picks one or the other since they are opposites of each other and serve no purpose other than what standard was preferred at development." maybe true changing it would then make it inconsistent with other software that uses the Disney brdf.

On other notes I think a found something in the paper:

For our clearcoat specular we don’t have a Smith G derivation and simply use the GGX G with a fixed roughness of 0.25, found to be plausible and artistically pleasing.

I do not know a ton about this but @Pascal Schön (VanCantus) will probably be able to answer more.

On other notes I think a found something in the paper:

For our clearcoat specular we don’t have a Smith G derivation and simply use the GGX G with a fixed roughness of 0.25, found to be plausible and artistically pleasing.

I do not know a ton about this but @Pascal Schön (VanCantus) will probably be able to answer more.

This fixed roughness of 0.25 has nothing to do with the discussion about glossy and roughness and is only affecting the G term of the clearcoat highlight which is only one of three parts of a physically based specular reflection. The other ones are fresnel and the D term. For the D term the ClearcoatGloss value is used.

I also don't exactly know why Disney was using roughness for one and glossy for the other specular reflection but I think it's like Kilian Murphy stated in your stackexchange post. The default specular highlight is defined by the dielectric properties of a microstructure surface (and thus roughness) while clearcoat is more or less a perfectly smooth surface (as it's there to approximate clear varnishes) which should be 100% glossy per default. Maybe this is what Brent Burley from Disney thought when defining the shader.

For the Principled BSDF in Blender: Yes, we could change both to roughness but as it's an implementation of the Disney BRDF it would be inconsistent with the original paper. But I think @Brecht Van Lommel (brecht) can also say a word about it.

Personally I prefer roughness for both specular and clearoat. I guess this one is normally never texture mapped and so compatibility with other renderers isn't a concern, so we could deviate from the paper here.

@Brecht Van Lommel (brecht) Isn't compatibility with other renderers THE reason for leaving it as it now? I.e, many other renderers have a Disney/principled shader, so if you want to match look you have to do a 1 - n to on this one setting.

I meant that for commonly texture mapped parameters compatibility is a bigger concern, since those are harder to convert. It depends on the renderer, but at least for game engines you usually can only connect a texture directly to a parameter, so to fix that incompatibility you'd have to apply 1 - n to the texture map which isn't practical.

UE4 seems to use Clearcoat Roughness instead of Gloss, for Unity I couldn't find clearcoat parameters. So actually I think that's a strong argument for switching to Clearcoat Roughness. For offline renderers it's usually easier to do a 1 - n conversion due to more flexible shader nodes.

Thanks Brecht!

Good to know UE4 deviates from the paper as well. It really does just make so much more sense to me to use one convention and stick to it.

And since Roughness has been the standard for blender up until now, I think it makes sense to also use that for the clearcoat.

I can buy Brecht's argument. There is however something to be said for keeping to the original paper for compatibility with other renderers that implement it, and wanting to keep the settings the same.

The only other thing I'd note is that the clearcoat gloss/roughness is implemented differently (remapped .1 -> .001) than the other roughness, so perhaps they meant to make them different parameters to highlight that difference:
https://github.com/wdas/brdf/blob/master/src/brdfs/disney.brdf#L132

Bastien Montagne (mont29) triaged this task as Normal priority.Jun 21 2017, 12:16 PM

This does not really sounds as a bug to me? More like a design discussion that should rather have been done through ML probably. But will leave Cycles dev decide what to do with that report…

Bastien Montagne (mont29) changed Type from Bug to Design.Jun 21 2017, 12:16 PM

Please. revert them to the original version! because without clearcoat gloss you can't make cool materials like jelly, plastic stuff like that!