Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Proposal: dual specular roughness sliders with mix #210

Open
sharktacos opened this issue May 30, 2024 · 6 comments
Open

Proposal: dual specular roughness sliders with mix #210

sharktacos opened this issue May 30, 2024 · 6 comments

Comments

@sharktacos
Copy link

Throwing out for discussion the idea of having two specular roughness sliders mixed by a lerp (typically using a mask texture for the mix), similar to Megascans materials in Unreal.

This can of course be achieved for instance with a ND_mix_float in materialX, but it could be nice to have it built into the material since it is so commonly used by lookdev artists. Thought I'd bring it up for possible consideration.

@portsmouth
Copy link
Contributor

portsmouth commented May 30, 2024

Do you mean there should be two separate specular lobes with independent roughness, with a mix weight (called "dual-specular" sometimes)? If so that's being considered, but it would be for a later release as it alters the BSDF implementation somewhat.

Also, what about the anisotropy -- would that be separate or coupled?

@sharktacos
Copy link
Author

Yes, that is what I was referring to. I was actually imagining a simple linear interpolation mix between two roughness values modulated by a mask that remaps black and white in the mask to the two roughness values, rather than an additional specular lobe. What would be the advantage of having a second specular lobe that changes the BSDF, as opposed to a simple mix for the roughness values within one specular lobe? How would this be differentiated from the coat?

In terms of GUI, one possibility is for it to work similarly to metalness so that the mix defaults to 0 meaning only roughness1 affects the material with roughness2 greyed out until the mix is raised above 0.

Regarding the anisotropy, my thinking is that the artistic purpose is to have subtle variation in the roughness, so I would expect the anisotropy to be coupled. If I wanted to get variation in the anisotropy I would use a tangent map.

@virtualzavie
Copy link
Contributor

I understand some models have started exploring this possibility; I think this is available in UE5 for example.
As for OpenPBR, I would lean towards waiting to see if there is an industry consensus over what the future of the specular lobe parametrisation is.

@portsmouth
Copy link
Contributor

I think it would be worth prototyping this and doing some renders, to get a sense of how significant the visual difference is.

@portsmouth
Copy link
Contributor

portsmouth commented Jan 7, 2025

I was actually imagining a simple linear interpolation mix between two roughness values modulated by a mask that remaps black and white in the mask to the two roughness values, rather than an additional specular lobe.

Ah I see, you meant simply interpolating two roughnesses with a mix weight? I think that would be handled via a node graph most likely, it doesn't really make sense in the shading model itself.

What would be the advantage of having a second specular lobe that changes the BSDF, as opposed to a simple mix for the roughness values within one specular lobe? How would this be differentiated from the coat?

The coat has an independent NDF, but it also sits on top so generates layering effects (e.g. Fresnel obscures the substrate at grazing). Whereas a dual-lobe specular on the substrate gives a coat-like control over the highlight, without those layering effects. Apparently it can be useful.

@sharktacos
Copy link
Author

sharktacos commented Jan 8, 2025 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants