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

Too dark edges due to new IBL multi-scattering approach #18569

Open
silvainSayduck opened this issue Feb 7, 2020 · 8 comments
Open

Too dark edges due to new IBL multi-scattering approach #18569

silvainSayduck opened this issue Feb 7, 2020 · 8 comments

Comments

@silvainSayduck
Copy link

To continue the discussion of #16409, it still seems to me that three.js's new IBL multi-scattering code is yielding too strong dark edges on light fully glossy material.
Maybe this is now something that is acted as acceptable or even an improvement (as the author of the new approach's paper states), but I thought I'd report examples and then have an official decision or start an improvement process if need here.

Here is a demo using the current latest (r113)

Here is the same scene before the IBL multi-scattering update (r104)

And as a reference, here is the same scene (using the same environment map converted to DDS) in BabylonJS

@mrdoob
Copy link
Owner

mrdoob commented Feb 7, 2020

/ping @elalish

@YorickCobb
Copy link

YorickCobb commented Feb 10, 2020

I think this will be useful for comparison:
GlossySphereFromArnold

Here's a render from Arnold. It's not a photo, but I think it's arguably a good benchmark for what the 'real' image would be.

R113 is much closer than any of the other examples, though I agree that the fringes are slightly darker.

@WestLangley
Copy link
Collaborator

@silvainSayduck Your scene is washed out. Please use THREE.ACESFilmicToneMapping since you are using an HDR environment map, and then update your images.

@YorickCobb Can you then tone-map your rendering, too?

@elalish If you hack the renderer to render with indirect diffuse lighting only, you will see a dark rim. Can you think of a physical explanation?

@YorickCobb
Copy link

YorickCobb commented Feb 10, 2020

Certainly.

With ACES:
GlossySphereFromArnold_ACES

And if it's any help, here's the diffuse pass from Arnold: (ACES again)
GlossySphereFromArnold_ACESdiffuse

This diffuse does show a bit of a dark rim (so subtle I had to pull it into photoshop and make sure I wasn't imagining it), don't know if that matches what you're seeing or not. Some of that will be the fact that in the envmap, the light behind the camera is brighter than the other three, but I'm seeing it from different angles too.

@elalish
Copy link
Contributor

elalish commented Feb 10, 2020

@WestLangley I'm really not sure, but frankly the multiscattering approach in three is pretty hard for me to follow and it definitely gives different results than Filament. Seems likely related to this. The only physical thing I can think of for giving a dark rim would be the geometric shadowing term, but that doesn't seem like it should apply to diffuse light.

@mrdoob
Copy link
Owner

mrdoob commented Feb 10, 2020

@WestLangley I'm really not sure, but frankly the multiscattering approach in three is pretty hard for me to follow

/ping @jsantell

@silvainSayduck
Copy link
Author

silvainSayduck commented Feb 11, 2020

Hi,

Thanks everyone for looking into this! @WestLangley, I've updated my links as you suggested (thanks for looking into my code), and it makes indeed a big difference (and already makes the dark ridges more realistic in my opinion).

Here they are again, with the new screenshots
r113

r104

I also added the tone mapping to BabylonJS, which now makes the whole scene very dark, I'm not sure if there's something I am not doing that would make this comparison more accurate/useful.

@WestLangley
Copy link
Collaborator

Related #18669

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

No branches or pull requests

6 participants