-
Notifications
You must be signed in to change notification settings - Fork 238
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
No specular from lights when roughness=0 #547
Comments
This is a known artifact of a "point light" being infinitesimally small. You can't look in your bathroom mirror and spot an individual bacterium relaxing on the wall behind you. In a true physical situation, the light bulb would have some actual radius, but there's no radius here. The only way to see light on the smoothest spheres would be through blooming, and we don't have blooming in this render. That's why there's no visible light there. |
I know that the spec defines the punctual lights as being The reason why there is no visible light from materials where roughness = 0 is due to the NDF function being used. Using the argument that we are displaying light from This is simply an effect of the simplified runtime model - for consistency I still argue that we should limit roughness in the NDF to get small highlights for perfectly smooth materials. |
I wouldn't want to limit roughness for materials, because folks want smooth IBL reflections on mirror-like objects. |
I think you misunderstand. The sampleviewer implementation uses the GGX normal distribution function - this takes NdotH and alphaRoughness as parameters.
This fix is already present for the sheen distribution functions, so I see no reason why it should not be applied to the ndf. |
I still think this is just an issue of stacked approximations. A true point light is infinitely small, so if you had a theoretically perfectly smooth specular reflection of an infinitely small point with no bloom, it would be much less than one pixel. It "looks wrong" because in real life we're not accustomed to seeing anything like this: We don't get infinitely small light sources in real life. Let's not introduce any new fudge factors here without first getting some buy-in from the PBR TSG, please. |
There are no specular highlights when roughness = 0.0
The likely cause for this is that the NDF function needs to limit roughness to a small value.
Since glTF does not use solid angle for lights, most engines use a simplified model where the NDF will create specular lobe using roughness.
However, values of 0.0 roughness will not produce any specular at all.
The text was updated successfully, but these errors were encountered: