**Studying Microfacets BSDFs**
using a virtual goniophotometer and micro-surface generation
*This project is archived and its currently being refactored, a new version will arrive soon*
Abstract
=============================================
Microfacet distributions are considered nowadays as a reference for physically plausible BSDF representations.
Many authors have focused on their physical and mathematical correctness, while introducing means to enlarge the range of possible appearances.
This page is dedicated to Normal Distribution Functions (NDFs), and the influence of their shape on the rendered material aspect.
We provide a complete framework for studying the impact of NDFs on the observed Bidirectional Scattering Distribution Functions (BSDFs).
In order to explore very general NDFs, manually controlled by the user, and including anisotropic materials, we propose to use a piecewise continuous representation.
It is derived with its associated Smith shadowing-masking function and importance sampling formulations for ensuring efficient global illumination computations.
A new procedure is also proposed in papers for generating an explicit geometric micro-surface, used to evaluate the validity of analytic models and multiple scattering effects.
The results are produced with a computer-generated process using path tracing available in this website.
![Example of microfacet-based BSDFs, with very different appearances created from four configurations of Normal Distribution Functions (illustrated in insets). Microfacet properties are: Lambertian floor, perfect reflector elephant, gold conductor sphere, glass dielectric vase, and copper conductor cup. For each configuration: First row provides a rendering with multiple scattering estimated from our surface generation process; Second row provides a rendering without multiple scattering and a *CIE* $\Delta E_{00}$ color-difference image illustrating appearance changes between single and multiple scattering images](img/teaser.png)
Publications
=============================================
**Microfacet BSDFs Generated from NDFs and Explicit Microgeometry**
*M. Ribardiere, B. Bringier, L. Simonot, D. Meneveaux*
In ACM Transactions on Graphics - Volume 38, Issue 5, June 2019
[Publisher link](https://dl.acm.org/citation.cfm?id=3338697 target="_blank")
**Design of rough microgeometries for numerical simulation of material appearance**
*B. Bringier, M. Ribardière, D. Meneveaux, L. Simonot*
Applied Optics - Volume 59, Issue 16, 2020
[Publisher link](https://www.osapublishing.org/ao/abstract.cfm?uri=ao-59-16-4856 target="_blank")
Downloads
=============================================
| Applied Optics Preprint | TOG Preprint | Additional results | Supplemental material
(Piecewise linear NDF) | Supplemental material
(SGTD NDF) |
| :-----: | :-----: | :------:| :------:| :------:|
| [](https://virtualgonio.pages.xlim.fr/papers/AOpaper.pdf)
5.4 MB pdf | [](https://virtualgonio.pages.xlim.fr/papers/TOGpaper.pdf)
4.7 MB pdf | [](https://virtualgonio.pages.xlim.fr/papers/TOG_additional_results.pdf)
11 MB pdf | [](https://virtualgonio.pages.xlim.fr/papers/TOG_supplemental_01_piecewise_linear_ndf.pdf)
580 KB pdf | [](https://virtualgonio.pages.xlim.fr/papers/TOG_supplemental_02_skewed_generalized_t_distribution.pdf)
517 KB pdf |
Code
=============================================
The code is available in our [gitlab](https://gitlab.xlim.fr/virtualgonio/sources_tog_2019) and you can read the **user manual** [here](manual.md.html).
We also provided Mitsuba plugins (in resources/MitsubaPlugin/) containing :
- How to use it (manual in archive)
- How to render the measured bsdfs
- The Piecewise linear normal distribution function
**News** :
*This project is archived and its currently being refactored, a new version will arrive soon*
- 17/05/2022 :
* **Migrating** website and source code to newer forge (fusionforge->gitlab)
* **Fixed** small mistake due to missing radius correction during Sensor creation.
- 08/03/2021 :
* **Added** Dielectrics surface material support.
* **Added** and Tekari bsdf file converter.
* **Added** simple gonio threading option in `complete_workflow.py` (requires enough memory).
* **Fixed** bad embree scene initialization.
- 15/01/2021 : Initial release
Contributors
=============================================
- [Arthur Cavalier](https://acavalier.github.io/)[^univP] , Research Engineer
- [Mickaël Ribardière](https://mribar03.bitbucket.io)[^univP] , Associate Professor
- [Benjamin Bringier](http://www.sic.sp2mi.univ-poitiers.fr/bringier)[^univP] , Associate Professor
- [Lionel Simonot](https://www.researchgate.net/profile/Lionel_Simonot)[^pprim] , Associate Professor
- [Daniel Meneveaux](http://d-meneveaux.blogspot.fr/)[^univP] , Professor
[^univP]: Université de Poitiers - XLIM research institute UMR CNRS 7252
[^pprim]: Université de Poitiers - PPRIME research institute CNRS UPR 3346
License
=============================================
This research code is licensed under MIT License.
This project adapts the Spectrum class of the [PBRT-V3](https://pbrt.org/index.html) renderer provided by Pharr, Jakob and Humphreys which is licensed under BSD-v2 License.
This project uses the following libraries :
- pre-build binaries of [embree](https://www.embree.org/index.html) which is licensed under Apache 2.0 License
- [tinyexr](https://github.com/syoyo/tinyexr) which is licensed under 3-Clause BSD
- [tinyobjloader](https://github.com/tinyobjloader/tinyobjloader) which is licensed under MIT License
- [stb](https://github.com/nothings/stb) image libraries (std_image.h and stb_image_write.h) which are licensed under Public Domain
Affiliations
=============================================
![](logos/logo_univ_poitiers.png width=120px) ![](logos/logo_xlim.png width=150px) ![](logos/logo_cnrs.png width=80px) ![](logos/logo_pprime.png width=100px)