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

CPU/GPU image differences in zero-day scenes #10

Open
mmp opened this issue Aug 18, 2020 · 1 comment
Open

CPU/GPU image differences in zero-day scenes #10

mmp opened this issue Aug 18, 2020 · 1 comment

Comments

@mmp
Copy link
Owner

mmp commented Aug 18, 2020

A few things are coming out differently, for unclear reasons. e.g. the pipes in frame52.pbrt.

CPU:
Screenshot from 2020-08-18 15-40-58

GPU:
Screenshot from 2020-08-18 15-41-08

@mmp
Copy link
Owner Author

mmp commented Jan 5, 2021

Turns out that this boils down to the GPU path not using ray differentials for texture filtering.

The parameterization on that model is funky, leading to a very wide filter. On the CPU, at each point it ends up using the average of the entire texture, while on the GPU, it point samples the finest MIP level. The finest MIP level is mostly black, with some white regions, so the top of the MIP pyramid is dark grey...

So, either WAI, or more reason to get some texture filtering implemented in the GPU path...

mmp added a commit that referenced this issue May 15, 2021
Rather than tracking them along with the ray (and incurring the
corresponding bandwidth and memory costs), we always use the
Camera::Approximate_dp_dxy() method, which may mis-estimate them in the
presence of specular reflection and refraction, though generally works
well.

Mostly addresses issue #10.
Dolkar pushed a commit to Dolkar/pbrt-v4-myod-integration that referenced this issue May 8, 2023
Rather than tracking them along with the ray (and incurring the
corresponding bandwidth and memory costs), we always use the
Camera::Approximate_dp_dxy() method, which may mis-estimate them in the
presence of specular reflection and refraction, though generally works
well.

Mostly addresses issue mmp#10.
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

1 participant