Principled Roughness & Clearcoat Gloss are opposites of each other? #51849

Closed
opened 2017-06-20 04:20:53 +02:00 by Andrew Price · 20 comments

In the Principled BSDF a Roughnessvalue is used for the shader, yet a Gloss value is used for the Clearcoat.
roughness gloss.jpg
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 [ https:*blender.stackexchange.com/questions/81680/what-do-the-settings-in-the-new-principled-shader-actually-do?stw=2 | 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.

In the Principled BSDF a **Roughness**value is used for the shader, yet a **Gloss** value is used for the Clearcoat. ![roughness gloss.jpg](https://archive.blender.org/developer/F636191/roughness_gloss.jpg) 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 [[ https:*blender.stackexchange.com/questions/81680/what-do-the-settings-in-the-new-principled-shader-actually-do?stw=2 | on stackexchange ](https:*disney-animation.s3.amazonaws.com/library/s2012_pbs_disney_brdf_notes_v2.pdf) 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.
Author

Changed status to: 'Open'

Changed status to: 'Open'
Author

Added subscriber: @AndrewPrice

Added subscriber: @AndrewPrice
Member

Added subscribers: @PascalSchon, @Blendify

Added subscribers: @PascalSchon, @Blendify
Member

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 @PascalSchon will probably be able to answer more.

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 @PascalSchon will probably be able to answer more.
Member

Added subscriber: @brecht

Added subscriber: @brecht
Member

In #51849#441393, @Blendify wrote:
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 @PascalSchon 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 can also say a word about it.

> In #51849#441393, @Blendify wrote: > 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 @PascalSchon 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 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.

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.

Added subscriber: @BrianSavery

Added subscriber: @BrianSavery

@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.

@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.

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.

Added subscriber: @SteffenD

Added subscriber: @SteffenD
Author

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.

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

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

Added subscribers: @Sergey, @mont29

Added subscribers: @Sergey, @mont29

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…

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…

This issue was referenced by blender/cycles@54957ad870

This issue was referenced by blender/cycles@54957ad870c85a54c226fff9744d84e65c4e30c4

This issue was referenced by 14ea0c5fcc

This issue was referenced by 14ea0c5fccfdbd8d244758709185160e45222dc3

Changed status from 'Open' to: 'Resolved'

Changed status from 'Open' to: 'Resolved'

Added subscriber: @leafylegend

Added subscriber: @leafylegend

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

Please. revert them to the original version! because without clearcoat gloss you can't make cool materials like jelly, plastic stuff like that!
Sign in to join this conversation.
No Label
Interest
Alembic
Interest
Animation & Rigging
Interest
Asset Browser
Interest
Asset Browser Project Overview
Interest
Audio
Interest
Automated Testing
Interest
Blender Asset Bundle
Interest
BlendFile
Interest
Collada
Interest
Compatibility
Interest
Compositing
Interest
Core
Interest
Cycles
Interest
Dependency Graph
Interest
Development Management
Interest
EEVEE
Interest
EEVEE & Viewport
Interest
Freestyle
Interest
Geometry Nodes
Interest
Grease Pencil
Interest
ID Management
Interest
Images & Movies
Interest
Import Export
Interest
Line Art
Interest
Masking
Interest
Metal
Interest
Modeling
Interest
Modifiers
Interest
Motion Tracking
Interest
Nodes & Physics
Interest
OpenGL
Interest
Overlay
Interest
Overrides
Interest
Performance
Interest
Physics
Interest
Pipeline, Assets & IO
Interest
Platforms, Builds & Tests
Interest
Python API
Interest
Render & Cycles
Interest
Render Pipeline
Interest
Sculpt, Paint & Texture
Interest
Text Editor
Interest
Translations
Interest
Triaging
Interest
Undo
Interest
USD
Interest
User Interface
Interest
UV Editing
Interest
VFX & Video
Interest
Video Sequencer
Interest
Virtual Reality
Interest
Vulkan
Interest
Wayland
Interest
Workbench
Interest: X11
Legacy
Blender 2.8 Project
Legacy
Milestone 1: Basic, Local Asset Browser
Legacy
OpenGL Error
Meta
Good First Issue
Meta
Papercut
Meta
Retrospective
Meta
Security
Module
Animation & Rigging
Module
Core
Module
Development Management
Module
EEVEE & Viewport
Module
Grease Pencil
Module
Modeling
Module
Nodes & Physics
Module
Pipeline, Assets & IO
Module
Platforms, Builds & Tests
Module
Python API
Module
Render & Cycles
Module
Sculpt, Paint & Texture
Module
Triaging
Module
User Interface
Module
VFX & Video
Platform
FreeBSD
Platform
Linux
Platform
macOS
Platform
Windows
Priority
High
Priority
Low
Priority
Normal
Priority
Unbreak Now!
Status
Archived
Status
Confirmed
Status
Duplicate
Status
Needs Info from Developers
Status
Needs Information from User
Status
Needs Triage
Status
Resolved
Type
Bug
Type
Design
Type
Known Issue
Type
Patch
Type
Report
Type
To Do
No Milestone
No project
No Assignees
9 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: blender/blender#51849
No description provided.