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

Improvements to GGX importance sampling #1390

Merged
merged 1 commit into from
Jun 30, 2023
Merged

Improvements to GGX importance sampling #1390

merged 1 commit into from
Jun 30, 2023

Conversation

jstone-lucasfilm
Copy link
Member

@jstone-lucasfilm jstone-lucasfilm commented Jun 28, 2023

  • Implement the paper "Sampling Visible GGX Normals with Spherical Caps" by Jonathan Dupuy and Anis Benyoub, which improves the performance and spatial continuity of VNDF sampling.
  • Switch to VNDF sampling for FIS environment lights, improving the convergence of this lighting path for lower sample counts.
  • Additional optimizations for FIS environment lights, leveraging the improved term cancellation in VNDF sampling.

Test results:

  • GLSL render performance is improved for all tested materials, e.g. an increase from 205 fps to 214 fps for standard_surface_default.mtlx with 16 environment samples on an NVIDIA RTX A6000.
  • Convergence of FIS environment lights is improved for all tested materials, with the maximum visual error between 16 and 16384 environment samples reduced from 0.1098 to 0.0745 for a rough gold material.

- Implement the paper "Sampling Visible GGX Normals with Spherical Caps" by Jonathan Dupuy and Anis Benyoub, which improves the performance and spatial continuity of VNDF sampling.
- Switch to VNDF sampling for FIS environment lights, improving the convergence of this lighting path for lower sample counts.
- Additional optimizations for FIS environment lights, leveraging the improved term cancellation in VNDF sampling.

Test results:
- GLSL render performance is improved for all tested materials, e.g. an increase from 205 fps to 214 fps for standard_surface_default.mtlx with 16 environment samples on an NVIDIA RTX A6000.
- Convergence of FIS environment lights is improved for all tested materials, with the maximum visual error between 16 and 4096 environment samples reduced from 0.11 to 0.07 for a rough gold material.
@jstone-lucasfilm
Copy link
Member Author

Adding some render comparisons and statistics:

Original Filtered Importance Sampling (16 samples / 16384 samples / difference image)
Maximum visual difference: 0.1098
Average visual difference: 0.0150
Old_Compare_16_16384

New Filtered Importance Sampling (16 samples / 16384 samples / difference image)
Maximum visual difference: 0.0745
Average visual difference: 0.0127
New_Compare_16_16384

@jstone-lucasfilm
Copy link
Member Author

And here are the latest render comparisons between GLSL and OSL:
MaterialXRenderTests_06_28_2023.pdf

@jstone-lucasfilm jstone-lucasfilm merged commit f409d41 into AcademySoftwareFoundation:main Jun 30, 2023
@pixnblox
Copy link

pixnblox commented Jul 1, 2023

Looks good, thanks for getting this in! 👍

Michaelredaa pushed a commit to Michaelredaa/MaterialX that referenced this pull request Oct 21, 2023
- Implement the paper "Sampling Visible GGX Normals with Spherical Caps" by Jonathan Dupuy and Anis Benyoub, which improves the performance and spatial continuity of VNDF sampling.
- Switch to VNDF sampling for FIS environment lights, improving the convergence of this lighting path for lower sample counts.
- Additional optimizations for FIS environment lights, leveraging the improved term cancellation in VNDF sampling.

Test results:
- GLSL render performance is improved for all tested materials, e.g. an increase from 205 fps to 214 fps for standard_surface_default.mtlx with 16 environment samples on an NVIDIA RTX A6000.
- Convergence of FIS environment lights is improved for all tested materials, with the maximum visual error between 16 and 16384 environment samples reduced from 0.1098 to 0.0745 for a rough gold material.
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

Successfully merging this pull request may close these issues.

2 participants