diff --git a/images/base-ior.png b/images/base-ior.png new file mode 100644 index 0000000..2b4263f Binary files /dev/null and b/images/base-ior.png differ diff --git a/images/carbon_fiber_a0.0.png b/images/carbon_fiber_a0.0.png new file mode 100644 index 0000000..a17acfa Binary files /dev/null and b/images/carbon_fiber_a0.0.png differ diff --git a/images/carbon_fiber_a0.5.png b/images/carbon_fiber_a0.5.png new file mode 100644 index 0000000..0569d70 Binary files /dev/null and b/images/carbon_fiber_a0.5.png differ diff --git a/images/carbon_fiber_a0.9.png b/images/carbon_fiber_a0.9.png new file mode 100644 index 0000000..5730c61 Binary files /dev/null and b/images/carbon_fiber_a0.9.png differ diff --git a/images/coat_darkening_0.0.png b/images/coat_darkening_0.0.png new file mode 100644 index 0000000..6971408 Binary files /dev/null and b/images/coat_darkening_0.0.png differ diff --git a/images/coat_darkening_0.5.png b/images/coat_darkening_0.5.png new file mode 100644 index 0000000..32642eb Binary files /dev/null and b/images/coat_darkening_0.5.png differ diff --git a/images/coat_darkening_1.png b/images/coat_darkening_1.png new file mode 100644 index 0000000..88342d5 Binary files /dev/null and b/images/coat_darkening_1.png differ diff --git a/images/fuzz_dust_r0.25.png b/images/fuzz_dust_r0.25.png new file mode 100644 index 0000000..724212b Binary files /dev/null and b/images/fuzz_dust_r0.25.png differ diff --git a/images/fuzz_dust_r0.5.png b/images/fuzz_dust_r0.5.png new file mode 100644 index 0000000..eda8689 Binary files /dev/null and b/images/fuzz_dust_r0.5.png differ diff --git a/images/fuzz_dust_r0.75.png b/images/fuzz_dust_r0.75.png new file mode 100644 index 0000000..49d38d0 Binary files /dev/null and b/images/fuzz_dust_r0.75.png differ diff --git a/images/glossy-diffuse.png b/images/glossy-diffuse.png new file mode 100644 index 0000000..6ee60d3 Binary files /dev/null and b/images/glossy-diffuse.png differ diff --git a/images/model_schematic2.png b/images/model_schematic2.png new file mode 100644 index 0000000..349eef3 Binary files /dev/null and b/images/model_schematic2.png differ diff --git a/images/model_schematic2.svg b/images/model_schematic2.svg new file mode 100644 index 0000000..5d2a3db --- /dev/null +++ b/images/model_schematic2.svg @@ -0,0 +1,1106 @@ + + + + diff --git a/index.html b/index.html index f201c00..01dc2ec 100644 --- a/index.html +++ b/index.html @@ -44,7 +44,7 @@ The dielectric interface of this coat layer provides a secondary specular lobe. - [Fuzz](index.html#model/fuzz): An optional layer representing the reflection from micro-fibers (such as fine hair, peach fuzz, textile strands, and dust grains) on top of everything else. - ![Figure [diagram_model]: Schematic illustration of the idealized physical material that our shader models. Horizontal stacking of slabs represents statistical mixture and vertical stacking represents layering.](images/model_schematic.svg width="100%") + ![Figure [diagram_model]: Schematic illustration of the idealized physical material that our shader models. Horizontal stacking of slabs represents statistical mixture and vertical stacking represents layering.](images/model_schematic2.svg width="100%") We define this physical material structure in detail using a simple [formalism](index.html#formalism) involving slabs of material composed via layering and mixing operations. This formalism is general enough to describe arbitrarily complex materials, but we restrict its usage here to defining the particular material structure illustrated above. @@ -414,14 +414,12 @@ which reduces to the isotropic form when $\alpha_t = \alpha_b = \alpha$. Efficient techniques for sampling BSDFs employing the anisotropic GGX microfacet model are presented in [#Heitz2018], [#Dupuy2023]. -The NDF terms $\alpha_t$ and $\alpha_b$ are more conveniently parametrized as the total roughness $r$ and an anisotropy $a \in [0, 1]$. We suggest the following mapping from $r, a$ to $\alpha_t, \alpha_b$: +The NDF terms $\alpha_t$ and $\alpha_b$ are more conveniently parametrized as the total roughness $r$ and an anisotropy $a \in [0, 1]$. We specify the following mapping from $r, a$ to $\alpha_t, \alpha_b$: \begin{equation} \label{openpbr-anisotropy-formula} \alpha_t = r^2 \sqrt{\frac{2}{1 + (1 - a)^2}} \;\ , \quad \alpha_b = (1 - a) \, \alpha_t \ . \end{equation} -This formulation satisfies $\alpha_t^2 + \alpha_b^2 = 2\alpha^2$, to preserve the average roughness regardless of the anisotropy. A rationale is that if a renderer doesn't support anisotropy (or if the feature is turned off for performance considerations, such as level of detail), using only the roughness parameter should result in an isotropic specular highlight perceptually close to the original anisotropic one. Figure [ndf_anisotropy] shows the resulting shape of the highlight (technically, these are contour lines of the NDF $D_\mathrm{GGX}(m)$ in the 2D slope space). - -![Figure [ndf_anisotropy]: NDF shapes as a function of roughness $r$ and anisotropy $a$.](images/anisotropy.png width=60%) - +![Figure [ndf_anisotropy]: Highlight for varying roughness and anisotropy](images/anisotropy.png width="50%") +This formulation satisfies $\alpha_t^2 + \alpha_b^2 = 2\alpha^2$, to preserve the average roughness regardless of the anisotropy. A rationale is that if a renderer doesn't support anisotropy (or if the feature is turned off for performance considerations, such as level of detail), using only the roughness parameter should result in an isotropic specular highlight perceptually close to the original anisotropic one. Figure [ndf_anisotropy] shows the resulting shape of the highlight as a function of roughness $r$ and anisotropy $a$ (technically, these are contour lines of the NDF $D_\mathrm{GGX}(m)$ in the 2D slope space). To summarize the NDF parameterization, the dielectric-base BSDF $f_\mathrm{dielectric}$ and metal-base BRDF $f_\mathrm{conductor}$ share the same parameters, while the coat BSDF $f_\mathrm{coat}$ uses an independent set: @@ -432,6 +430,12 @@ The single-scattering microfacet BRDF of equation [microfacet_brdf_ss] does not conserve energy, as it neglects to account for multiple scattering between the microfacets. An implementation should ideally account for this, via one of a number of schemes, otherwise the reflection from rough metals and dielectrics is dimmer and less saturated than it should be. A fully accurate approach is described in [#Heitz2016a], where the multiple bounces are explicitly modeled via Monte Carlo. Simpler approximate models are presented in [#Kulla2017] (which functions by adding compensation lobes to account for the missing energy), and [#Turquin2019] (which scales the albedo of the lobe to maintain energy preservation at the expense of reciprocity). +   +