NVIDIAGameWorks / Falcor

Real-Time Rendering Framework
https://developer.nvidia.com/falcor
Other
2.71k stars 496 forks source link

About different NRD results from Falcor 6.0 preview1 and preview2 versions #378

Closed wanlong-li-business closed 1 year ago

wanlong-li-business commented 1 year ago

Hello,

Our team is trying to use Falcor for path tracing rendering and NRD for denoising.

But I found that the NRD results are different between Falcor 6.0-preview1 and Falcor 6.0-preview2.

Such as the image below. The left is in preview2 and the right is in preview1.

You can see some strange black shadows in left. And the right side has a more beautiful refraction effect.

image

I used the official rendering resource named "Utah Teapot (full)", and use the "PathTracerNRD.py" in Mogwai for rendering with default settings.

I used the master branch with tags "6.0-preview" and "6.0-preview2" without any changes. (I have confirmed that the results for the tag "6.0-preview2" and the new tag "6.0" are the same.)

Members of my team have checked the issue on different computers. But the problem also exists.

I wonder if this is a bug which happens from 6.0-preview2. Or it's just a matter of my behavior and setup.

Thank you so much.

skallweitNV commented 1 year ago

I had a quick look and can reproduce the behavior on our current internal version.

Looking at isDeltaReflectionAllowedAlongDeltaTransmissionPath in NRDHelpers.slang, it seems we use evalFresnelDielectric incorrectly. The function automatically inverts the relative index of refraction internally if cosThetaI is negative (incident on lower hemisphere). But we still compute the eta with respect to the hemisphere of the incident direction. So it seems to me the correct way of doing it is:

    const float eta = sd.IoR / insideIoR;
    bool totalInternalReflection = evalFresnelDielectric(eta, sd.frame.toLocal(sd.V).z) == 1.f;

At least with this the rendering is fixed here: Mogwai exe 0

wanlong-li-business commented 1 year ago

Thank you very much for your prompt confirmation and reply!

It was very helpful.

I wish you all the best in your company in the future.