Skip to content

Commit

Permalink
Add white furnace testing section (#192)
Browse files Browse the repository at this point in the history
Addresses #146.
  • Loading branch information
portsmouth authored May 14, 2024
1 parent b7f3e98 commit aa95c1b
Showing 1 changed file with 25 additions and 0 deletions.
25 changes: 25 additions & 0 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -1365,6 +1365,31 @@
A more accurate implementation should in principle account for these effects.


White furnace testing
-------------------------------------

The ground truth appearance should perfectly preserve energy in various configurations, in which case the material will satisfy a _white furnace test_ where the object should "disappear" (i.e. merge into the background) when illuminated by uniform background light, and rendered in the limit of a large number of bounces. We list here for convenience the configurations in which such a white furnace test should pass, all of which would be useful to check as part of a unit testing framework:

- A fully metallic base (**`base_metalness`**=1) with white **`base_color`** and white **`specular_color`**.
- A fully dielectric base (**`base_metalness`**=0), with white **`specular_color`**, including:
- diffuse base with white **`base_color`**.
- subsurface (**`subsurface_weight`**=1) with white **`subsurface_color`**.
- translucent base (**`transmission_weight`**=1) with either:
- white **`transmission_color`** if **`transmission_depth`**=0, or
- white **`transmission_scatter`** if **`transmission_depth`** > 0.
- Any mix of the above.
- All of the above, with a coat (**`coat_weight`** > 0) and white **`coat_color`**.
- All of the above, with fuzz (**`fuzz_weight`** > 0) and white **`fuzz_color`**.

In all of the above cases, the white furnace test should also continue to pass regardless of:

- the presence of thin-film (via **`thin_film_weight`**) as the film is non-absorptive.
- NDF roughness or anisotropy (**`specular_roughness`**, **`specular_roughness_anisotropy`**, and **`coat_roughness`**, **`coat_roughness_anisotropy`**).
- volume anisotropy (**`subsurface_scatter_anisotropy`**, **`transmission_scatter_anisotropy`**).
- the presence of bump/normal mapped base or coat (**`geometry_normal`**, **`geometry_coat_normal`**)
- opacity (**`geometry_opacity`**).


MaterialX reference implementation
----------------------------------

Expand Down

0 comments on commit aa95c1b

Please sign in to comment.