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

[feature] Energy loss compensation #51

Closed
Derpius opened this issue Aug 23, 2022 · 2 comments
Closed

[feature] Energy loss compensation #51

Derpius opened this issue Aug 23, 2022 · 2 comments
Labels
binary module Issues relating to the binary module enhancement New feature or request
Milestone

Comments

@Derpius
Copy link
Owner

Derpius commented Aug 23, 2022

Is your feature request related to a problem? Please describe.
Single scattering GGX at high roughness significantly reduces energy, especially at grazing angles, causing a black halo and an overall darkened appearance

Describe the solution you'd like
Yocto-GL provides a ready made compensator for schlick's based conductors based on https://blog.selfshadow.com/publications/s2017-shading-course/imageworks/s2017_pbs_imageworks_slides_v2.pdf, however seems to provide no ready made solution for dielectrics (which makes sense given the drastically increased complexity).

Energy compensation is already used in the conductor, and somewhat integrated into the glossy dielectric BSDF in the form of the Frostbite normalised Disney diffuse, which is pretty much fine given the specular is far less noticeable.
However the specular transmission BSDF is severely affected by the single scattering energy loss, and should compensate for it.

Describe alternatives you've considered
Instead of using energy compensation on the transmission BSDF, we could stochastically sample multiple scattering, given the energy loss is so severe on rough dielectric transmissive surfaces, however it's slow and cumbersome to implement, along with introducing additional variance
https://eheitzresearch.wordpress.com/240-2/

@Derpius Derpius added enhancement New feature or request binary module Issues relating to the binary module labels Aug 23, 2022
@Derpius
Copy link
Owner Author

Derpius commented Aug 23, 2022

Example of energy loss in specular transmission on rough surfaces (α = 0.8)
image

@Derpius Derpius added this to the v0.12.0 milestone Sep 9, 2022
@Derpius
Copy link
Owner Author

Derpius commented Sep 15, 2022

Added to specular transmission, going to just use schlick's for dielectric (Disney already uses it in the diffuse brdf anyway)
render

@Derpius Derpius moved this to Backlog in VisTrace Dec 16, 2022
@Derpius Derpius added this to VisTrace Dec 16, 2022
@Derpius Derpius moved this from Backlog to Done in VisTrace Dec 16, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
binary module Issues relating to the binary module enhancement New feature or request
Projects
Status: Done
Development

No branches or pull requests

1 participant